《TCP/IP协议详解 卷1》--- IGMP:Internet组管理协议

用于支持主机和路由器进行多播的Internet组管理协议(IGMP),它让一个物理网络上的所有系统知道主机当前所在的多播组。多播路由器需要这些信息以便知道多播数据报应该向哪些接口转发。
正如ICMP一样, IGMP也被当作IP层的一部分。IGMP报文通过IP数据报进行传输。
IGMP报文通过IP首部中协议字段值为2来指明。
这里写图片描述

IGMP报文
这里写图片描述
IGMP类型为1说明是由多播路由器发出的查询报文,为2说明是主机发出的报告报文。
组地址为D类IP地址。在查询报文中组地址设置为0,在报告报文中组地址为要参加的组地址。

IGMP 协议
1、加入一个多播组
多播的基础就是一个进程的概念,该进程在一个主机的给定接口上加入一个多播组。一个进程可以在多个接口上加入同一多播组。这暗示着一个主机通过组地址和接口来识别一个多播组。主机必须保留一个表,此表中包含所有至少含有一个进程的多播组以及多播组中的进程数量。

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

3、实现细节
首先,当一个主机首次发送IGMP报告,并不保证该报告被可靠接收(因为使用的是I P交付服务),下一个报告将在间隔一段时间后发送。这个时间间隔由主机在0~10秒的范围内随机选择。
其次,当一个主机收到一个从路由器发出的查询后,并不立即响应,而是经过一定的时间间隔后才发出一些响应。多播路
由器并不关心有多少主机属于该组,而只关心该组是否还至少拥有一个主机。

4、生存时间字段
IGMP报告和查询的生存时间 ( TTL )均设置为1,这将使多播数据报仅局限在同一子网内传送。更大的TTL值能被
多播路由器转发。
从224.0.0.0到224.0.0.255的特殊地址空间是打算用于多播范围不超过 1跳的应用。不管TTL值是多少,多播路由器均不转发目的地址为这些地址中的任何一个地址的数据报。

5、所有主机组
224.0.0.1被称为所有主机组地址。它涉及在一个物理网络中的所有具备多播能力的主机和路由器。当接口初始化后,所有具备多播能力接口上的主机均自动加入这个多播组。这个组的成员无需发送IGMP报告。

猜你喜欢

转载自blog.csdn.net/u012319493/article/details/80950576