首页 > 代码库 > 如何判断一个IP地址是有效的组播地址
如何判断一个IP地址是有效的组播地址
组播报文的目的地址使用D类IP地址,范围是从224.0.0.0到239.255.255.255。D类地址不能出现在IP报文的源IP地址字段。单播数据传输过程中,一个数据包传输的路径是从源地址路由到目的地址,利用“逐跳”(hop-by-hop)的原理在IP网络中传输。然而在ip组播环中,数据包的目的地址不是一个,而是一组,形成组地址。所有的信息接收者都加入到一个组内,并且一旦加入之后,流向组地址的数据立即开始向接收者传输,组中的所有成员都能接收到数据包。组播组中的成员是动态的,主机可以在任何时刻加入和离开组播组。
以上来自 <http://baike.baidu.com/view/1871353.htm?fr=aladdin>
组播组可以是永久的也可以是临时的。组播组地址中,有一部分由官方分配的,称为永久组播组。永久组播组保持不变的是它的ip地址,组中的成员构成可以发生变化。永久组播组中成员的数量都可以是任意的,甚至可以为零。那些没有保留下来供永久组播组使用的ip组播地址,可以被临时组播组利用。
224.0.0.0~224.0.0.255为预留的组播地址(永久组地址),地址224.0.0.0保留不做分配,其它地址供路由协议使用;
224.0.1.0~224.0.1.255是公用组播地址,可以用于Internet;
224.0.2.0~238.255.255.255为用户可用的组播地址(临时组地址),全网范围内有效;
239.0.0.0~239.255.255.255为本地管理组播地址,仅在特定的本地范围内有效。
判断一个IP地址是否为组播地址,只需要判断该地址是否在224.0.0.255(不含)到239.255.255.255之间,
IP地址本身是一个32位的数值,即0x00000000-0xffffffff之间,所以只需判断IP对应的Long值是否大于0xE00000FF且小于等于0xEFFFFFFF即可
(该方法并非原创,而是摘自与live555源代码)