1. 程式人生 > >TCP/IP協議:最大傳輸單元MTU 和 最大分段大小MSS (TCP的分段和IP的分片)

TCP/IP協議:最大傳輸單元MTU 和 最大分段大小MSS (TCP的分段和IP的分片)

MTU = MSS + TCP Header + IP Header.

mtu是網路傳輸最大報文包。 mss是網路傳輸資料最大值。

MTU:maximum transmission unit,最大傳輸單元,由硬體規定,如乙太網的MTU為1500位元組。

MSS:maximum segment size,最大分節大小,為TCP資料包每次傳輸的最大資料分段大小,一般由傳送端向對端TCP通知對端在每個分節中能傳送的最大TCP資料。MSS值為MTU值減去IPv4 Header(20 Byte)和TCP header(20 Byte)得到。

分片:若一IP資料報大小超過相應鏈路的MTU的時候,IPV4和IPV6都執行分片(fragmentation),各片段到達目的地前通常不會被重組(re-assembling)。IPV4主機對其產生的資料報執行分片,IPV4路由器對其轉發的資料也執行分片。然而IPV6只在資料產生的主機執行分片;IPV6路由器對其轉發的資料不執行分片。

例如:一個乙太網上的主機和一個令牌環網上的主機間建立連線,其中乙太網上主機通告的MSS為1460,令牌環網上主機通告的MSS為4096。觀察分組,在兩個方向上都找不到大於1460位元組的資料,為什麼?

        令牌環網上傳送到乙太網的資料大小不大於1460位元組的原因是因為乙太網上主要通告的MSS值就為1460個位元組,所以令牌環網上傳送出去的資料的長度不能夠大於MSS值;令牌環網上主機通告的MSS值為4096,也即是說乙太網能夠傳送到令牌環網上的TCP淨荷值為4096,但是乙太網的MTU值又是由硬體所決定的,最大隻支援1500(包括IP頭至少20B和TCP頭至少20B),為避免分片,因此乙太網傳送到令牌環網的資料的淨荷也為1500-20-20=1460B,所以兩個方向的淨資料長度不會大於1460位元組。 

下面這張圖是資料進入協議棧時的封裝過程

最大傳輸單元MTU


乙太網和8 0 2 . 3對資料幀的長度都有一個限制,其最大值分別是1 5 0 0和1 4 9 2位元組。鏈路層的這個特性稱作M T U,最大傳輸單元。不同型別的網路大多數都有一個上限。
如果I P層有一個數據報要傳,而且資料的長度比鏈路層的M T U還大,那麼I P層就需要進行分片( f r a g m e n t a t i o n),把資料報分成若干片,這樣每一片都小於M T U。
圖2 - 5列出了一些典型的M T U值,它們摘自RFC 1191[Mogul and Deering 1990]。點到點的鏈路層(如S L I P和P P P)的M T U並非指的是網路媒體的物理特性。相反,它是一個邏輯限制,目的是為互動使用提供足夠快的響應時間。

路徑MTU

當在同一個網路上的兩臺主機互相進行通訊時,該網路的M T U是非常重要的。但是如果
兩臺主機之間的通訊要通過多個網路,那麼每個網路的鏈路層就可能有不同的M T U。重要的
不是兩臺主機所在網路的M T U的值,重要的是兩臺通訊主機路徑中的最小M T U。它被稱作路
徑M T U。
兩臺主機之間的路徑M T U不一定是個常數。它取決於當時所選擇的路由。而選路不一定
是對稱的(從A到B的路由可能與從B到A的路由不同),因此路徑M T U在兩個方向上不一定是
一致的。
RFC 1191[Mogul and Deering 1990]描述了路徑M T U的發現機制,即在任何時候確定路徑
M T U的方法。

MSS 是TCP選項中最經常出現,也是最早出現的選項。MSS選項佔4byte。MSS是每一個TCP報文段中資料欄位的最大長度,注意:只是資料部分的欄位,不包括TCP的頭部。TCP在三次握手中,每一方都會通告其期望收到的MSS(MSS只出現在SYN資料包中)如果一方不接受另一方的MSS值則定位預設值536byte。
MSS值太小或太大都是不合適。太小,例如MSS值只有1byte,那麼為了傳輸這1byte資料,至少要消耗20位元組IP頭部+20位元組TCP頭部=40byte,這還不包括其二層頭部所需要的開銷,顯然這種資料傳輸效率是很低的。MSS過大,導致資料包可以封裝很大,那麼在IP傳輸中分片的可能性就會增大,接受方在處理分片包所消耗的資源和處理時間都會增大,如果分片在傳輸中還發生了重傳,那麼其網路開銷也會增大。因此合理的MSS是至關重要的。MSS的合理值應為保證資料包不分片的最大值。對於乙太網MSS可以達到1460byte.
與MSS相似的在IP層也有一個類似的概念---MTU(Maximum Transfer Unit)下圖可以清晰翻譯MSS不MTU 的關係:

MTU =MSS + TCP Header + IP Header.

TCP/IP詳解--TCP的分段和IP的分片

分組可以發生在運輸層和網路層,運輸層中的TCP會分段,網路層中的IP會分片IP層的分片更多的是為運輸層的UDP服務的,由於TCP自己會避免IP的分片,所以使用TCP傳輸在IP層都不會發生分片的現象。

 我們在學習TCP/IP協議時都知道,TCP報文段如果很長的話,會在傳送時發生分段,在接受時進行重組,同樣IP資料報在長度超過一定值時也會發生分片,在接收端再將分片重組

    我們先來看兩個與TCP報文段分段和IP資料報分片密切相關的概念。

    MTU(最大傳輸單元)

    MTU前面已經說過了,是鏈路層中的網路對資料幀的一個限制,依然以乙太網為例,MTU為1500個位元組。一個IP資料報在乙太網中 傳輸,如果它的長度大於該MTU值,就要進行分片傳輸,使得每片資料報的長度小於MTU。分片傳輸的IP資料報不一定按序到達,但IP首部中的資訊能讓這些資料報片按序組裝。IP資料報的分片與重組是在網路層進完成的。

    MSS(最大分段大小)

    MSS是TCP裡的一個概念(首部的選項欄位中)。MSS是TCP資料包每次能夠傳輸的最大資料分段,TCP報文段的長度大於MSS時,要進行分段傳輸。TCP協議在建立連線的時候通常要協商雙方的MSS值,每一方都有用於通告它期望接收的MSS選項(MSS選項只出現在SYN報文段中,即TCP三次握手的前兩次)。MSS的值一般為MTU值減去兩個首部大小(需要減去IP資料包包頭的大小20Bytes和TCP資料段的包頭20Bytes)所以如果用鏈路層乙太網,MSS的值往往為1460。而Internet上標準的MTU(最小的MTU,鏈路層網路為x2.5時)為576,那麼如果不設定,則MSS的預設值就為536個位元組。很多時候,MSS的值最好取512的倍數。TCP報文段的分段與重組是在運輸層完成的。

    到了這裡有一個問題自然就明瞭了,TCP分段的原因是MSS,IP分片的原因是MTU,由於一直有MSS<=MTU,很明顯,分段後的每一段TCP報文段再加上IP首部後的長度不可能超過MTU,因此也就不需要在網路層進行IP分片了。因此TCP報文段很少會發生IP分片的情況。

    再來看UDP資料報,由於UDP資料報不會自己進行分段,因此當長度超過了MTU時,會在網路層進行IP分片。同樣,ICMP(在網路層中)同樣會出現IP分片情況。

    總結:UDP不會分段,就由IP來分。TCP會分段,當然就不用IP來分了

    另外,IP資料報分片後,只有第一片帶有UDP首部或ICMP首部,其餘的分片只有IP頭部,到了端點後根據IP頭部中的資訊再網路層進行重組。而TCP報文段的每個分段中都有TCP首部,到了端點後根據TCP首部的資訊在傳輸層進行重組。IP資料報分片後,只有到達目的地後才進行重組,而不是向其他網路協議,在下一站就要進行重組。

    最後一點,對IP分片的資料報來說,即使只丟失一片資料也要重新傳整個資料報(既然有重傳,說明運輸層使用的是具有重傳功能的協議,如TCP協議)。這是因為IP層本身沒有超時重傳機制------由更高層(比如TCP)來負責超時和重傳。當來自TCP報文段的某一段(在IP資料報的某一片中)丟失後,TCP在超時後會重發整個TCP報文段,該報文段對應於一份IP資料報(可能有多個IP分片),沒有辦法只重傳資料報中的一個數據分片。

    在IP層分片時,只有第一個分片存在運輸層協議頭部,其餘分片都不包含運輸層協議的首部,這一點很重要。然後TCP的分段,每一個分段都包含TCP首部資訊。再有就是IP分片時到達目的地之後再進行重組的,IP層的重組是發生在目的地的IP層TCP的重組是發生在目的地的傳輸層中

轉自:

http://blog.csdn.net/yygydjkthh/article/details/7359281

http://blog.csdn.net/xiaofei0859/article/details/51052752

相關推薦

TCP/IP協議傳輸單元MTU 分段大小MSS (TCP分段IP分片)

MTU = MSS + TCP Header + IP Header. mtu是網路傳輸最大報文包。 mss是網路傳輸資料最大值。 MTU:maximum transmission unit,最大傳輸單元,由硬體規定,如乙太網的MTU為1500位元組。 MS

Windows上傳輸單元MTU值的查看設置

edit 分數 精確 步驟 默認 命令提示符 使用 ica ace 最近使用ssh工具在VPN環境下連接一個生產環境的Linux主機的時候,發現經常出現輸入命令後卡死的情況。最開始以為是Linux主機的問題,問了一些老同事之後發現原來是我自己電腦的最大傳輸單元MTU和服務

【網路協議TCP分段與UDP/IP分片 (MTU傳輸單元MSS分段大小)

 我們在學習TCP/IP協議時都知道,TCP報文段如果很長的話,會在傳送時發生分段,在接受時進行重組,同樣IP資料報在長度超過一定值時也會發生分片,在接收端再將分片重組。     我們先來看兩個與TCP報文段分段和IP資料報分片密切相關的概念。     MTU(最大傳

TCP分段與UDP/IP分片 (MTU傳輸單元MSS分段大小)

Twisted 基於python開發的跨平臺的網路庫,可以說只要是伺服器涉及到的,都可以用。包含http、ftp、mail、ssh、xmpp、irc也包含了底層的通訊庫,包括twisted.basic中的基於位元組或則基於行的通訊。twisted最大的閃光點在於全面,而

TCP傳輸單元傳輸單元

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

圖解TCP/IP協議(六)傳輸層(TCP/UDP)、tcp三次握手四次揮手

傳輸層最常見的兩種傳輸協議,分別是TCP和UDP協議。 一、TCP協議 TCP 是面向有連線的流協議。流就是指不間斷的資料結構,可以把它想象成排水管道中的水流。TCP為提供可靠傳輸,實行“順序控制”或“重發控制”機制。 TCP/IP的眾多應用大多以客戶端/服務端的形式執行。作為服

TCP/IP協議 connect的系統超時控制

程式先把socket設定成非阻塞,connect在非阻塞模式下會立刻返回,如果沒有其他錯誤,返回值等於0。當connect不能立刻建立連線時,會返回一個EINPROGRESS,表示連線正在建立的過程中,這時我們可以使用select去輪詢套介面,而select的輪詢超時時間可以根據自己的需要去設定,最主要的是

TCP/IP協議資料鏈路層協議

資料鏈路層的協議定義了通過同種通訊媒介互連的裝置之間的傳輸的規範。 物理層:把物理訊號與二進位制的01進行相互轉換。 資料鏈路層:把01序列組織為一個叫做幀的塊,再進行傳輸。 各種資料鏈路 乙太網 WLAN(無線區域網) PPP(點對點協議)

關於傳輸單元MTU)的整理

MTU設定不當,可能會導致許多網路問題,如某些網路應用無法使用,某些網站無法訪問等。下面是在網上搜索整理的關於MTU設定的東西,某些可能未作驗證,僅供參考。 1. 如何確定網路MTU 某些ISP接入的MTU可能會比常規使用的MTU小,這時如果設定了過大的MTU,就可能會導

關於MTU傳輸單元的百科

通訊術語 最大傳輸單元(Maximum Transmission Unit,MTU)是指一種通訊協議的某一層上面所能通過的最大資料包大小(以位元組為單位)。最大傳輸單元這個引數通常與通訊介面有關(網路介面卡、串列埠等)。因為協議資料單元的包頭和包尾的長度是固定的,MTU越大,

檔案系統快取裡記憶體頁的小分配單元page size與I/O大小的最佳匹配關係討論

     cache page size就是記憶體頁的最小分配單元,預設8KB,應用於R/W cache。如果I/O < 8KB,那麼一個page可能會服務多個I/O,從而優化了cache page的使用。 如果應用環境是Mixed I/O,建議不要更改。如果應用環境主要是【順序,大I/O】,將pa

TCP/IP協議模型傳輸層(TCP/UDP)

TCP協議主要資訊: (1)TCP頭部資訊。TCP頭部資訊出現在每個TCP報文段中,用於指定通訊的源端埠號,目的端埠號,管理TCP連線,控制兩個方向的資料流。 (2)TCP狀態轉移過程。TCP連線的任意一端都是一個狀態機。在TCP連線從建立到斷開整個過程中,連線

TCP/IP協議族》TCP可靠傳輸的實現

可靠傳輸 為方便描述可靠傳輸原理,假定資料傳輸只在一個方向上進行,即A傳送資料,B給出確認 1. 以位元組為單位的滑動視窗 TCP的滑動視窗是以位元組為單位的。為了便於說明,位元組編號取得很小。先假定A收到B發來的確認報文欄位,其中視窗是20位元組,而

TCP/IP協議(2)網絡設備

數據包 服務器 網絡設備 風暴 二層交換機 不同的 中繼器 tcp/ip 解決 1、中繼器(Repeater) 中繼器工作在OSI的一層,我們知道,超5類線的傳輸距離最大為100米,超過這個距離信號就會衰減,中繼器就是為了防止信號變差,將網絡信號進行再生和重定時。 2、

熟悉 TCP/IP 協議

所有 原本 icmp 分配 破壞 流動 保存 似的 而是 一篇文章帶你熟悉 TCP/IP 協議(網絡協議篇二) 同樣的,本文篇幅也比較長,先來一張思維導圖,帶大家過一遍。 一圖看完本文 一、 計算機網絡體系結構分層 計算機網絡體系結構分層計算機網絡體系結構分層不難看

TCP-IP詳解卷3TCP 事務協議、HTTP、NNTPUNIX域協議》【PDF】下載

維護 tcp協議 zha 簡介 參考文獻 源程序 .com 的人 ntp TCP-IP詳解卷3:TCP 事務協議、HTTP、NNTP和UNIX域協議》【PDF】下載鏈接: https://u253469.pipipan.com/fs/253469-230062539

002每天五分鐘入門TCP/IP協議IP協議IP首部長度問題

IP 首部 首部長度 事出反常必有妖,邪乎到家必有鬼。 整個TCP/IP協議中,IP協議是最核心的協議。 IP協議是不可靠的、無連接的服務。 何為不可靠?不能保證IP數據報能夠成功到達目的地,傳輸的可靠×××給傳輸層或應用層去實現。 何為無連接?IP並不維護任何關於後續數據報的狀態信息。 進入正題

003每天五分鐘入門TCP/IP協議IP協議之TOS字段說明

IP首部 ToS服務類型 從IP首部看ToS的位置:ToS即為服務類型,只有當網絡設備能夠支持(能夠識別IP首部中的ToS字段)識別ToS字段時,這給字段設置才有意義。否則都是空談。 先說具體字段的意義:Tos字段長度為8bit前3bit字段:為優選權子字段,現在已經廢棄,這個字段默認值是000,從w

004每天五分鐘入門TCP/IP協議IP協議之16位總長度字段引出的MTU值問題

IP首部 MTU 數據封裝 要理解MTU以及實際生產環境中的MTU問題,就得搞清楚三個問題:IP數據報包含什麽內容;數據進入協議棧的封裝過程;MTU具體代表含義; 首先要理解一個過程:數據進入協議棧的封裝過程!數據從發送主機發送出去之前,在主機的協議棧中會經歷上述圖中的幾個封裝過程。本次以TCP

兩類傳輸協議TCP,UDP

不知道 ans 生命力 簡單比較 運行 可靠 可靠傳輸 情況下 一是 1) TCP是Transfer Control Protocol的簡稱,是一種面向連接的保證可靠傳輸的協議。通過TCP協議傳輸,得到的是一個順序的無差錯的數據流。發送方和接收方的成對的兩個socket之間