IP 数据包在源主机上分段的频率如何?

发布于 2024-07-15 03:47:02 字数 464 浏览 6 评论 0原文

我知道如果IP有效负载> MTU 路由器通常会对 IP 数据包进行分段。 最后,使用 IP-ID、IP 分段偏移和分段标志字段在目的地组装所有分段数据包。 IP 负载的最大长度为 64K。 因此,L4 移交 64K 的有效负载是非常合理的。 如果 L2 协议是以太网(通常是这种情况),则 MTU 将约为 1600 字节。 因此,IP 数据包将在源主机本身处被分段。 然而,对 Linux 中 IP 实现的快速搜索告诉我,在最近的内核中,L4 协议是分段友好的,即它们尝试通过移交大小接近 MTU 的缓冲区来保存 IP 的分段工作。

考虑到这两个事实,我想知道 IP 数据包在源主机本身被分段的频率是多少。 它有时/很少/从不发生吗? 有谁知道Linux内核中的碎片规则是否有例外(即是否存在L4协议对碎片不友好的情况)? 在 Windows 等其他常见操作系统中如何处理? 一般来说,IP 数据包分段的频率如何?

I know that if IP payload > MTU then routers usually fragment the IP packet. Finally all the fragmented packets are assembled at the destination using the fields IP-ID, IP fragment offsets and fragmentation flags. Max length of IP payload is 64K. Thus its very plausible for L4 to hand over payload which is 64K. If the L2 protocol is Ethernet, which often is the case, then the MTU will be about 1600 bytes. Hence IP packet will be fragmented at the source host itself.
However, a quick search about IP implementation in Linux tells me that in recent kernels, L4 protocols are fragment friendly i.e. they try to save the fragmentation work for IP by handing over buffers of size which is close to MTU.

Considering these two facts, I am wondering about how frequently does the IP packet gets fragmented at the source host itself.
Does it occur sometimes/rarely/never?
Does anyone know if there are exceptions to the rule of fragmentation in linux kernel (i.e. are there situations where L4 protocols are not fragment friendly)?
How is this handled in other common OSes like windows?
In general how frequently IP packets are fragmented?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

月朦胧 2024-07-22 03:47:02

虽然从技术上讲不应该有任何协议不能正确处理 IP 碎片,但有一些协议(例如 NFS)由于缺乏碎片而受益匪浅

您看到碎片数据包的频率很大程度上取决于您的网络环境。 VPN 的数据包封装、设计或实施不当的 UDP 协议以及将端到端 MTU 降低到端点值以下的 L1/L2 协议都可能导致 IP 碎片。

大多数现代主机都实现 PTMUD,这将 自动检测 MTU 大小,除非非涉及合规设备或过度偏执的防火墙。 在以太网无处不在的今天,我不认为它们会在整个互联网上特别常见。

Though technically there shouldn't be any protocols that don't handle IP fragmentation correctly, there's a couple (such as NFS) that benefit greatly from lack of fragmentation.

How often you see fragmented packets is largely a function of your network environment. Packet encapsulation for VPNs, poorly-designed or implemented UDP protocols, and L1/L2 protocols that drop the end-to-end MTU below endpoint values can all cause IP fragmentation.

Most modern hosts implement PTMUD, which will automatically detect the MTU size unless non-compliant devices or over-paranoid firewalls are involved. In these days of Ethernet Everywhere, I don't expect them to be particularly common on the internet at large.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文