碎片化如何在现实世界中发挥作用

网络工程 以太网 ipv4 协议理论
2021-07-25 21:59:19

我有一个示例场景,假设我正在通过互联网发送 1500 字节的帧。它通过具有 576 字节 MTU 功能的路由器。

我的问题是,路由器会进行分片并发送到接收主机,还是会通过 PMTU 将 ICMP(code3 type4)发送到发送设备进行分片。这件事是如何在世界上实时发生的。有时在现实世界的场景中,路由器会阻止管理员的 ICMP 消息,他们是如何克服这个问题的。

3个回答

路由器将使用 ICMP 响应并丢弃该数据包,如果它不能进一步对数据包进行分段,或者在设置了 Don't Fragment 位的情况下禁止这样做。

是的,正如您所指出的,PMTUD 经常在现实世界中崩溃,因为人们确实过滤了 ICMP 消息 - 无论是在传输过程中,还是在他们的互联网边缘,都在用脚射击自己。

这里有一篇关于 PMTUD 和碎片的精彩文章供您参考:http : //www.cisco.com/c/en/us/support/docs/ip/generic-routing-encapsulation-gre/25885-pmtud-ipfrag.html

除非设置了 Don't Fragment 位,否则路由器允许对 IPv4 分段进行分段。IPv6 总是表现得好像 DF 位已设置(该位不再存在),因此路由器永远不会分段。

有时在现实世界的场景中,路由器会阻止管理员的 ICMP 消息,他们是如何克服这个问题的。

简单的。解雇那个愚蠢的***管理员——我认识很多人。如果他们不了解 ICMP 存在的原因,他们就没有地方防火墙,更不用说管理防火墙了。

(但除此之外,是的,ICMP 消息最终可能会像任何其他数据包一样丢失。发生这种情况时,其他机制必须启动以生成任何错误——通常是长时间延迟后的连接超时。)