-2

自从我在 PDP/11 上进行套接字编程以来,IP 分段将处理 IP 数据报(例如 UDP 数据报)大于该段允许的 MTU 的情况。

因此,我可以发送一个大小为 30 kB 的 UDP 数据报,它可能会在以太网上分段为 20 个 1.5 kB 的分段,然后稍后将每个分段分段为三个小于 576 字节的分段,用于某些特定的无线链路,只要所有碎片到达另一端,UDP数据报到达另一端。

然后,我遇到了 node.js 中 UDP 套接字的文档,该文档声称路由器将丢弃不适合下一段 MTU 的数据报。我认为这只是在标头中设置了“不分段”位的数据报的情况,但鉴于 node.js 应该是在网络圈子中具有一定可信度的高质量产品,我想知道我是否遗漏了一些东西,许多路由器现在会将所有数据报视为“不分段?”

这是链接: http ://nodejs.org/api/dgram.html#dgram_socket_send_buf_offset_length_port_address_callback

这是报价:

generally sending a datagram greater than the (receiver) MTU 
won't work (the packet gets silently dropped, without informing 
the source that the data did not reach its intended recipient).

那么,我错过了什么,还是 node.js 文档需要更新?

4

2 回答 2

4

您对 IPv4 的理解是正确的。在这里,他们可能在谈论接收器 MTU,即。链路接收端的 MTU。可以为每个端口配置 MTU。链接是两个端口之间的连接。例如。在以太网中,您可能会像这样配置错误的 LAN

端口-A(mtu 1000) <----------> 端口-B(mtu 800)

在这种情况下,发送方(端口 A)会认为链路的 MTU 必须与在其上配置的 MTU 匹配,因此将发送大小为 1000 字节的数据包。当端口 B 接收到数据包时,它很可能会丢弃它,因为它大于该端口上配置的 MTU。

于 2014-01-11T00:34:11.777 回答
0

所以,事实证明,答案有点微妙。分片仍然是 IPv4 的一部分,并且在很大程度上得到了 Internet 的广泛支持。IPv6 消除了碎片,而是让应用程序进行 MTU 发现。因此,让我质疑我的假设的文档说明与其说是“错误的”,不如说是“生活在以某种方式大多数人已经切换到 IPv6 的未来”。

于 2014-01-15T20:49:00.330 回答