IP标头中有一个“不分片”标志。 应用程序可以设置此标志吗? 何时设置此标志,为什么?何时在IP标头中设置“不分段”标志?
0
A
回答
2
如果'DF'位设置在数据包上,那么通常会将数据包大于MTU的数据包碎片化(并可能按顺序传送),而不会丢弃数据包。期望路由器发送“ICMP Fragmentation Needed”数据包,允许发送主机在通往目标主机的路径上计算较低的MTU。然后,发送端将减少其对连接的路径MTU(最大传输单元)的估计并以较小的段重新发送。该过程被称为PMTU-D(“路径MTU发现”)。
碎片会导致CPU处理的额外开销,以在另一端重新组装数据包(并处理丢失的碎片)。
通常,'DF'位是IP堆栈的可配置参数。我知道ping实用程序和设置DF的选项。
避免碎片通常很有用,因为除了分段和重新组装的CPU利用率之外,它可能会影响吞吐量(如果丢失的碎片需要重新传输)。出于这个原因,通常需要知道最大传输单元。因此,'路径MTU发现'用于找到这个大小,通过简单地设置DF位(例如对于ping)
0
我能想到的唯一情况是您可能想要设置此标志的位置是:
- 如果你正在构建一个客户端 - 服务器应用程序,其中 你不希望另一方必须处理分段 数据包,而宁愿丢失数据包。
- 或者如果您在 网络中有一组非常具体的限制,可能是由带宽问题或特定的防火墙行为引起的。
除了这些特定的情况下,你可能永远不会碰它。
从RFC 791:
因特网的数据报的碎片是在必要时它 起源于一个本地网,其允许大的分组大小和必须 横移一个本地网,其限制数据包发送到更小的尺寸,以到达 其目的地。
互联网数据报可以标记为“不分段”。任何互联网 如此标记的数据报不得在任何 的情况下被互联网分段。如果标记的互联网数据报不能分段,不能将 传送到其目的地,而是将其丢弃为 。
应用程序是否可以设置此标志? 是的,如果您编写足够低的代码,您正在处理IP标头。问题的这一部分对于给出更具体的答案有点宽泛,您应该先弄清楚是否想在设置它之前先设置它。
相关问题
- 1. 设置IP标头的标志字段
- 2. 如何在套接字上设置不分段(DF)标志?
- 3. 如何设置不分段(IP_DF)标志使用C
- 4. 如何在c中设置REG_KEY_DONT_VIRTUALIZE标志#
- 5. 如何在WinGhci中设置标志,Haskell
- 6. 如何禁用cookie时设置标志
- 7. 如何设置FOUND_ROWS标志?
- 8. C++设置“标志”
- 9. 设置MQ标志读取分段消息API出口
- 10. 更改IP标头中的标识字段
- 11. 如何在php中通过ajax设置标志或指标?
- 12. 如何在Exchange 2007 w/SP2中设置“标记完成”标志
- 13. 如何设置 - 默认在git中设置标志?
- 14. 在Eclipse中设置优化标志CDT
- 15. 无法在ActionBar中设置标志
- 16. 若要在javascript中设置标志值
- 17. 在makefile中设置标志的条件
- 18. 在Armsim中设置进位标志#
- 19. 未在python-gflags中设置标志
- 20. 在java中设置请求标头
- 21. 在Django测试中设置HTTP_REFERER标头
- 22. 在ajax中设置请求标头
- 23. 在Play 2.0(scala)中设置HTTP标头?
- 24. 在gnuplot中为箭头设置标题
- 25. 在Tomcat中设置CORS标头
- 26. 在硒中设置请求标头
- 27. 在URL中设置请求标头?
- 28. 在Laravel中设置授权标头
- 29. 在JavaScript中设置请求标头
- 30. 在Angular 2中设置授权标头