1. 程式人生 > >資料幀、MTU、MSS、IP分片

資料幀、MTU、MSS、IP分片

1.乙太網幀

  在乙太網鏈路上的資料包稱作以太幀,在802.3標準裡,規定了一個以太幀的資料部分(Payload)的最大長度是1500個位元組(MTU),再加上14位元組鏈路頭和4位元組的FCS,所以乙太網幀的最大長度為1518。另外,乙太網幀的最小長度為64位元組。

  [1]4位元組的FCS是網絡卡處理的,所以抓到的包看不到這個欄位(網絡卡驅動去掉了),組建包時也不用設定這個欄位(由網絡卡驅動計算填充)。

  [2]每個幀的前面有7位元組的前導碼和1位元組的幀起始定界符,這8個位元組是幀之外的資料,由接收器電路使用。

  [3]鏈路頭+4位元組的FCS是幀頭,MTU是幀的負載,所以MTU是不包括鏈路頭的。

  

2.MSS

  MSS是TCP報文負載的最大長度。MSS常常使用1460,是因為MTU最大為1500,減去IP頭(20位元組)和TCP頭(20位元組)後為1460。

  MSS的作用:

    [1]如果一端的接收緩衝區比較小(例如10位元組),則必須兩端協商一個合適的MSS大小。

    [2]提高網路頻寬的利用率,減少IP分片和重組,因為傳送到IP的資料包過大時會進行IP分片和重組,而通過MSS限制資料大小,上送到IP層時資料長度有限制,因此可以減少分片。

  而UDP協議沒有MSS,所以傳送給IP層時,由IP協議完成分片。例如傳送資料長度為2000位元組,使用TCP協議時(例如MSS是1460),TCP分成兩個包上送到IP層,此時IP層不用分片;而使用UDP時,一次上送到IP層,此時IP層需要分片。

3.IP分片

  IP層收到資料時,如果資料加上IP頭的長度超過MTU,則需要分片。