<menu id="w8yyk"><menu id="w8yyk"></menu></menu>
  • <dd id="w8yyk"><nav id="w8yyk"></nav></dd>
    <menu id="w8yyk"></menu>
    <menu id="w8yyk"><code id="w8yyk"></code></menu>
    <menu id="w8yyk"></menu>
    <xmp id="w8yyk">
    <xmp id="w8yyk"><nav id="w8yyk"></nav>
  • 網站首頁 > 物聯資訊 > 技術分享

    UDP包的大小與MTU

    2016-09-28 00:00:00 廣州睿豐德信息科技有限公司 閱讀
    睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接

    在進行UDP編程的時候,我們最容易想到的問題就是,一次發送多少bytes好?
    當然,這個沒有唯一答案,相對于不同的系統,不同的要求,其得到的答案是不一樣的,我這里僅對
    像ICQ一類的發送聊天消息的情況作分析,對于其他情況,你或許也能得到一點幫助:
    首先,我們知道,TCP/IP通常被認為是一個四層協議系統,包括鏈路層,網絡層,運輸層,應用層.
    UDP屬于運輸層,下面我們由下至上一步一步來看:
    以太網(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值,使數據報能夠順利到達目的地,這樣就會做許多不必要的操作.

    目前大多數的路由設備的MTU都為1500
    鑒于Internet上的標準MTU值為576字節,所以我建議在進行Internet的UDP編程時.
    最好將UDP的數據長度控件在548字節(576-8-20)以內.

     

    //-------------------------------------------------------------------------------------------------

     

    看到另外一篇文章說,還應該有個PPP的包頭包尾的開銷(8Bytes),那就為1492了

    UDP 包的大小就應該是 1492 - IP頭(20) - UDP頭(8) = 1464(BYTES)
    TCP 包的大小就應該是 1492 - IP頭(20) - TCP頭(20) = 1452(BYTES)

     

    總結:

    我們設定包的大小對于UDP和TCP協議是不同的,關鍵是看系統性能和網絡性能,網絡是狀態很好的局域網,那么UDP包分大點,提高系統的性能。不好,就分小于1464,這樣可以減低丟包率。對于TCP來說,這個就要靠經驗了,因為,TCP丟包可以自動重傳,分大了,系統性能提高了,分包和錯誤重組可能會耗費時間,使傳送時間延長,分小了,系統性能又降低了。

    總之 ,如果網絡不好,包大小最好為1400以下

    RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成
    最近免费观看高清韩国日本大全