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. 當推標誌在TCP段設置
- 5. 在ASIHTTPRequest中設置標頭
- 6. 如何在WinGhci中設置標誌,Haskell
- 7. 如何在Eclipse中設置jvm標誌
- 8. 如何在c中設置REG_KEY_DONT_VIRTUALIZE標誌#
- 9. 如何在ngCookies中設置httpOnly標誌?
- 10. 如何禁用cookie時設置標誌
- 11. 如何設置零標誌
- 12. 如何設置FOUND_ROWS標誌?
- 13. 如何確定何時設置了零標誌,符號標誌,溢出標誌和進位標誌?
- 14. C++設置「標誌」
- 15. HttpAsyncPost設置標頭
- 16. 設置MQ標誌讀取分段消息API出口
- 17. 更改IP標頭中的標識字段
- 18. 是否可以通過設置IP標頭來啓用IP分段來發送大型UDP數據包?
- 19. React Native Android - 如何在ToolBarAndroid中設置標誌圖標?
- 20. 如何在Exchange 2007 w/SP2中設置「標記完成」標誌
- 21. 如何在php中通過ajax設置標誌或指標?
- 22. 如何設置 - 默認在git中設置標誌?
- 23. 無法在ActionBar中設置標誌
- 24. 在makefile中設置標誌的條件
- 25. 在設置中推送通知標誌
- 26. 在Armsim中設置進位標誌#
- 27. 若要在javascript中設置標誌值
- 28. 在libavformat中設置「re」標誌
- 29. 在JS/jQuery中設置布爾標誌
- 30. 在Eclipse中設置優化標誌CDT