MTU MSS 詳解記錄

2021-05-22 03:10:49 字數 4562 閱讀 1031

mtu=mss+ip header+tcp header+鏈路層開銷+加密報文頭(某些程式加密強度不一樣)

mtu,對udptcp報文都檢測,當超過時,如果報文df=0,就進行分段,如果df=1,就丟棄,同時返回rfc 792定義的icmp type3 code 4icmp destination unreachable-fragmentation needed and df set)或rfc 1191定義的icmp包(包含**失敗鏈路的mtu),主機收到後會調節mss以適應,後續包不會分片就可進行傳輸。如果兩端之間某router配置了acldeny掉所有的icmp,那就無法收到咯。

mss其實就是tcp報文payload大小。一般的應用軟體,當客戶端和伺服器端在建立tcp連線的時候需要根據實際傳輸的報文大小來協商tcp的視窗大小msstcp連線成功後會進行兩次滑動視窗的協商,一次是pcserver,一次是與閘道器,然後在兩次協商裡選擇乙個較小的值作為視窗來傳送報文。

當協商出來的mss比較大時,加上ip header+tcp header+鏈路層開銷+加密報文頭後,就有可能大於mtu,當df=1時,就會丟棄掉。

正如所說:「對於udp協議而言,這個協議本身是無連線的協 議,對資料報的到達順序以及是否正確到達不甚關心,所以一般udp應用對分片沒有特殊要求。」所以在路由 器上進行ip tcp mss命令只對tcp packet檢測就夠了。

再提供乙個案例:msn是使用https方式登陸的,有時會有突發大報文,而且df位是設定為1的。雖然目前大部分出現的故障現象都是:不能傳送附件;不能開啟網頁等。都是在pppoe中發生的。但就算源和目的網路的mtu都是1500,但是由於中間經過的節點鏈路可能存在不同,可能少於1500。或者在傳輸過程中的某個路由器設定了較小的mtu。而往往配置路由器或交換機時, 習慣禁止了所有的icmp資訊,這樣的話那路由器就無法返回icmp 3/4的包給源主機了。rfc 2923tcp problems with path mtu discovery)。

所以,有時候出現的故障,不止要除錯mtu值,還要除錯mss值,才能使所有應用正常

其實碰到此問題時,最好是借助sniffer抓包分析(不過奇怪,銳捷nbr1000無法抓到icmp type 3 code 4的包,所以無法抓包提供分析圖,好可惜!是路由器不支援還是其他原因,以後有機會考證)

附:sniffer抓包協助理解分片過程以及df

上圖是:

ping

–l 2000 [url]www.163.com[/url]

首先看ip header

,more fragments位為1

,向對方通告此資料報為多幀傳送(分段),

total lengt=1300bytes

(1280bytes+ip

報頭20bytes

)。再看

icmp

處,可以看到分了兩個包,大小分 別為

1280bytes

和728bytes

,2008 bytes of reassembled data

指明重組後的資料為

2008bytes

(icmp

包頭8bytes

,資料2000bytes

)。然後看

dlc部分,指明了以太型別

0800(ip

),幀大小為

1314bytes

(icmp

的1280bytes+ip

報頭20bytes+

幀14bytes)

再接著看下乙個幀。首先看到

dlc部分寫著了幀大小為

762bytes,ip

部分,continuation of frame 17

,第17

個幀的後續。

fragment offset

分段偏移量為

1280bytes

(第乙個包的大 小)。至此,第乙個

icmp echo

包全部傳送完畢。

ping –f –l 1200

[url]www.163.com[/url]

-f命令:將資料報df(

don』t fragment

)位設定為

1(不能分段)

本文出自 「我是木頭 」 部落格,請務必保留此出處http://infotech.blog.51cto.com/391844/123859

MTU,MSS基本概念

傳輸層 對於udp協議來說,整個包的最大長度為65535,其中包頭長度是65535 20 65515 對於tcp協議來說,整個包的最大長度是由最大傳輸大小 mss,maxitum segment size 決定,mss就是tcp資料報每次能夠傳 輸的最大資料分段。為了達到最佳的傳輸效能tcp協議在建...

可靠的UDP連線 MTU MSS

這個網頁裡面寫了 其可靠性必須由上層應用實現。一般都會採用訊息重傳來實現其可靠性,採用訊息重傳的時候有兩種方式,一種是傳送者發起,另一種是接收者發起。前一種接收者發的是ack。傳送者收到ack,就不重傳。但是可能ack內爆。第二種接收者發的是nack。傳送者收到nack,就重傳。但是可能nack內爆...

網路7層模型理解 分段 分片 MTU MSS

應用層 telnet,ftp,http,snmp 第七層 表示層 第六層 會話層 第五層 傳輸層 tcp,udp 第四層 網路層 ip 第三層 資料鏈路層 sdlc,hdlc,ppp,stp,幀中繼 第二層 物理層 第一層 舉個例子 1 應用層使用ftp協議,傳遞各種引數,包括使用者名稱,密碼,ip...