码迷,mamicode.com
首页 > 其他好文 > 详细

组播地址对应多个端口

时间:2014-12-09 15:58:39      阅读:660      评论:0      收藏:0      [点我收藏+]

标签:组播

场景描述:一个组播地址可以包含多路组播数据,这些数据通过不同的端口区分。还是举一个简单的实例。

    主机A向组播地址:224.1.1.1发送端口为1025的UDP数据

    主机B向组播地址:224.1.1.1发送端口为1026的UDP数据

    主机C加入组播地址:224.1.1.1,准备接收端口1025的UDP数据,请问各位小伙伴,主机C的网卡能够接收到那一路的UDP数据?

    这是一个很有趣的话题。实际上,两路数据主机C都能够接收到。从理论出发:组播程序是一个进程,这个进程运行在后台,当我们调用add_membership的时候,发送组播报告报文,路由接收到这个报文将会添加到转发的队列中,路由器接收到主机A的数据包,在IP层进行转发,还没有到UDP层,所以根本就没有端口的说法,所以当路由器接收到一个数据包,检测到其组播地址,然后将它转发,而不管是否主机C需要。所以说:公有同一个组播地址确实会收到所有当前组播地址的数据,但是当数据发送过来,主机C接收到IP报文,会检测当前的UDP端口是否打开,如果不打开,将该报文丢弃。所以每月有调用dropmembership函数关闭当前的组播组是非常危险的!!等待实验验证不直接退出或有什么后果,数据会一直发送吗?

组播地址对应多个端口

标签:组播

原文地址:http://5228690.blog.51cto.com/5218690/1587813

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!