IP碎片化:它仍然是常态,对吧?

时间:2014-01-11 00:17:11

标签: node.js networking udp ip-fragmentation

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

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

然后,我在node.js中找到了UDP套接字的文档,声称路由器将丢弃不符合下一个段的MTU的数据报。我认为这只是数据报的情况,标题中设置了“do not fragment”位,但鉴于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文档是否需要更新?

2 个答案:

答案 0 :(得分:4)

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

PORT-A(mtu 1000)&lt; ----------&gt; PORT-B(mtu 800)

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

答案 1 :(得分:0)

所以,事实证明答案更加微妙。 碎片仍然是IPv4的一部分,并且在很大程度上得到了互联网的支持。 IPv6删除了碎片,而是推迟到应用程序进行MTU发现。 因此,让我质疑我的假设的文档说明并没有那么“错误”,因为它“生活在未来的某种程度上,大多数人已经转向IPv6。”