免费注册 查看新帖 |

Chinaunix

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

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的都属于多播地址;

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

论坛徽章:
7
丑牛
日期:2013-10-18 14:43:21技术图书徽章
日期:2013-11-03 09:58:03辰龙
日期:2014-01-15 22:57:50午马
日期:2014-09-15 07:04:39丑牛
日期:2014-10-16 14:25:222015年亚洲杯之伊朗
日期:2015-03-16 10:24:352015亚冠之城南
日期:2015-05-31 09:52:32
2 [报告]
发表于 2011-06-24 20:34 |只看该作者
检查一个位

论坛徽章:
0
3 [报告]
发表于 2011-06-24 20:38 |只看该作者
回复 2# smalloc


    是啊,这个函数就只检查了这个位。有点不太明白。

论坛徽章:
7
丑牛
日期:2013-10-18 14:43:21技术图书徽章
日期:2013-11-03 09:58:03辰龙
日期:2014-01-15 22:57:50午马
日期:2014-09-15 07:04:39丑牛
日期:2014-10-16 14:25:222015年亚洲杯之伊朗
日期:2015-03-16 10:24:352015亚冠之城南
日期:2015-05-31 09:52:32
4 [报告]
发表于 2011-06-24 20:42 |只看该作者
回复 3# zhuyoong


    看资料,协议就是这么规定的。

论坛徽章:
1
天蝎座
日期:2013-12-06 18:23:58
5 [报告]
发表于 2011-06-24 21:41 |只看该作者
回复 1# zhuyoong


    貌似224开头的是已经在公网上开发使用了的多播地址。 请确认
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP