在哪里使用的IP标志的片段在哪里?[英] Where is the Don't Fragment Bit of the IP Flags used?

本文是小编为大家收集整理的关于在哪里使用的IP标志的片段在哪里?的处理方法,想解了在哪里使用的IP标志的片段在哪里?的问题怎么解决?在哪里使用的IP标志的片段在哪里?问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我很想知道使用IP标志的"不碎片"位的位置.由于较高层看不见碎片,而且它们也不在乎.

我也在寻找一个例子.

预先感谢.

推荐答案

碎片并不总是所有上层看不见的.一些早期(甚至可能是当前的)微控制器TCP/IP堆栈没有实现诸如碎片处理之类的完整功能.在这种情况下,使用国旗将确保数据包以其原始形式到达,而不是另一端无法处理的许多片段.

此外,使用UDP时,所有片段并不是所有片段到达目的地的必要到达目的地.我不记得TCP/IP堆栈持有多长时间,以便在等待缺失片段的未组装的IP数据包,但是使用DF标志意味着在此期间没有绑架不必要的资源.

>

最后,您可以将其用于测试网络基础架构的行为,例如,当您获得大于最大传输单元的数据包时会发生什么(DF将阻止该数据包被碎片以"通过"孔"挤压").

其他推荐答案

@pax的答案(也许是他提到的测试的一部分),dp标志也用于路径MTU发现.这是当您尝试找出可以发送的最大数据包而不会分散的时候,对于给定的链接.

避免分裂通常很有用,即使从理论上讲高级方案与其机制隔离,它们仍然可以"感觉到"后果.如果网络套接字的单个应用程序级write()最终会因其太大而被碎片,并且其中一个片段在网络中丢失,则整个IP数据包将丢失.这当然会影响吞吐量.

因此,通常需要知道最大传输单元,即可以发送到目的地而不会被碎片的最大数据包.路径MTU发现用于查找此大小,只需设置DF位并连续发送较大的数据包,直到网络报告为止( icmp )失败.

其他推荐答案

请注意,在Linux上没有设置DF的标准方法,此代码有效:

result = setsockopt(mysocket, IPPROTO_IP, 
                IP_MTU_DISCOVER, IP_PMTUDISC_DO, sizeof(int));

,但它不在freebsd 6

此外,Path MTU Discovery在真实的Internet上非常不可靠.太多破损的防火墙和中间箱过滤了ICMP"太大"消息(这是在采访中测试候选网络管理员的好方法:请他/她停止Ping,他/她可能会完全阻止ICMP.) RFC 2923:"路径MTU发现的TCP问题"

这就是IETF现在提出一种测试MTU的新方法的原因,而无需依靠路径MTU发现:RFC 4821:"分组化层路径MTU Discovery"

本文地址:https://www.itbaoku.cn/post/359261.html