如果 ICMP 数据包丢失,是否可以生成另一个 ICMP?

网络工程 路由器 icmp
2022-03-04 22:32:56

假设源和目的R1、R2之间分别有两台路由器。假设源向R1发送数据包,然后R1向R2发送数据包,但R2的缓冲区已满并丢弃该数据包并生成ICMP消息给源,但同时R1缓冲区也已满,R1丢弃该ICMP数据包。

我的问题是那会发生什么?

Case1: R1 向R2 反馈ICMP 数据包丢失,然后R2 为源创建另一个ICMP?

或者

案例 2: R1 创建另一个 ICMP 数据包用于发送源?

2个回答

不会为 ICMP 错误生成 ICMP 错误。(这就是数据包风暴的秘诀)

如果路由器由于没有缓冲区空间而丢弃帧,则不会产生错误,因为它从来没有从中生成 ICMP 消息的数据包。(ICMP 错误包含导致错误的数据包的标头。)

通常,ICMP 消息不被跟踪如果它们在交付过程中丢失,它们将保持丢失状态。

此外,缓冲区溢出的 ICMP 通知不存在(或非常不规则)。ICMP 消息在设计上是精简的——您必须防止出现系统消息的乒乓。