TCP/IP协议学习记录之二十六:IGMP--Internet组管理协议

     IGMP支持主机和路由器进行多播(多播是一种将报文发往多个接收者的通信方式。在许多应用中,它比广播更好,因为多
播降低了不参与通信的主机的负担。),它让一个物理网络上的所有系统知道主机当前所在的多播组。多播路由器需要这些信息以便知道多播数据报应该向哪些接口转发。

       正如 I C M P 一样, I G M P 也被当作 I P 层的一部分。I G M P报文通过I P数据报进行传输。不像我们已经见到的其他协议, I G M P有固定的报文长度,没有可选数据。

 IGMP报文

 

IGMP协议 

     加入一个多播组

         多播的基础就是一个进程的概念(使用的术语进程是指操作系统执行的一个程序),该进程在一个主机的给定接口上加入了一个多播组。在一个给定接口上的多播组中的成员是动态的,它随时因进程的加入或离开而变化;
         一个主机通过组地址和接口来识别一个多播组。主机必须保留一个表,此表中包含所有至少含有一个进程的多播组以及多播组中的进程数量。

   IGMP报告和查询

    多播路由器使用 I G M P报文来记录与该路由器相连网络中组成员的变化情况。使用规则如
下:
1) 当第一个进程加入一个组时,主机就发送一个 I G M P报告。如果一个主机的多个进程加入同一组,只发送一个 I G M P报告。这个报告被发送到进程加入组所在的同一接口上。
2) 进程离开一个组时,主机不发送 I G M P报告,即便是组中的最后一个进程离开。主机知道在确定的组中已不再有组成员后,在随后收到的 I G M P查询中就不再发送报告报文。
3) 多播路由器定时发送 I G M P查询来了解是否还有任何主机包含有属于多播组的进程。多播路由器必须向每个接口发送一个 I G M P查询。因为路由器希望主机对它加入的每个多播组均发回一个报告,因此 I G M P查询报文中的组地址被设置为 0。
4) 主机通过发送 I G M P报告来响应一个 I G M P查询,对每个至少还包含一个进程的组均要发回I G M P报告。
        使用这些查询和报告报文,多播路由器对每个接口保持一个表,表中记录接口上至少还包含一个主机的多播组。

    实现细节:

      如果一个主机在等待发送报告的过程中,却收到了发自其他主机的相同报告,则该主机的响应就可以不必发送了。因为多播路由器并不关心有多少主机属于该组,而只关心该组是否还至少拥有一个主机。的确,一个多播路由器甚至不关心哪个主机属于一个多播组。它仅仅想知道在给定的接口上的多播组中是否还至少有一个主机。

   TTL:

      一个初始 T T L为0的多播数据报将被限制在同一主机。在默认情况下,待传多播数据报的 T T L被设置为 1,这将使多播数据报仅局限在同一子网内传送。更大的 T T L值能被多播路由器转发。对发往一个多播地址的数据报从不会产生 I C M P差错。当T T L值为0时,多播路由器也不产生I C M P“超时”差错。

 所有主机组:

         路由器的 I G M P查询被送到目的 I P地址2 2 4 . 0 . 0 . 1。该地址被称为所有主机组地址。它涉及在一个物理网络中的所有具备多播能力的主机和路由器。当接口初始化后,所有具备多播能力接口上的主机均自动加入这个多播组。这个组的成员无需发送I G M P报告。

猜你喜欢

转载自blog.csdn.net/cxy19931018/article/details/81388140
今日推荐