首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >IP标志的Don't Fragment位在哪里?

IP标志的Don't Fragment位在哪里?
EN

Stack Overflow用户
提问于 2008-12-09 04:45:08
回答 2查看 11.9K关注 0票数 9

我很想知道IP标志的“不分段”DF位是在哪里使用的。因为碎片对高层是不可见的,他们也不关心。

我也在寻找一个例子。

在此之前非常感谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2008-12-09 05:41:39

碎片并不总是对所有上层都不可见。一些早期(甚至可能是现在的)微控制器TCP/IP堆栈没有实现完整的功能,比如碎片处理。在这种情况下使用标志将确保数据包以其原始形式到达,而不是另一端无法处理的大量碎片。

此外,当使用UDP时,没有必要让所有的碎片都到达目的地,因此,防止碎片意味着消息要么到达,要么没有到达-不可能只有一小部分UDP数据报到达目的地。我记不起TCP/IP堆栈在未组装的IP数据包上等待丢失片段的时间,但DF标志的使用意味着在这段时间内不会占用不必要的资源。

最后,您可以使用它来测试网络基础设施的行为,例如,当您获得一个大于最大传输单位的数据包时会发生什么情况(DF将防止该数据包被分成碎片以“挤过”漏洞)。

票数 15
EN

Stack Overflow用户

发布于 2008-12-10 09:42:03

请注意,在C中没有标准的方法来设置DF。在Linux上,以下代码可以工作:

代码语言:javascript
运行
复制
result = setsockopt(mysocket, IPPROTO_IP, 
                IP_MTU_DISCOVER, IP_PMTUDISC_DO, sizeof(int));

但在FreeBSD 6上不是这样的

而且,路径MTU发现在真实的Internet上是非常不可靠的。太多损坏的防火墙和中间盒会过滤掉ICMP“数据包太大”的消息(这是在面试期间测试候选人网络管理员的一个好方法:要求他/她停止ping,他/她可能会完全阻止ICMP。)请参阅RFC 2923:“路径MTU发现的TCP问题”

这就是为什么IETF现在建议一种新的方法来测试MTU,而不依赖于路径MTU发现: RFC 4821:"Packetization Layer Path MTU Discovery“

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/351806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档