1. 程式人生 > >TCP最小傳輸單元和最大傳輸單元

TCP最小傳輸單元和最大傳輸單元

一個乙太網資料幀的使用者資料段是 46-1500位元組
TCP協議的話,有20位元組IP頭+20位元組TCP頭,佔用40位元組
也就是說留給使用者的資料是6位元組-1460位元組
所以對於TCP協議來說,如果你傳送的資料小於6位元組(不是幾百位元組)的時候,是“虧本”的

所以TCP協議有一個Nagle演算法,滿足一定條件的情況下,對send的資料快取、拼接到一起再發送,這個選項預設是開啟的。當然你可以通過TCP_NODELAY選項來關閉該演算法(當你要求資料的及時性的情況下)。

然後你也有提到節約伺服器頻寬,伺服器頻寬的佔用,是計算乙太網資料幀的大小的
即你傳送6位元組,實際頻寬佔用64位元組
你傳送10位元組,實際頻寬佔用68位元組

所以對於你要傳送的資料,在不影響實時性的情況下,儘可能的拼接成大包傳送,是有利的

當然,伺服器傳送的資料,該壓縮的還是得壓縮,該節省的還是得節省
因為就算你每個包是10位元組,如果我可以10個包並在一起發,是100位元組
但是如果可以壓縮到每個包5位元組,10個包並在一起發,是50位元組