免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4829 | 回复: 1
打印 上一主题 下一主题

linux socket绑定地址中的多播地址疑问,求高人指点 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-06-24 19:53 |显示全部楼层 |倒序浏览
本帖最后由 zhuyoong 于 2011-06-24 19:55 编辑

在socket绑定过程中,会检查绑定的地址类型,其中有一个是检查是否是多播地址,代码如下:

  1. if (ipv4_is_multicast(addr))
  2.         return RTN_MULTICAST;


  3. static inline bool ipv4_is_multicast(__be32 addr)
  4. {
  5.         return (addr & htonl(0xf0000000)) == htonl(0xe0000000);
  6. }
复制代码
该函数的作用就是检查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的都属于多播地址;

这里我就不太明白了,求高人指点;

论坛徽章:
0
2 [报告]
发表于 2011-06-24 20:38 |显示全部楼层
回复 2# smalloc


    是啊,这个函数就只检查了这个位。有点不太明白。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP