其他分享
首页 > 其他分享> > 计算机网络——ICMP、IGMP的相关原理

计算机网络——ICMP、IGMP的相关原理

作者:互联网

摘要

ICMP 全称是 Internet Control Message Protocol,也就是互联网控制报文协议。网络包在复杂的网络传输环境里,常常会遇到各种问题。当遇到问题的时候,总不能死个不明不白,没头没脑的作风不是计算机网络的风格。所以需要传出消息,报告遇到了什么问题,这样才可以调整传输策略,以此来控制整个局面。

ICMP 功能都有啥?

ICMP 主要的功能包括:确认 IP 包是否成功送达目标地址、报告发送过程中 IP 包被废弃的原因和改善网络设置等。

在 IP 通信中如果某个 IP 包因为某种原因未能达到目标地址,那么这个具体的原因将由 ICMP 负责
通知。

如上图例子,主机 A 向主机 B 发送了数据包,由于某种原因,途中的路由器 2 未能发现主机
B 的存在,这时,路由器 2 就会向主机 A 发送一个 ICMP 目标不可达数据包,说明发往主机
B 的包未能成功。ICMP 的这种通知消息会使用 IP 进行发送 。因此,从路由器 2 返回的 ICMP 包会按照往常的路由控制先经过路由器 1 再转发给主机 A 。收到该 ICMP 包的主机 A 则分解 ICMP 的首部和数据域以后得知具体发生问题的原因。

ICMP 大致可以分为两大类:

IGMP

ICMP 跟 IGMP 是一点关系都没有的,就好像周杰与周杰伦的区别,大家不要混淆了。在前面我们知道了组播地址,也就是 D 类地址,既然是组播,那就说明是只有一组的主机能收到数据包,不在一组的主机不能收到数组包,怎么管理是否是在一组呢?那么,就需要 IGMP 协议了。

IGMP 是因特网组管理协议,工作在主机(组播成员)和最后一跳路由之间,如上图中的蓝色部分。

IGMPv2 查询与响应原理

1路由器会周期性发送目的地址为 224.0.0.1 (表示同一网段内所有主机和路由器) IGMP 常规查
询报文。

2. 主机1 和 主机 3 收到这个查询,随后会启动「报告延迟计时器」,计时器的时间是随机的,通常是 0~10 秒,计时器超时后主机就会发送 IGMP 成员关系报告报文(源 IP 地址为自己主机的 IP
地址,目的 IP 地址为组播地址)。如果在定时器超时之前,收到同一个组内的其他主机发送的成
员关系报告报文,则自己不再发送,这样可以减少网络中多余的 IGMP 报文数量。

3. 路由器收到主机的成员关系报文后,就会在 IGMP 路由表中加入该组播组,后续网络中一旦该组播地址的数据到达路由器,它会把数据包转发出去。

IGMPv2 离开组播组工作机制

离开组播组的情况一,网段中仍有该组播组:

1. 主机 1 要离开组 224.1.1.1,发送 IGMPv2 离组报文,报文的目的地址是 224.0.0.2(表示发向网段内的所有路由器)

2. 路由器 收到该报文后,以 1 秒为间隔连续发送 IGMP 特定组查询报文(共计发送 2 个),以便确认该网络是否还有 224.1.1.1 组的其他成员。

3. 主机 3 仍然是组 224.1.1.1 的成员,因此它立即响应这个特定组查询。路由器知道该网络中仍然存在该组播组的成员,于是继续向该网络转发 224.1.1.1 的组播数据包。

离开组播组的情况二,网段中没有该组播组:

1. 主机 1 要离开组播组 224.1.1.1,发送 IGMP 离组报文。

2. 路由器收到该报文后,以 1 秒为间隔连续发送 IGMP 特定组查询报文(共计发送 2 个)。此时在该网段内,组 224.1.1.1 已经没有其他成员了,因此没有主机响应这个查询。

3. 一定时间后,路由器认为该网段中已经没有 224.1.1.1 组播组成员了,将不会再向这个网段转发该组播地址的数据包。

博文参考

标签:组播,主机,报文,计算机网络,ICMP,IGMP,路由器
来源: https://blog.csdn.net/weixin_41605937/article/details/121443710