- 论坛徽章:
- 0
|
本帖最后由 zhuyoong 于 2011-06-24 19:55 编辑
在socket绑定过程中,会检查绑定的地址类型,其中有一个是检查是否是多播地址,代码如下:
- if (ipv4_is_multicast(addr))
- return RTN_MULTICAST;
- static inline bool ipv4_is_multicast(__be32 addr)
- {
- return (addr & htonl(0xf0000000)) == htonl(0xe0000000);
- }
复制代码 该函数的作用就是检查addr是不是224.x.x.x;
但是我看到网上关于多播地址的概念:
IP多播通信必须依赖于IP多播地址,在IPv4中它是一个D类IP地址,范围从224.0.0.0到239.255.255.255,并被划分为局部链接多播地址、预留多播地址和管理权限多播地址三类。其中,局部链接多播地址范围在224.0.0.0~224.0.0.255,这是为路由协议和其它用途保留的地址,路由器并不转发属于此范围的IP包;预留多播地址为224.0.1.0~238.255.255.255,可用于全球范围(如Internet)或网络协议;管理权限多播地址为239.0.0.0~239.255.255.255,可供组织内部使用,类似于私有IP地址,不能用于Internet,可限制多播范围。
也就是说多播地址不仅限于224.x.x.x这类D类地址,224.0.0.0到239.255.255.255的都属于多播地址;
这里我就不太明白了,求高人指点; |
|