数据通信——网络层(IP多播)

引言

    地址分类中有个D类地址,它是用来进行多播的。多播一般被称之为组播。组播么,听上去就知道是按组分发。的确,就像一个QQ群一样,我发送了一条信息,这个群里的人都能得知这条消息,而每个人又可以复制这个消息传递到另一个群里。这就是多播!

什么是IP多播 ?

    IP多播(也称多址广播或组播)技术,是一种允许一台或多台主机(多播源)发送单一数据包到多台主机(一次的,同时的)的TCP/IP网络技术。多播是D类地址,也就是(224.0.0.0~239. 255. 255. 255)不过你要注意,这个地址是作为目的地址的,不能作为源地址。D类地址的可供分配的有28位,其中前5位不能构成以太网硬件地址。(以太网多播地址块:00-00-5E-00-00-00到00-00-5E-FF-FF-FF

    D类地址就好比电视频道,比如我们要看《新闻联播》,全中国哪个人无论谁拨到与《新闻联播》相应的那个频道,都能看到《新闻联播》而不是其它内容。

    IP多播也叫组播,是一种一对多的传输方式。一对多,更像是视频会议中我对所有会议中的人员讲话一样。因此就会出现,我向众人传话(一对多);众人向我传话(多对一);每个人自由讨论(多对多)。

    当多播数据即将通过路由器转发时,这意味着已经路由器中一定有用户或者某一段网络成为了多播组的一部分,否则多播转发不会进行。就像在视频会议中讲话,你必须参与进来才能听得到,否则你不在会议中,无权听到讲话内容。这也是一种防范机制。不然无范围限制的多播可太糟糕了!

    因此,多播接收组可以动态地更改。一个主机可以随时决定加入或离开接收组,而且一个主机可能同时是多个多播组的成员。此外,任何主机都可以成为多播源,只要向某个特定的多播组发送数据分组即可。

    上述什么意思呢?比如我在百度贴吧上建立了一个贴吧。每个人有权利加入这个贴吧或者离开贴吧,这个用户,可以是多个贴吧的成员,并非只能是我这个贴吧的成员。此外,每个加入贴吧的成员都可以将贴吧内的内容复制后发送到其它的贴吧或者网站平台,此时,在别人看来他就成为了这个内容的原作者。

 上图堪称经典了,不过不解释的话,还是体会不到

广播与组播的区别

    其实我在学完组播后,一直在思考,它与广播有什么区别?后来也是慢慢了解了,但是在阐述一些问题时,仍然容易把广播和组播搞混。

  • 广播占用了大量带宽向所在范围内的每个节点都发送一份信息且无论该信息是否为对方节点所需的;但是组播只会向加入组播组的节点发送信息,带宽利用率高。
  • 广播不需要分组。相反,多播需要组管理,以建立至少有一台主机需要接受组播中的数据包。(尽管一台设备的话,多播有点小题大做)
  • 广播会产生大量的流量,导致CPU负载增大从而影响网络使用。然而,组播产生的流量较少。
  • 多播传输数据比广播快。
  • 好比把一个信息复制成N份给每个人与把信息直接发在群里的区别一样。广播其实是一种一对一模式,它是将信息向每个节点发送一份。而组播是将信息发到一个组里,组播才是真正意义上的一对多。

IGMP(网际组管理协议)

    什么是IGMP

    既然说了,我有意加入到多播组之中,那么我该靠谁完成呢?这就是IGMP的作用了。IGMP协议辅助我们加入多播组中。它也是继ARP,ICMP之后,有一个重要的网络层协议。

    IGMP:当一个主机加入多播组时,它利用IGMP协议通知子网上的所有路由器,以便在路由器上建立相应的多播路由,表明在该子网上存在属于那个多播组的成员。以后当路由器接收到发送给那个多播组的数据时,就会将数据转发给子网上对应的组成员。此外,多播路由器可以使用IGMP在网络上不时地多播质询,确定是否有某个主机仍然希望接收来自多播传输者的广播。

但是注意几点:

  1. IGMP并非是在整个因特网中对所有多播组成员进行管理的协议;
  2. IGMP也不知道IP多播包含的成员数,也不知道它们分布在那些网络上!
  3. IGMP本质是让连接在本地局域网上的多播路由器知道本地局域网上是否有主机参加或者退出了多播组,其余的不会管。

    简单解释一下:IGMP是有负责范围的,并不负责整个因特网的多播组成员管理。就像每个群都有自己的管理员;IGMP是个拉人入群的管理员,他不关心你在哪?你是谁?只知道你想要进群,而且他的任务就是让你进来后,通知群里的群主和其它人,群里来了个新人;退群也会告知群里的人,他不在群里了,仅此而已。

IGMP工作流程

    多播路由器在探寻成员关系时,需要对所有的组发送一个请求信息的询问报文,基本上每125秒发一次。当同一个网络上连接有好几个多播路由器时,他们能够迅速有效地选择其中一个来探询成员关系。

    在IGMP的询问报文里面有一个数值N,它指明了最长响应时间(默认为10s)当受到询问时,主机在0到N之间随机选择发送响应所需经过的时延。对应于最小时延的响应最先发送。每一个组内都会监听,一旦组内有一个进行了响应,自己就可以不再发送响应了。

   IGMP版本

 随着IP协议的完善,IGMP也开发了3个版本

    多播路由选择协议

    与此同时,连接在网络中的多播路由器还必须和因特网上的其它多播路由器一起工作,目的是为了可以让多播数据以最小的代价传输给多播组成员。

    多播转发必须动态的适应多播组成员变化。(不同于其它网络协议对网络拓扑变化)。多播路由器发送报文时,不能仅仅根据多播路由中的目的地址转发,还要考虑到这个报文从哪里来的?要到哪里去?多播路由的路径生成要以要以源主机为根节点形成多播转发树,这样可以防止多播数据重复发送并节省传输效率。同一个多播组,对不同源点会有不同的转发树。

    不过有一点很有意思,多播报文可以由不是多播组成员的主机发出也可以经过不存在多播组成员接入的网络。
    什么意思呢?群里发出来一条信息,这个信息不一定是群里的人发出的。比如老板通知下属去群里发布个消息,但是老板没在群里,是群里的负责人发布的信息,但实际上这条信息是以老板的指示发出的;有时,一些公司的小道消息也会到处传递,这些消息不一定必须在群里发出,也可以由不相关的人得知。

多播数据报运作方式

泛洪和剪除

     这种方法适用于较小的,组成员接入的局域网也是相邻的多播组。一开始,路由器转发多播报文使用泛洪的方法(就是广播)。为了避免重复接收,采用了一种策略反向路径广播RPB

策略反向路径广播RPB

  1. 路由器收到多播数据报时,先检查是否是从源点经过最短路径传来的。
  2.  如果是,就向所有非进入方向的其他方向转发刚才收到的多播数据报,不然就丢弃不转发。
  3. 如果存在几条同样长度的最短路径,那么只能选择一条最短路径,选择的准则就是看这几条最短路径中的相邻路由器谁的IP地址最小。

image

 

隧道技术

    这个技术常用,这个方法对于多播组大小在较大范围内变化时都适合。这种方法是对每一个多播组G指定一个核心路由器,给出它的IP单播地址。核心路由器按照前面讲过的方法船建初对应于多播组G的转发树。

  

 

后续

    我有点后悔了,应该把这章分成几个部分来写,IP多播在后面的学习中还会涉及,而且会越来越深入。至于多播路由选择协议,它其实并没有成为公认的路由协议。不过多播路由选择协议还有很多没有涉及到。后面在探究网络层时,其难度会瞬间增大。

IP地址和多播就先告一段落,接下来是NET了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咕噜跳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值