ICMP,即互联网控制报文协议(Internet Control Message Protocol)
是一种网络层协议,用于在IP主机、路由器之间传递控制消息。ICMP允许主机或路由器报告错误消息(如无法到达目的地、TTL超时等)以及其他信息,这些信息对于诊断网络通信问题非常重要。
ICMP的主要功能包括:
错误报告:当IP数据包无法到达目的地时,ICMP可以发送错误报告给发送方。例如,目的地不可达、TTL超时、数据包过大无法通过某些网络等。
回显请求和回显应答:ICMP允许发送回显请求消息,接收方收到后返回回显应答消息。这通常用于网络连通性测试,如“ping”命令。
时间超过消息:当IP数据包的生存时间(TTL)字段减至0时,ICMP会发送时间超过消息,通知发送方数据包已被丢弃。
参数问题消息:当IP数据包的头部存在问题时,如头部字段不正确,ICMP会发送参数问题消息。
重定向消息:当路由器发现另一条更好的路由到达特定目的地时,它可以发送ICMP重定向消息给主机,建议使用新的路由。
ICMP报文类型和代码:
类型0:回显回复
类型3:目的不可达
代码1:网络不可达
代码2:主机不可达
代码3:协议不可达
代码4:端口不可达
代码5:需要分片但设置了不分片位(DF)
等等
类型5:重定向消息
类型8:回显请求
ICMP报文是IP数据包的一部分,但它本身并不保证可靠传输。ICMP报文通常用于诊断和控制消息,而不是用于承载应用程序数据。由于ICMP报文可能会被网络设备过滤或丢弃,因此它不适用于需要可靠传输的场合。
IGMP,即互联网组管理协议(Internet Group Management Protocol)
是一种用于管理多播组成员的网络层协议。它允许主机向任何相邻的多播路由器报告其希望接收的多播组。IGMP使得网络能够高效地将数据包发送到多个接收者,而不是向整个网络广播,从而节省带宽并减少不必要的流量。
IGMP主要用于以下两个方面:
组成员管理:IGMP允许主机加入或离开多播组。当主机希望加入一个多播组时,它会向路由器发送IGMP报文来表明其兴趣。同样,当主机不再希望接收特定多播组的流量时,它会发送IGMP报文来离开该组。
路由器查询和主机报告:多播路由器定期发送IGMP查询报文,询问网络上的主机是否仍然希望接收特定的多播流量。主机收到查询后,会回复IGMP报告报文,确认它们仍然对接收特定多播组的流量感兴趣。
IGMP有两种主要的版本:
IGMPv1:最初的IGMP版本,主要用于IPv4网络。它支持基本的组成员管理,但不支持快速离开多播组的功能。
IGMPv2:在IGMPv1的基础上增加了一些改进,包括支持快速离开多播组的功能。IGMPv2还引入了“组特定查询”(Group-Specific Query),允许路由器查询特定多播组的状态,而不是查询所有组。
IGMPv3:进一步增加了功能,如支持源特定多播(Source-Specific Multicast, SSM),允许更细粒度的多播组成员管理。
IGMP报文类型:
成员关系查询(Membership Query):路由器发送此类型报文以查询网络上的主机是否仍然希望接收多播流量。
成员关系报告(Membership Report):主机收到查询后,发送此类型报文以表明其对特定多播组的兴趣。
离开组(Leave Group):在IGMPv2和IGMPv3中,主机可以使用此报文来快速离开多播组。
IGMP对于多播网络的高效运作至关重要,它确保了只有真正对多播流量感兴趣的主机才会接收到这些流量,从而优化了网络资源的使用。