概述
最近看了多播的教学视频,发现很多小伙伴对于其中的原理莫名奇妙,比如:
a.mac地址不是出厂就设置好了吗,那多播物理MAC地址是什么鬼。
b.多播ip地址都一样,并且还不同于广播地址,广播地址至少我还能找到目的网段号,然后给所有网段中的机器发就完事了,但多播是给网段中的指定的几个机器发,怎么做到的呢。
我查阅了资料,谈谈自己的理解:
1.首先要实现多播,肯定是离不开匹配的设备的,主要涉及下面俩设备(设备才是关键):
多播路由器:与普通路由器不同的地方就是能通过“多播路由选择协议”进行逆向洪泛算法处理过程,使得多播路由器也会产生一个路由表(包括下一跳是哪个路由器)。
最终端连接局域网的多播路由器通过IGMP(International group management protocal)来知晓自己所在的网段有哪些主机要接收多播消息。
另一个设备就是网卡:网卡其实有两种模式,一种就是单一MAC地址,出厂就有的,另外一种其实它是可以默认接收多播MAC地址的,起到一个过滤作用。
2.然后说下过程:
主机发送报文给连接自己的多播路由器,多播路由器就更新一个类似NAT表(NAT不合适,NAT用于私有IP转公共IP,应该是类似于ARP协议的表,将MAC地址转IP,以及RARP协议的表)的玩意,哪些主机接收这些信息,这是IGMP的一些内容。然后多播路由器逆向发送数据报给多播源,多播源以及路途上的主机就知道路由该咋选了(并不一定是最优路由)。
现在路由有了,MAC地址也有了,多播源就发送多播数据报,然后到了最后一个路由器,就根据NAT表发给主机,主机一看这个MAC地址虽然不是我的,但是多播地址,所以就接收了,这还没完。
因为有标准规定,多播MAC地址后23位是从多播IP地址映射来的,多播IP地址的第5~9位可以是不同的数字,也就是说多个多播IP地址最后会映射成一个多播MAC地址,比如你看斗鱼直播,跟你一个宿舍的同一局域网的小伙伴看虎牙直播,他们两家公司来的数据报多播IP地址不同,但是MAC地址却一样。你就有可能收到虎牙直播的数据报,咋办呢,MAC地址是属于帧头的,数据报走完MAC层(数据链路层)就拆掉帧头帧尾,网络层就能看到它的多播IP地址了,然后网络层就看这是不是我要的多播IP,不是就丢掉,这样就不会收错啦。
当然网络中不可能全都是多播路由器(虽然现在路由器越来越好),万一遇到普通路由器就走不通了怎么办,那就把带多播IP地址的多播数据报整个当作一个数据包,前面加上IP头部,就变成了普通IP数据报/分组了,然后就可以传输啦,这就像你要过一座山,过不了,就挖个隧道,然后隧道包裹着你,就能通过啦,所以叫隧道方式。
3.我理解也不深入,后续继续研究,有错误的会及时更正并深入。
最后
以上就是背后战斗机为你收集整理的多播数据报的寻址方式(怎么找到目的主机)的全部内容,希望文章能够帮你解决多播数据报的寻址方式(怎么找到目的主机)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复