TCP/UDP 發送資料的資料長度單位

來源:互聯網
上載者:User

基於訊息
的SOCKET最大的發送包大小為SO_MAX_MSG_SIZE(預設為65535, 即64K), 超過此值,SendTo函數將發送失敗,失敗資訊為 WSAEMSGSIZE
.但報文段大於MTU
而沒有大於
SO_MAX_MSG_SIZE時,需要進行IP分區傳輸,同樣這樣在接收方,IP層需要組合包操作,並耗記憶體,一般來說要控制報文大小在小於或等於MTU的範圍內,避開拆包和組包過程.

在TCP協議中,大的資料實際上可能經過兩次分割:第一次是TCP協議會把資料分段已裝入一個TCP報文中,由於TCP報文將要被放入IP包中,所以每個分段<SO_MAX_MSG_SIZE; 第二次是IP包經過某物理時,如果IP包>該網路的MTU

,那麼IP協議會將該IP包切片;

由於UDP是無連線協定,且運行在IP之上,UDP每次送的資料<SO_MAX_MSG_SIZE

各種網路環境對MTU的設定:

Internet, 路由器可能會將MTU設為不同的值路由器可能會將MTU設為不同的值;

PPPoE/ADSL:1492
Dial Up/Modem:576

乙太網路(Ethernet)資料幀的長度必須在46-1500位元組之間,這是由乙太網路的物理特性決定的.   
這 個1500位元組被稱為鏈路層的MTU
(傳輸單元最大值).    根據四層網路拓撲結構,
扣除IP層中的封裝欄位(IP資料報的首部為20位元組),所以IP資料報的資料區長度最大為1480位元組,
而這個1480位元組就是用來放TCP傳來的TCP報文段或UDP傳來的UDP資料報的;另外考慮傳輸層UDP的首部佔用8個位元組,所以UDP資料報的資料
區最大長度為1472位元組.

 

轉自 http://blog.csdn.net/hwz119/archive/2008/06/19/2566908.aspx

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.