杨绍方
摘 要 本文介绍了UDP Sockets的基本概念和IP多点传送的原理,详细讨论了Java中的相关类及使用方法,提供了一个IP多点传送的开发流程。
关键词 Java UDP Sockets
IP 多点传送 MulticastSocket 类IP多点传送(multicast delivery)是针对点到点的传送和广播传送两种方式而言的,它是指在一定的组内对其成员进行的广播,是一种有限的广播。组中的某个成员发出的信息,组中的其它所有成员都能收到。它是UDP Sockets的一个分支。
IP多点传送特别适合与高带宽的应用,例如在网络上发送视频和音频。随着网络带宽的不断提高和网络通讯质量的不断改善,IP多点传送还将广泛地被应用于网上聊天及网上会议,分布式数据存储,联机事务处理,交互式游戏等方面。另外,多点传送还可以被客户机用于在网络上寻找相应的服务器,客户机发送一个多点传送的请求,任何监听服务器都可以与客户机连接并开始一个事务。
UDP Socket基础
使用用户数据报协议(User Datagram Protocol,简称UDP)进行会话必须将信息装配成一定尺寸的小报文,当发送一条信息,接收方能否收到并返回信息永远是不确定的,如果无法收到返回信息,我们就无法确定我们发送的信息是否被接收——它可能在途中丢失,接收者返回的响应信息也可能丢失,另外,接收者也可能忽略我们的信息,因此,UDP被描述为不可靠的、无连接的和面向消息的。
创建UDP sockets非常象创建一个邮箱。邮箱是使用地址来识别的,但是,我们不需要为每个发送信息的人构造一个新的邮箱,可以在含有发送信息的明信片上写上目的地址,将其放在邮箱中并发送出去。接收者可能会长久的等待,直到含有信息的明信片到达它的邮箱,而明信片上标识了发送者的返回地址。
IP多点传送的原理
为了支持IP多点传送,某些范围的IP地址被单独留出专门用于这个目的,这些IP地址是D类地址,其地址的最高四比特的位模式为“1110”,即IP地址的范围在224.0.0.0和239.255.255.255之间。它们中的每一个IP地址都可以被引用作为一个多点传送组,任何以该IP地址编址的IP报文将被该组中的其它所有机器接收,也就是说,一个IP地址就相当于一个邮箱。另外,组中的成员是动态的并随时间而改变。
对于IP多点传送,网间网组管理协议(Internet Group Management Protocol,简称IGMP),用于管理多点传送组中的成员。支持多点传送的路由可以使用IGMP决定本地的机器是否赞成加入某个组,一个多点传送路由可以决定是否转发一个多点传送报文。
影响多点传送报文的一个重要参数是time-to-live(TTL)。TTL用于描述发送者希望传送的信息能通过多少不同的网络。当报文被路由器转发,报文中的TTL将减一,当TTL为零时,报文将不再向前发送。
在实际使用中,我们必须注意下面几点:
1.这些IP地址只能作为信宿地址使用,绝对不能出现在任何信源地址域中,也不能出现在源路径或记录路径选项中:
2.由于IP多点传送是一对多的传送,因此,不能利用差错与控制报文协议(Internet Control Message Protocol,简称ICMP)产生出错报文。
3.发送一个信息到一个组,发送主机可以不是组中的成员;
4.一些组被Internet Assigned Numbers Authority(IANA)分配,保留用于特殊的目的,详情参见:ftp://ftp.internic.net/rfc/rfc1700.txt。另外,避免使用一些保留组,从224.0.0.0到224.0.0.225仅限于本地子网使用。建议在224.0.1.27和224.0.1.225之间任意选取一个IP地址。
5.如果我们选取的组已经被使用,与其他机器的通讯将会混乱,一旦发生,可以退出应用,试试其他的地址。
6.当一个机器加入一个多点传送组,它将开始接收该IP多点传送地址的信息。如果多点传送报文分发到网络