udp包大小选折及原因(mtu)
生活随笔
收集整理的這篇文章主要介紹了
udp包大小选折及原因(mtu)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
| 以太網(Ethernet)數據幀的長度必須在46-1500字節之間,這是由以太網的物理特性決定的. 這個1500字節被稱為鏈路層的MTU(最大傳輸單元). 但這并不是指鏈路層的長度被限制在1500字節,其實這這個MTU指的是鏈路層的數據區. 并不包括鏈路層的首部和尾部的18個字節. 所以,事實上,這個1500字節就是網絡層IP數據報的長度限制. 因為IP數據報的首部為20字節,所以IP數據報的數據區長度最大為1480字節. 而這個1480字節就是用來放TCP傳來的TCP報文段或UDP傳來的UDP數據報的. 又因為UDP數據報的首部8字節,所以UDP數據報的數據區最大長度為1472字節. 這個1472字節就是我們可以使用的字節數。 當我們發送的UDP數據大于1472的時候會怎樣呢? 這也就是說IP數據報大于1500字節,大于MTU.這個時候發送方IP層就需要分片(fragmentation). 把數據報分成若干片,使每一片都小于MTU.而接收方IP層則需要進行數據報的重組. 這樣就會多做許多事情,而更嚴重的是,由于UDP的特性,當某一片數據傳送中丟失時,接收方便 無法重組數據報.將導致丟棄整個UDP數據報。 因此,在普通的局域網環境下,我建議將UDP的數據控制在1472字節以下為好. 進行Internet編程時則不同,因為Internet上的路由器可能會將MTU設為不同的值. 如果我們假定MTU為1500來發送數據的,而途經的某個網絡的MTU值小于1500字節,那么系統將會使用一系列的機 制來調整MTU值,使數據報能夠順利到達目的地,這樣就會做許多不必要的操作. 鑒于Internet上的標準MTU值為576字節,所以我建議在進行Internet的UDP編程時. 最好將UDP的數據長度控件在548字節(576-8-20)以內. |
轉載于:https://www.cnblogs.com/hjslovewcl/archive/2011/07/18/2314316.html
總結
以上是生活随笔為你收集整理的udp包大小选折及原因(mtu)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AMD Zen4 X670E主板设计图曝
- 下一篇: 一加10T发布:能流畅用6年的骁龙8+旗