IGMP协议(Internet Group Management Protocol):Internet组管理协议。它让一个物理网络上的所有系统知道主机当前艘在的多播组。多播路由器需要这些信息以便知道多播数据报应该向哪些接口转发。
IGMP报文V1版本:
版本字段:IGMP共有三个版本1、2和3。目前普遍使用的是版本2。
类型字段:为1说明是由多播路由器发出的查询报文。
为2说明是主机发出的报告报文。
校验和字段:
组地址字段:32位D类IP地址。
IGMP报文V2版本 :
类型字段:原版本和类型合并
最大响应时间:缺省为10秒,规定在发送回应报告之前的最大延迟时间,1/10秒为单位
校验和字段:
组地址字段:32位D类IP地址。
IGMP报文V2版本 :
RFC 3376
添加/删除源地址列表
添加了新API:IPMulticastListen
需要新协议栈 / 重写应用程序
224.0.0.22 IGMP V3路由器
没有IGMP回应抑制
IGMP协议
一般路由器发送IGMP查询,主机发送IGMP报告。
IGMP只适用于主机和路由器之间的一种组播数据转发,而路由器之间的主播数据转发则是路由协议来实现的而不是IGMP协议。
主机发送报告的时间具有一定的随机性(0~10秒的范围内随机选择),而路由器的查询则是周期性的。
当一个进程加入组时,主机就发送一个IGMP报告。
进程离开一个组时,主机不发送IGMP报告(版本1,版本2发送)。
当检测到一个网段里面有其它的成员已经发送了报告了,其它主机就没有必要再发送报告了。
只要有一台主机在当前网段里,路由器就必须要发送主播信息到该网段。
必须是组成员,才可以接收组播数据。
组播地址代表所有组成员。
发送者不必是组成员。
多播地址只能作为目标地址。
IGMP的版本
IGMP v1
RFC 1112
Windows 95
IGMP v2
RFC 2236
Windows和多数Unix
IGMP v3
RFC 3376
Windows和部分Unix
加入组
这是版本1和版本2都支持的消息。
◆ 发送加入消息
维护组
◆ 路由器查询发往224.0.0.1
◆ 一个成员发送回应
◆ 其它成员抑制回应
查询者选取(版本2中)
◆ 最初所有路由器发送查询
◆ 最低IP地址路由器被选为查询者
◆ 其它路由器成为非查询者
离开组(版本1)
◆ 主机安静离开组(离开组之前不发送任何信息)
◆ 路由器发送3此查询无回应(3分钟左右),则超时。
离开组(版本2)
◆ 主机发送离开报告
◆ 路由器发送查询无回应,则超时
◆ 约3秒钟
生存时间字段
IGMP报告和查询的生存时间(TTL)均设置为1,这将使多播数据报仅限于同一子网内传送。更大的TTL值能被多播路由器转发。224.0.0.0-224.0.0.255的特殊地址使打算用于多播范围不超过1跳的应用,不管TTL是多少,多播路由器均不转发目的地址为这些地址中的任何一个地址的数据报。
所有主机组
224.0.0.1地址称为所有主机组地址,它涉及在一个物理网络中所有具备多播能力的主机和路由器。当接口初始化后,所有具备多播能力接口上的主机均自动加入这个多播组。这个组的成员无需发送IGMP报告。