IGMP:他让一个物理网络上的所有系统知道主机当前所在的多播组,多播路由器需要这些信息以便知道多播数据报应该向哪些接口转发。
IGMP 报文
8字节的 IGMP 报文格式:
4位 IGMP 版本、4位 IGMP 类型、8位未用、16位检验和、32位组地址。
IGMP 类型为1说明是由多播路由器发出的查询报文,为2说明是主机发出的报告报文。组地址为 D 类 IP 地址,在查询报文中组地址设置为0,在报告报文中组地址为要参加的组地址。
IGMP 协议
一)加入一个多播组
多播的基础就是一个进程的概念(使用的术语进程是指操作系统执行的一个程序),该进程在一个主机的给定接口上加入了一个多播组。多播组的成员是动态的,他随时因进程加入和离开多播组而变化。
一个主机通过组地址和接口来识别一个多播组,主机必须保留一个表,其中包含所有至少含有一个进程的多播组以及多播组中的进程数量。
二)IGMP 报告和查询
多播路由器使用 IGMP 报文来记录与该路由器相连网络中组成员的变化情况,使用规则如下:
1)当第一个进程加入一个组时,主机就发送一个 IGMP 报告,如果一个主机的多个进程加入同一个组,只发送一个 IGMP 报告,这个报告被发送到进程加入组所在的同一接口上。
2)进程离开一个组时,主机不发送 IGMP 报告,即便是最后一个进程离开。
3)多播路由器定时发送 IGMP 查询来了解是否还有任何主机包含属于多播组的进程。
4)主机通过发送 IGMP 报告来响应一个 IGMP 查询,对每个至少还包含一个进程的组均要发回 IGMP 报告。
三)生存时间字段
生存时间(TTL)设置为0时,多播数据报将被限制在同一主机,设置为1时,多播数据报将被限制在同一子网内传送,更大的 TTL 值能被多播路由器转发。
通过增加 TTL 值得方法,一个应用程序可实现对一个特定服务器的扩展环搜素,第一个多播数据报以 TTL 等于1发送,如果没有响应,就尝试将 TTL 设置为2。在这种方式下,该应用能找到以跳数来度量的最近的服务器。