实际上 ICMP 消息使 layer3 可靠吗?

网络工程 路由 第 3 层 icmp icmpv6
2022-03-02 08:52:23

我们知道 ICMP 是无连接的,因为它不需要主机在建立连接之前握手。

但是,当数据包在路由之间被丢弃时,相应的路由器会通知源数据包由于更大的 PTUMD(在 ipv6 中)而被丢弃,然后源将对数据包进行分段以进行传递。此外,如果路由路由器中发生任何事情,则通知源进行重传。

我的问题是,如果 ICMP 与源同步重新传输的每个问题,那么 layer3 的可靠性是可能的吗?但是我们说layer3不可靠?为什么?

1个回答

但是,当数据包在路由之间被丢弃时,相应的路由器会通知源数据包由于更大的 PTUMD(在 ipv6 中)而被丢弃,然后源将对数据包进行分段以进行传递。

数据包因各种原因而被丢弃。如果由于拥塞或损坏而发生这种情况,则没有源通知。

仅当路径 MTU 对于数据包而言太小时,ICMPv6 才会向源返回数据包太大通知,因此源可以减小数据包大小(可能通过分段,但 TCP 等协议应调整其分段大小/减小 MSS)。

我的问题是,如果 ICMP 与源同步重新传输的每个问题,那么 layer3 的可靠性是可能的吗?

不可以。ICMP需要不断报告丢弃的数据包,而它没有报告。(当标头在传输过程中损坏时,这实际上是不可能的。)

但是我们说layer3不可靠?

是的。ICMP 报告丢失交付的原因只有几个。没有考虑所有其他原因,因此 IP 不可靠。其他 L3 协议可能会有所不同。

一般的方法是保持 L3 的轻量级——只实现绝对需要的功能。当应用程序不需要可靠性时,实现可靠性是没有意义的。因此,可靠性在需要时在协议栈的更高层实现——在传输层/L4 或应用层/L7。