Node.js IP碎片化:It';这仍然是常态,对吗?

Node.js IP碎片化:It';这仍然是常态,对吗?,node.js,networking,udp,ip-fragmentation,Node.js,Networking,Udp,Ip Fragmentation,自从我在PDP/11上进行套接字编程以来,IP碎片将处理IP数据报(如UDP数据报)大于段的MTU所允许的情况 因此,我可以发送一个大小为30KB的UDP数据报,它可能会在以太网上分为20个1.5kB的段,然后将每个段分为三个段。您对IPv4的理解是正确的。在这里,他们可能在谈论接收机MTU,即链路接收端的MTU。可以为每个端口配置MTU。链路是两个端口之间的连接。例如,在以太网中,您可能会有这样一个配置错误的LAN 端口A(mtu 1000)端口B(mtu 800) 在这种情况下,发送方(端口

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


因此,我可以发送一个大小为30KB的UDP数据报,它可能会在以太网上分为20个1.5kB的段,然后将每个段分为三个段。您对IPv4的理解是正确的。在这里,他们可能在谈论接收机MTU,即链路接收端的MTU。可以为每个端口配置MTU。链路是两个端口之间的连接。例如,在以太网中,您可能会有这样一个配置错误的LAN

端口A(mtu 1000)端口B(mtu 800)


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

因此,结果表明答案有点细微差别。 碎片化仍然是IPv4的一部分,并且在很大程度上受到互联网的支持。 IPv6消除了碎片,而是让应用程序执行MTU发现。
因此,让我质疑我的假设的文档说明与其说是“错误的”,还不如说是“生活在未来,不知何故,大多数人已经切换到IPv6。”

我知道路由器不必接受超过某一点的片段,沿途任何说“nu-uh”的节点都可以停止交付。医生的报价可能只是一个措辞更强硬的版本…?一定有实际的测量结果,对吗?就像我们可以测量大陆之间的延迟、各种主干网的质量、IPv6的普及率等一样……UDP的一部分要点是它不基于连接、确认等。这使它在某些用例中变得更好,但也会导致类似的情况。您可以使用来计算在不进行碎片化的情况下可以发送的最大数据报。或者,只需坚持IPv4的最小576字节。(小于该值的数据报只有在下一跳需要时才会被分割,路由器应该能够重新组装它们。)还要记住,任何缺失的片段都会导致整个数据报被抛出,并且接收方永远不会收到您尝试的通知。(无论你是否得到通知,似乎有点不确定。)无论如何,你应该一次发送一点,如果只是为了尽量减少出错时需要重新传输的内容量。我熟悉IP碎片的优缺点,谢谢。我的问题是一个实际的,观察到的,在互联网上的实践,以及在过去几年里是否有什么变化。理想情况下,一个指向某个地方的链接,该链接总结了某个人信任的数据:-)是的,这是一个配置错误的网络。我不太担心这些——我担心的是互联网骨干运营商和主要ISP的标准做法。
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).