MTU MSS 详解记录
生活随笔
收集整理的這篇文章主要介紹了
MTU MSS 详解记录
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
???? ???? 先學(xué)習(xí)理解一下幀的封裝格式:
需要注意的是,區(qū)別兩種幀封裝格式:802標(biāo)準(zhǔn)幀和以太網(wǎng)幀 1,在802標(biāo)準(zhǔn)定義的幀格式中,長度字段是指它后續(xù)數(shù)據(jù)的字節(jié)長度,但不包括C R C檢驗(yàn)碼。RFC 1042(IEEE 802) 2,RFC 894(以太網(wǎng)) 所以,以太網(wǎng)幀報頭為目的地址6+源地址6+類型2+CRC 4=18bytes 而802幀沒有CRC,所以為14bytes。Sniffer采用的是802幀為14bytes ? ? 轉(zhuǎn)載文章: MTU: Maxitum Transmission Unit 最大傳輸單元
MSS: Maxitum Segment Size 最大分段大小 ? 由于以太網(wǎng)EthernetII最大的數(shù)據(jù)幀是1518Bytes這樣,刨去以太網(wǎng)幀的幀頭(DMAC目的地址MAC48bit=6Bytes+SMAC源MAC地址48bit=6Bytes+Type域2bytes)14Bytes和幀尾CRC校驗(yàn)部分4Bytes(這個部門有時候大家也把它叫做FCS),那么剩下承載上層協(xié)議的地方也就是Data域最大就只能有1500Bytes. 這個值我們就把它稱之為MTU。 ? 以太網(wǎng)的MTU是1500,再減去PPP的包頭包尾的開銷(8Bytes),就變成1492。 ? MSS就是TCP數(shù)據(jù)包每次能夠傳輸?shù)淖畲髷?shù)據(jù)分段。為了達(dá)到最佳的傳輸效能 TCP協(xié)議在建立連接的時候通常要協(xié)商雙方的MSS值,這個值TCP協(xié)議在實(shí)現(xiàn)的 時候往往用MTU值代替(需要減去IP數(shù)據(jù)包包頭的大小20Bytes和TCP數(shù)據(jù)段的 包頭20Bytes)所以往往MSS為1460。通訊雙方會根據(jù)雙方提供的MSS值得最小 值確定為這次連接的最大MSS值。 ? ? 先說說這MTU最大傳輸單元,這個最大傳輸單元實(shí)際上和鏈路層協(xié)議有著密切的關(guān)系,讓我們先仔細(xì)回憶一下EthernetII幀的結(jié)構(gòu)DMAC+SMAC+Type+Data+CRC。由于以太網(wǎng)傳輸電氣方面的限制,每個以太網(wǎng)幀都有最小的大小64bytes,最大不能超過1518bytes,對于小于或者大于這個限制的以太網(wǎng)幀我們都可以視之為錯誤的數(shù)據(jù)幀,一般的以太網(wǎng)轉(zhuǎn)發(fā)設(shè)備會丟棄這些數(shù)據(jù)幀。(注:小于64Bytes的數(shù)據(jù)幀一般是由于以太網(wǎng)沖突產(chǎn)生的“碎片”或者線路干擾或者壞的以太網(wǎng)接口產(chǎn)生的,對于大于1518Bytes的數(shù)據(jù)幀我們一般把它叫做Giant幀,這種一般是由于線路干擾或者壞的以太網(wǎng)口產(chǎn)生) ? 由于以太網(wǎng)EthernetII最大的數(shù)據(jù)幀是1518Bytes這樣,刨去以太網(wǎng)幀的幀頭(DMAC目的MAC地址48bit=6Bytes+SMAC源MAC地址48bit=6Bytes+Type域2bytes)14Bytes和幀尾CRC校驗(yàn)部分4Bytes(這個部門有時候大家也把它叫做FCS),那么剩下承載上層協(xié)議的地方也就是Data域最大就只能有1500Bytes這個值我們就把它稱之為MTU。這個就是網(wǎng)絡(luò)層協(xié)議非常關(guān)心的地方,因?yàn)榫W(wǎng)絡(luò)層協(xié)議比如IP協(xié)議會根據(jù)這個值來決定是否把上層傳下來的數(shù)據(jù)進(jìn)行分片。就好比一個盒子沒法裝下一大塊面包,我們需要把面包切成片,裝在多個盒子里面一樣的道理。 ? 當(dāng)兩臺遠(yuǎn)程PC互聯(lián)的時候,它們的數(shù)據(jù)需要穿過很多的路由器和各種各樣的網(wǎng)絡(luò)媒介才能到達(dá)對端,網(wǎng)絡(luò)中不同媒介的MTU各不相同,就好比一長段的水管,由不同粗細(xì)的水管組成(MTU不同 :))通過這段水管最大水量就要由中間最細(xì)的水管決定。 ? 對于網(wǎng)絡(luò)層的上層協(xié)議而言(我們以TCP/IP協(xié)議族為例)它們對水管粗細(xì)不在意它們認(rèn)為這個是網(wǎng)絡(luò)層的事情。網(wǎng)絡(luò)層IP協(xié)議會檢查每個從上層協(xié)議下來的數(shù)據(jù)包的大小,并根據(jù)本機(jī)MTU的大小決定是否作“分片”處理。分片最大的壞處就是降低了傳輸性能,本來一次可以搞定的事情,分成多次搞定,所以在網(wǎng)絡(luò)層更高一層(就是傳輸層)的實(shí)現(xiàn)中往往會對此加以注意!有些高層因?yàn)槟承┰蚓蜁笪疫@個面包不能切片,我要完整地面包,所以會在IP數(shù)據(jù)包包頭里面加上一個標(biāo)簽:DF(Donot Fragment)。這樣當(dāng)這個IP數(shù)據(jù)包在一大段網(wǎng)絡(luò)(水管里面)傳輸?shù)臅r候,如果遇到MTU小于IP數(shù)據(jù)包的情況,轉(zhuǎn)發(fā)設(shè)備就會根據(jù)要求丟棄這個數(shù)據(jù)包。然后返回一個錯誤信息給發(fā)送者。這樣往往會造成某些通訊上的問題,不過幸運(yùn)的是大部分網(wǎng)絡(luò)鏈路都是MTU1500或者大于1500。 ? 對于UDP協(xié)議而言,這個協(xié)議本身是無連接的協(xié)議,對數(shù)據(jù)包的到達(dá)順序以及是否正確到達(dá)不甚關(guān)心,所以一般UDP應(yīng)用對分片沒有特殊要求。 ? 對于TCP協(xié)議而言就不一樣了,這個協(xié)議是面向連接的協(xié)議,對于TCP協(xié)議而言它非常在意數(shù)據(jù)包的到達(dá)順序以及是否傳輸中有錯誤發(fā)生。所以有些TCP應(yīng)用對分片有要求---不能分片(DF)。 ? 花開兩朵,各表一枝,說完MTU的故事我們該講講今天的第二個豬腳---PPPoE所謂PPPoE就是在以太網(wǎng)上面跑PPP協(xié)議,有人奇怪了,PPP協(xié)議和Ethernet不都是鏈路層協(xié)議嗎?怎么一個鏈路層跑到另外一個鏈路層上面去了,難道升級成網(wǎng)絡(luò)層協(xié)議了不成。其實(shí)這是個誤區(qū):就是某層協(xié)議只能承載更上一層協(xié)議。 為什么會產(chǎn)生這種奇怪的需求呢?這是因?yàn)殡S著寬帶接入(這種寬帶接入一般為Cable Modem或者xDSL或者以太網(wǎng)的接入)由于以太網(wǎng)缺乏認(rèn)證計費(fèi)機(jī)制而傳統(tǒng)運(yùn)營商是通過PPP協(xié)議來對撥號等接入服務(wù)進(jìn)行認(rèn)證計費(fèi)的,所以就出了這么一個怪胎:PPPoE。(有關(guān)PPPoE的詳細(xì)介紹參見V大以及本站其他成 員的一些介紹文章,我就不啰里啰唆的了) ? PPPoE帶來了好處,也帶來了一些壞處,比如:二次封裝耗費(fèi)資源,降低了傳輸效能等等,這些壞處俺也不多說了,最大的壞處就是PPPoE導(dǎo)致MTU變小了以太網(wǎng)的MTU是1500,再減去PPP的包頭包尾的開銷(8Bytes),就變成1492。 ? 如果兩臺主機(jī)之間的某段網(wǎng)絡(luò)使用了PPPoE那么就會導(dǎo)致某些不能分片的應(yīng)用無法通訊。 ? 這個時候就需要我們調(diào)整一下主機(jī)的MTU,通過降低主機(jī)的MTU,這樣我們就能夠順利地進(jìn)行通訊了。 ? 當(dāng)然對于TCP應(yīng)用而言還有另外的解決方案。馬上請出今天第三位豬腳:MSS。 MSS最大傳輸大小的縮寫,是TCP協(xié)議里面的一個概念。MSS就是TCP數(shù)據(jù)包每次能夠傳輸?shù)淖畲髷?shù)據(jù)分段。為了達(dá)到最佳的傳輸效能TCP協(xié)議在建立連接的時候通常要協(xié)商雙方的MSS值,這個值TCP協(xié)議在實(shí)現(xiàn)的時候往往用MTU值代替(需要減去IP數(shù)據(jù)包包頭的大小20Bytes和TCP數(shù)據(jù)段的包頭20Bytes)所以往往MSS為1460。通訊雙方會根據(jù)雙方提供的MSS值得最小值確定為這次連接的最大MSS值。 ? ? 我們回過頭來看前言里面的那個問題,我們試想一下,如果我們在中間路由器上把每次TCP連接的最大MSS進(jìn)行調(diào)整這樣使得通過PPPoE鏈路的最大MSS值加上數(shù)據(jù)包頭包尾不會超過PPPoE的MTU大小1492這樣就不會造成無法通訊的問題。 ? 所以上面的問題可以通過ip tcp adjust-mss 1452來解決。 ? 當(dāng)然問題也可以通過修改PC機(jī)的MTU來解決。 ? [后記] Cisco在IOS 12.2(4)T及以后的版本支持修改MSS大小的特性 ? Cisco的TCP Adjust MSS Feature: ? The TCP MSS Adjustment feature enables the configuration of the maximum segment size (MSS) for transient packets that traverse a router, specifically TCP segments in the SYN bit set, when Point to Point Protocol over Ethernet (PPPoE) is being used in the network. PPPoE truncates the Ethernet maximum transmission unit (MTU) 1492, and if the effective MTU on the hosts (PCs) is not changed, the router in between the host and the server can terminate the TCP sessions. The ip tcp adjust-mss command specifies the MSS value . the intermediate router of the SYN packets to avoid truncation. ? ? ? ? ? ? ? 附:MS文章---路徑最大傳輸單元 (PMTU) 黑洞路由器 當(dāng)路由器必須將 IP 包分段但又因 DF標(biāo)記設(shè)置為 1 而不能分段時,路由器可采用以下任一種方式:
? PMTU 黑洞路由器會給 TCP連接帶來問題。例如,Microsoft? Windows? XP和 Windows Server?2003中的 TCP/IP協(xié)議默認(rèn)情況下會使用 PMTU發(fā)現(xiàn)。TCP會發(fā)送 DF標(biāo)記設(shè)置為 1的數(shù)據(jù)段,并且在需要時,會根據(jù)符合 RFC 1191定義的“ICMP Destination Unreachable-Fragmentation Needed and DF Set(ICMP Type 3 Code 4)”消息的回執(zhí)(其中包含 IP MTU),更改 TCP MSS 值。 ? 在 TCP 三次握手期間交換的 TCP數(shù)據(jù)段不會太大,因而不會被 PMTU 黑洞路由器丟棄。但是,一旦開始在連接上傳輸數(shù)據(jù)—假定基于協(xié)商的 MSS確定的 PMTU 比實(shí)際 PMTU大—TCP 數(shù)據(jù)段的大于實(shí)際 PMTU的 IP 包就會被直接丟棄。 例如,您可以用 FTP 命令行工具成功地與 FTP服務(wù)器建立連接并登錄。但是,當(dāng)您試圖下載或者上載文件時,中間的 PMTU 黑洞路由器就會丟棄達(dá)到最大大小的 TCP 數(shù)據(jù)段,從而導(dǎo)致錯誤和文件傳輸失敗。 您可以按照下面的語法使用 Ping 工具來檢測 PMTU黑洞路由器: Pingdestination –f –l ICMPEchoPayloadSize
要計算 ICMPEchoPayloadSize,可用您想發(fā)送的 IP包的大小減去 28。這是因?yàn)?#xff0c;IP報頭的大小為 20 字節(jié),而 ICMP Echo消息的 ICMP 報頭的大小為 8字節(jié)。下圖顯示了二者的關(guān)系。 例如,要發(fā)送長度為 1500 字節(jié)的 ICMP Echo消息,您應(yīng)使用以下命令: ping destination –f –l 1472 如果有 IP MTU 更小的中間鏈路,且路由器發(fā)送了“ICMP Destination Unreachable-Fragmentation Needed and DF Set”消息,則 Ping工具會顯示“Packet needs to be fragmented but DF set”消息。如果有 IP MTU更小的中間鏈路,且 PMTU 黑洞路由器直接丟棄了包,則 Ping工具會顯示“Request timed out”消息。 要找出包含 PMTU 黑洞路由器的路徑的有效 IP MTU,請使用 Ping工具,同時不斷增大 Echo 消息的有效負(fù)載的大小。因?yàn)榈湫妥泳W(wǎng)的最小 IP MTU是 576字節(jié),因此開始時可將 ICMP Echo消息的有效負(fù)載設(shè)置為 548字節(jié),然后每次遞增 100字節(jié),直到找到有效 PMTU。 例如,如果 ping 10.0.0.10 -f -l 972 命令顯示“Reply from 10.0.0.10”,而命令 ping 10.0.0.10 -f -l 973顯示“Request timed out”,則 IP地址為 10.0.0.10 的節(jié)點(diǎn)的有效 PMTU為 1000 字節(jié) (972+28)。 ?
? ? ? ? ? ? ? 網(wǎng)絡(luò)故障舉例:[轉(zhuǎn)自華為3COM全球服務(wù)論壇] ? 現(xiàn)象描述:
組網(wǎng):
? ? PC-AR2831-AR2880-CISCO設(shè)備組成的核心網(wǎng)-SERVER
網(wǎng)絡(luò)運(yùn)行MPLS VPN;AR2880為PE;AR2831為CE,PE、CE間運(yùn)行OSPF,多CE配置;路由器各接口MTU、TCP MSS值采用默認(rèn)設(shè)置
AR2880:Version 3.30, Release 0008
AR2831:Version 3.30, Release 0008
現(xiàn)象1:
? ?? ? AR2880路由器的以太口MTU使用缺省設(shè)置時,使用的OA系統(tǒng)(BS架構(gòu))部分流程無法運(yùn)行,上網(wǎng)發(fā)郵件時附件無法粘貼;但是在cisco設(shè)備上,同樣的組網(wǎng)沒有發(fā)現(xiàn)問題;
現(xiàn)象2:
? ?? ? 將AR2880路由器的以太口MTU改為512測試,郵件附件可以粘貼,但OA主頁打開后無內(nèi)容,刷新不了;將AR2880路由器的以太口MTU改為1200測試,郵件附件可以粘貼,OA主頁可以正常顯示,但是點(diǎn)擊OA系統(tǒng)的"起草公文"無頁面彈出,正常狀況下應(yīng)彈出新建公文頁面;
告警信息:
無??
原因分析:
原因分析:
可能是應(yīng)用軟件問題;可能是MTU、TCP MSS值協(xié)商配置問題;
具體分析:
1、接口MTU、TCP MSS采用缺省值1500時,無法貼附件;
這是因?yàn)閼?yīng)用了三層MPLS VPN技術(shù),增加了8bit的標(biāo)簽,MTU值協(xié)商出現(xiàn)問題。
AR28XX路由器默認(rèn)在接口上自動分片,所以在普通的應(yīng)用中采用默認(rèn)值不會影響業(yè)務(wù)。但路由器接口上收到一個報文長度大于本接口MTU值的報文,如果該報文被強(qiáng)制打上不分片的標(biāo)記,將丟棄報文,并返回一個ICMP差錯報文(type 3,code 4),通知報文發(fā)起者丟棄原因。報文發(fā)起者將發(fā)送比較小的報文。通過多次上述報文協(xié)商,將得到對于某一個固定路徑上的最小Mtu值,這個過程叫做Mtu Discovery,通過MTU Discovery來確定報文路徑上最小可通過的MTU;如果兩個設(shè)備相連,沒有MTU Discovery功能并且MTU值不一致,將可能導(dǎo)致丟棄報文。只有把雙方設(shè)備的Mtu為對端設(shè)備MRU的最小值,才能正常通信。由于某些組網(wǎng)考慮到網(wǎng)絡(luò)安全問題和性能,往往會把ICMP報文過濾掉,引起Mtu Discovery不能正常運(yùn)行;應(yīng)用軟件由于程序算法問題或根本沒有相應(yīng)協(xié)商功能,也會導(dǎo)致了部分應(yīng)用異常。
2、更改接口MTU值以后,仍然有部分業(yè)務(wù)不正常;
這是因?yàn)?/span>TCP MSS值協(xié)商的問題。
?MSS值的計算方法是:MSS=MTU-IP-TCP(如果有其他pppoe、加密報文頭的話也同樣減去),也就是說MSS值其實(shí)就是TCP所承載的凈載荷的長度。由于AR28XX接口缺省的MTU是1500字節(jié),故一般要求加密報文頭+鏈路層開銷+IP頭(20-60字節(jié))+TCP報文(20字節(jié))小于1500字節(jié),即TCP分片配置1200左右比較適合。缺省情況下,TCP報文不分片。因此TCP MSS不匹配也會引起部分應(yīng)用異常。
處理過程:
? ?? ?本例中通過修改路由器接口MTU、TCP MSS值,解決問題。
? ???具體報文mtu、tcp mss大小要根據(jù)具體應(yīng)用,按經(jīng)驗(yàn)值進(jìn)行嘗試,選擇最佳值;其中MTU值的選擇可以通過ping命令設(shè)置不分片來進(jìn)行測試;TCP MSS值的選擇則可以通過MTU減去相應(yīng)其它加密、鏈路層開銷、IP頭、TCP頭等字節(jié)計算。
? ???具體過程如下:
? ???1、本例中使用cisco路由器時相關(guān)應(yīng)用正常。初步估計是mtu值問題,但是對普通應(yīng)用AR28系列路由器會自動分片,不會影響業(yè)務(wù)。測試發(fā)現(xiàn)在client上ping大包的時候,如果不設(shè)置不允許分片,業(yè)務(wù)正常。看來客戶應(yīng)用中做了不允許分片的設(shè)置或其它原因mtu協(xié)商錯誤。更改路由器接口mtu為1500-8=1492以后,業(yè)務(wù)正常。
? ???2、更改接口mtu以后,其它部分業(yè)務(wù)還不正常。分析原因是tcp mss值的問題。減小tcp mss值8字節(jié)1460-8=1452,但是還有部分業(yè)務(wù)不正常。詢問軟件集成商,得到答復(fù)部分軟件中使用了加密技術(shù)。而且不同的應(yīng)用加密強(qiáng)度不同。
? ???3、逐步調(diào)整路由器接口的tcp mss值,減到到1200以后,所有業(yè)務(wù)測試通過。
命令說明:
? ???1、mtu命令用來設(shè)置以太網(wǎng)接口的MTU(最大傳輸單元),undo mtu命令用來恢復(fù)MTU的缺省值。缺省的MTU為1500。使用mtu命令改變接口最大傳輸單元MTU后,需要先對接口執(zhí)行shutdown命令,再執(zhí)行undo shutdown命令將接口重啟,以保證設(shè)置的MTU生效。
? ???2、tcp mss命令用來配置TCP報文分片,undo tcp mss命令用來取消TCP報文分片。 ? ? ? ? ? ? ? 個人總結(jié): ? ? MTU=MSS+IP header+TCP header+鏈路層開銷+加密報文頭(某些程序加密強(qiáng)度不一樣) ? MTU,對UDP和TCP報文都檢測,當(dāng)超過時,如果報文DF=0,就進(jìn)行分段,如果DF=1,就丟棄,同時返回RFC 792定義的ICMP Type3 Code 4(ICMP Destination Unreachable-Fragmentation Needed and DF Set)或 RFC 1191定義的ICMP包(包含轉(zhuǎn)發(fā)失敗鏈路的MTU),主機(jī)收到后會調(diào)節(jié)MSS以適應(yīng),后續(xù)包不會分片就可進(jìn)行傳輸。如果兩端之間某Router配置了ACL ,deny掉所有的ICMP,那就無法收到咯。 ? MSS其實(shí)就是TCP報文payload大小。一般的應(yīng)用軟件,當(dāng)客戶端和服務(wù)器端在建立TCP連接的時候需要根據(jù)實(shí)際傳輸?shù)膱笪拇笮韰f(xié)商TCP的窗口大小MSS。Tcp連接成功后會進(jìn)行兩次滑動窗口的協(xié)商,一次是pc與server,一次是與網(wǎng)關(guān),然后在兩次協(xié)商里選擇一個較小的值作為窗口來發(fā)送報文。 ? 當(dāng)協(xié)商出來的MSS比較大時,加上IP header+TCP header+鏈路層開銷+加密報文頭后,就有可能大于MTU,當(dāng)DF=1時,就會丟棄掉。 ? 正如????所說:“對于UDP協(xié)議而言,這個協(xié)議本身是無連接的協(xié)議,對數(shù)據(jù)包的到達(dá)順序以及是否正確到達(dá)不甚關(guān)心,所以一般UDP應(yīng)用對分片沒有特殊要求。”所以在路由器上進(jìn)行ip tcp mss命令只對tcp packet檢測就夠了。 ? 再提供一個案例:MSN是使用https方式登陸的,有時會有突發(fā)大報文,而且DF位是設(shè)置為1的。雖然目前大部分出現(xiàn)的故障現(xiàn)象都是:不能發(fā)送附件;不能打開網(wǎng)頁等。都是在PPPoE中發(fā)生的。但就算源和目的網(wǎng)絡(luò)的MTU都是1500,但是由于中間經(jīng)過的節(jié)點(diǎn)鏈路可能存在不同,可能少于1500。或者在傳輸過程中的某個路由器設(shè)置了較小的MTU。而往往配置路由器或交換機(jī)時,習(xí)慣禁止了所有的ICMP信息,這樣的話那路由器就無法返回ICMP 3/4的包給源主機(jī)了。 RFC 2923(TCP Problems with Path MTU Discovery)。 ? 所以,有時候出現(xiàn)的故障,不止要調(diào)試MTU值,還要調(diào)試MSS值,才能使所有應(yīng)用正常 其實(shí)碰到此問題時,最好是借助Sniffer抓包分析(不過奇怪,銳捷NBR1000無法抓到ICMP Type 3 Code 4的包,所以無法抓包提供分析圖,好可惜!是路由器不支持還是其他原因,以后有機(jī)會考證) ? 附:Sniffer抓包協(xié)助理解分片過程以及DF ? ? 上圖是:Ping –l 2000 [url]www.163.com[/url] 首先看IP header,More fragments位為1,向?qū)Ψ酵ǜ娲藬?shù)據(jù)包為多幀發(fā)送(分段),total lengt=1300bytes(1280bytes+IP報頭20bytes)。再看ICMP處,可以看到分了兩個包,大小分別為1280bytes和728bytes,2008 bytes of reassembled data指明重組后的數(shù)據(jù)為2008bytes(icmp包頭8bytes,數(shù)據(jù)2000bytes)。然后看DLC部分,指明了以太類型0800(IP),幀大小為1314bytes(ICMP的1280bytes+IP報頭20bytes+幀14bytes) ? 再接著看下一個幀。首先看到DLC部分寫著了幀大小為762bytes,IP部分,continuation of frame 17 ,第17個幀的后續(xù)。Fragment offset 分段偏移量為1280bytes(第一個包的大小)。至此,第一個icmp echo包全部發(fā)送完畢。 ? ping –f –l 1200 [url]www.163.com[/url] -f命令:將數(shù)據(jù)報DF(don’t fragment)位設(shè)置為1(不能分段)
需要注意的是,區(qū)別兩種幀封裝格式:802標(biāo)準(zhǔn)幀和以太網(wǎng)幀 1,在802標(biāo)準(zhǔn)定義的幀格式中,長度字段是指它后續(xù)數(shù)據(jù)的字節(jié)長度,但不包括C R C檢驗(yàn)碼。RFC 1042(IEEE 802) 2,RFC 894(以太網(wǎng)) 所以,以太網(wǎng)幀報頭為目的地址6+源地址6+類型2+CRC 4=18bytes 而802幀沒有CRC,所以為14bytes。Sniffer采用的是802幀為14bytes ? ? 轉(zhuǎn)載文章: MTU: Maxitum Transmission Unit 最大傳輸單元
MSS: Maxitum Segment Size 最大分段大小 ? 由于以太網(wǎng)EthernetII最大的數(shù)據(jù)幀是1518Bytes這樣,刨去以太網(wǎng)幀的幀頭(DMAC目的地址MAC48bit=6Bytes+SMAC源MAC地址48bit=6Bytes+Type域2bytes)14Bytes和幀尾CRC校驗(yàn)部分4Bytes(這個部門有時候大家也把它叫做FCS),那么剩下承載上層協(xié)議的地方也就是Data域最大就只能有1500Bytes. 這個值我們就把它稱之為MTU。 ? 以太網(wǎng)的MTU是1500,再減去PPP的包頭包尾的開銷(8Bytes),就變成1492。 ? MSS就是TCP數(shù)據(jù)包每次能夠傳輸?shù)淖畲髷?shù)據(jù)分段。為了達(dá)到最佳的傳輸效能 TCP協(xié)議在建立連接的時候通常要協(xié)商雙方的MSS值,這個值TCP協(xié)議在實(shí)現(xiàn)的 時候往往用MTU值代替(需要減去IP數(shù)據(jù)包包頭的大小20Bytes和TCP數(shù)據(jù)段的 包頭20Bytes)所以往往MSS為1460。通訊雙方會根據(jù)雙方提供的MSS值得最小 值確定為這次連接的最大MSS值。 ? ? 先說說這MTU最大傳輸單元,這個最大傳輸單元實(shí)際上和鏈路層協(xié)議有著密切的關(guān)系,讓我們先仔細(xì)回憶一下EthernetII幀的結(jié)構(gòu)DMAC+SMAC+Type+Data+CRC。由于以太網(wǎng)傳輸電氣方面的限制,每個以太網(wǎng)幀都有最小的大小64bytes,最大不能超過1518bytes,對于小于或者大于這個限制的以太網(wǎng)幀我們都可以視之為錯誤的數(shù)據(jù)幀,一般的以太網(wǎng)轉(zhuǎn)發(fā)設(shè)備會丟棄這些數(shù)據(jù)幀。(注:小于64Bytes的數(shù)據(jù)幀一般是由于以太網(wǎng)沖突產(chǎn)生的“碎片”或者線路干擾或者壞的以太網(wǎng)接口產(chǎn)生的,對于大于1518Bytes的數(shù)據(jù)幀我們一般把它叫做Giant幀,這種一般是由于線路干擾或者壞的以太網(wǎng)口產(chǎn)生) ? 由于以太網(wǎng)EthernetII最大的數(shù)據(jù)幀是1518Bytes這樣,刨去以太網(wǎng)幀的幀頭(DMAC目的MAC地址48bit=6Bytes+SMAC源MAC地址48bit=6Bytes+Type域2bytes)14Bytes和幀尾CRC校驗(yàn)部分4Bytes(這個部門有時候大家也把它叫做FCS),那么剩下承載上層協(xié)議的地方也就是Data域最大就只能有1500Bytes這個值我們就把它稱之為MTU。這個就是網(wǎng)絡(luò)層協(xié)議非常關(guān)心的地方,因?yàn)榫W(wǎng)絡(luò)層協(xié)議比如IP協(xié)議會根據(jù)這個值來決定是否把上層傳下來的數(shù)據(jù)進(jìn)行分片。就好比一個盒子沒法裝下一大塊面包,我們需要把面包切成片,裝在多個盒子里面一樣的道理。 ? 當(dāng)兩臺遠(yuǎn)程PC互聯(lián)的時候,它們的數(shù)據(jù)需要穿過很多的路由器和各種各樣的網(wǎng)絡(luò)媒介才能到達(dá)對端,網(wǎng)絡(luò)中不同媒介的MTU各不相同,就好比一長段的水管,由不同粗細(xì)的水管組成(MTU不同 :))通過這段水管最大水量就要由中間最細(xì)的水管決定。 ? 對于網(wǎng)絡(luò)層的上層協(xié)議而言(我們以TCP/IP協(xié)議族為例)它們對水管粗細(xì)不在意它們認(rèn)為這個是網(wǎng)絡(luò)層的事情。網(wǎng)絡(luò)層IP協(xié)議會檢查每個從上層協(xié)議下來的數(shù)據(jù)包的大小,并根據(jù)本機(jī)MTU的大小決定是否作“分片”處理。分片最大的壞處就是降低了傳輸性能,本來一次可以搞定的事情,分成多次搞定,所以在網(wǎng)絡(luò)層更高一層(就是傳輸層)的實(shí)現(xiàn)中往往會對此加以注意!有些高層因?yàn)槟承┰蚓蜁笪疫@個面包不能切片,我要完整地面包,所以會在IP數(shù)據(jù)包包頭里面加上一個標(biāo)簽:DF(Donot Fragment)。這樣當(dāng)這個IP數(shù)據(jù)包在一大段網(wǎng)絡(luò)(水管里面)傳輸?shù)臅r候,如果遇到MTU小于IP數(shù)據(jù)包的情況,轉(zhuǎn)發(fā)設(shè)備就會根據(jù)要求丟棄這個數(shù)據(jù)包。然后返回一個錯誤信息給發(fā)送者。這樣往往會造成某些通訊上的問題,不過幸運(yùn)的是大部分網(wǎng)絡(luò)鏈路都是MTU1500或者大于1500。 ? 對于UDP協(xié)議而言,這個協(xié)議本身是無連接的協(xié)議,對數(shù)據(jù)包的到達(dá)順序以及是否正確到達(dá)不甚關(guān)心,所以一般UDP應(yīng)用對分片沒有特殊要求。 ? 對于TCP協(xié)議而言就不一樣了,這個協(xié)議是面向連接的協(xié)議,對于TCP協(xié)議而言它非常在意數(shù)據(jù)包的到達(dá)順序以及是否傳輸中有錯誤發(fā)生。所以有些TCP應(yīng)用對分片有要求---不能分片(DF)。 ? 花開兩朵,各表一枝,說完MTU的故事我們該講講今天的第二個豬腳---PPPoE所謂PPPoE就是在以太網(wǎng)上面跑PPP協(xié)議,有人奇怪了,PPP協(xié)議和Ethernet不都是鏈路層協(xié)議嗎?怎么一個鏈路層跑到另外一個鏈路層上面去了,難道升級成網(wǎng)絡(luò)層協(xié)議了不成。其實(shí)這是個誤區(qū):就是某層協(xié)議只能承載更上一層協(xié)議。 為什么會產(chǎn)生這種奇怪的需求呢?這是因?yàn)殡S著寬帶接入(這種寬帶接入一般為Cable Modem或者xDSL或者以太網(wǎng)的接入)由于以太網(wǎng)缺乏認(rèn)證計費(fèi)機(jī)制而傳統(tǒng)運(yùn)營商是通過PPP協(xié)議來對撥號等接入服務(wù)進(jìn)行認(rèn)證計費(fèi)的,所以就出了這么一個怪胎:PPPoE。(有關(guān)PPPoE的詳細(xì)介紹參見V大以及本站其他成 員的一些介紹文章,我就不啰里啰唆的了) ? PPPoE帶來了好處,也帶來了一些壞處,比如:二次封裝耗費(fèi)資源,降低了傳輸效能等等,這些壞處俺也不多說了,最大的壞處就是PPPoE導(dǎo)致MTU變小了以太網(wǎng)的MTU是1500,再減去PPP的包頭包尾的開銷(8Bytes),就變成1492。 ? 如果兩臺主機(jī)之間的某段網(wǎng)絡(luò)使用了PPPoE那么就會導(dǎo)致某些不能分片的應(yīng)用無法通訊。 ? 這個時候就需要我們調(diào)整一下主機(jī)的MTU,通過降低主機(jī)的MTU,這樣我們就能夠順利地進(jìn)行通訊了。 ? 當(dāng)然對于TCP應(yīng)用而言還有另外的解決方案。馬上請出今天第三位豬腳:MSS。 MSS最大傳輸大小的縮寫,是TCP協(xié)議里面的一個概念。MSS就是TCP數(shù)據(jù)包每次能夠傳輸?shù)淖畲髷?shù)據(jù)分段。為了達(dá)到最佳的傳輸效能TCP協(xié)議在建立連接的時候通常要協(xié)商雙方的MSS值,這個值TCP協(xié)議在實(shí)現(xiàn)的時候往往用MTU值代替(需要減去IP數(shù)據(jù)包包頭的大小20Bytes和TCP數(shù)據(jù)段的包頭20Bytes)所以往往MSS為1460。通訊雙方會根據(jù)雙方提供的MSS值得最小值確定為這次連接的最大MSS值。 ? ? 我們回過頭來看前言里面的那個問題,我們試想一下,如果我們在中間路由器上把每次TCP連接的最大MSS進(jìn)行調(diào)整這樣使得通過PPPoE鏈路的最大MSS值加上數(shù)據(jù)包頭包尾不會超過PPPoE的MTU大小1492這樣就不會造成無法通訊的問題。 ? 所以上面的問題可以通過ip tcp adjust-mss 1452來解決。 ? 當(dāng)然問題也可以通過修改PC機(jī)的MTU來解決。 ? [后記] Cisco在IOS 12.2(4)T及以后的版本支持修改MSS大小的特性 ? Cisco的TCP Adjust MSS Feature: ? The TCP MSS Adjustment feature enables the configuration of the maximum segment size (MSS) for transient packets that traverse a router, specifically TCP segments in the SYN bit set, when Point to Point Protocol over Ethernet (PPPoE) is being used in the network. PPPoE truncates the Ethernet maximum transmission unit (MTU) 1492, and if the effective MTU on the hosts (PCs) is not changed, the router in between the host and the server can terminate the TCP sessions. The ip tcp adjust-mss command specifies the MSS value . the intermediate router of the SYN packets to avoid truncation. ? ? ? ? ? ? ? 附:MS文章---路徑最大傳輸單元 (PMTU) 黑洞路由器 當(dāng)路由器必須將 IP 包分段但又因 DF標(biāo)記設(shè)置為 1 而不能分段時,路由器可采用以下任一種方式:
| ? | 發(fā)送符合 RFC 792 中最初定義的“ICMP Destination Unreachable-Fragmentation Needed and DF Set”消息,然后丟棄該包。 原始消息格式中不包含有關(guān)轉(zhuǎn)發(fā)失敗的鏈路的 IP MTU 的信息。 |
| ? | 發(fā)送符合 RFC 1191 中重新定義的“ICMP Destination Unreachable-Fragmentation Needed and DF Set”消息,然后丟棄該包。此新消息格式包含一個 MTU字段,可指出轉(zhuǎn)發(fā)失敗的鏈路的 IP MTU。 RFC 1191 定義了路徑 MTU (PMTU)發(fā)現(xiàn),它使得成對的 TCP 對等方能夠動態(tài)地發(fā)現(xiàn)二者之間路徑的 IP MTU,從而發(fā)現(xiàn)該路徑的 TCP MSS。一旦收到符合 RFC 1191定義的“Destination Unreachable-Fragmentation Needed and DF Set”消息,TCP就會將該連接的 MSS 調(diào)整為指定 IP MTU減去 TCP 和 IP報頭的大小。這樣,在該 TCP 連接上發(fā)送的后續(xù)包就不會超過最大大小,無需分段即可在該路徑上傳輸。 |
| ? | 直接丟棄包。 直接丟棄需分段但 DF 標(biāo)記設(shè)置為 1的包的路由器稱為 PMTU 黑洞路由器。 |
| ? | 此處的 destination 可以是一個 IP地址,也可以是一個可解析為 IP 地址的名稱。 |
| ? | -f 選項可將 DF標(biāo)記設(shè)置為 1。 |
| ? | -l 選項指定 ICMP Echo消息的有效負(fù)載的大小。 |
| ? | ICMPEchoPayloadSize 是 ICMP Echo消息的有效負(fù)載的字節(jié)數(shù)。 |
PMTU 黑洞路由器的解決方案和工作方法
1. 配置中間路由器以支持路由器端 PMTU發(fā)現(xiàn)
解決專用 Intranet 中的 PMTU黑洞路由器問題的最簡單的方法,是將您的所有路由器配置為支持路由器端 RFC 1191,并支持發(fā)送 ICMP Destination Unreachable-Fragmentation Needed and DF Set消息(其中帶有轉(zhuǎn)發(fā)失敗的鏈路的 IP MTU)。這與將路由器配置為支持主機(jī)端 RFC 1191是有區(qū)別的,后者的路由器會對自己的 TCP 連接使用 PMTU發(fā)現(xiàn)。 在 Internet 上進(jìn)行通信時,通常不太可能將 Internet路由器配置為支持路由器端 PMTU 發(fā)現(xiàn)。在這種情況下,您可以使用以下各節(jié)介紹的工作方法。 3. 確定最佳 IP MTU并通過 MTU 注冊表設(shè)置來設(shè)置該值 啟用 PMTU 黑洞路由器檢測的替代方法,是根據(jù)本文前面部分的介紹使用 Ping工具確定所有相關(guān)路徑的 PMTU 值,然后使用注冊表設(shè)置手動配置發(fā)送接口的 IP MTU。 該方法通過不停發(fā)送 DF 標(biāo)記設(shè)置為 1,大小又不會導(dǎo)致 PMTU黑洞路由器將其直接丟棄的 IP 包來避開 PMTU黑洞路由器。手動指定 IP MTU 意味著所有通信量(包括本地子網(wǎng)通信量和不包含 PMTU黑洞路由器的路徑上的通信量)都將使用較小的 IP MTU。 確定有效的 PMTU 后,您可以通過以下步驟手動指定 TCP/IP接口的 IP MTU:| 1. | 打開 Network Connections 文件夾,記下 LAN連接的名稱,如“Local Area Connection”。 |
| 2. | 單擊開始,單擊“運(yùn)行”,鍵入“regedit.exe”,然后單擊“確定”。 |
| 3. | 使用注冊表編輯器工具的樹圖(左邊窗格)打開如下鍵:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control \Network\{4D36E972-E325-11CE-BFC1-08002BE10318} |
| 4. | 此鍵下面是與已安裝的 LAN 連接相關(guān)聯(lián)的全局唯一標(biāo)識符 (GUID)的一個或多個鍵。這些 GUID 鍵中的每一個都有一個 Connection子鍵。打開每個 GUID\Connection 鍵,尋找值與第一步中記下的 LAN連接的名稱匹配的 Name 設(shè)置。 |
| 5. | 如果找到包含與 LAN 連接匹配的 Name設(shè)置的 GUID\Connection 鍵,請寫下或記下該 GUID值。 |
| 6. | 使用注冊表編輯器的樹視圖打開如下鍵:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip \Parameters\Interfaces\GUID |
| 7. | 右鍵單擊樹視圖中的“GUID”鍵,指向“新建”,然后單擊“雙字節(jié)值”。 |
| 8. | 在注冊表編輯器工具的內(nèi)容窗格(右窗格)中,為新注冊表設(shè)置的值鍵入 MTU,然后按 ENTER。 |
| 9. | 在內(nèi)容窗格中,雙擊新的 MTU 設(shè)置,并在“編輯雙字節(jié)值”對話框中選擇“十進(jìn)制”,然后在“數(shù)值數(shù)據(jù)”中鍵入有效 MTU 值。 |
| 10. | 單擊“確定”。關(guān)閉注冊表編輯器工具。 |
| 11. | 重新啟動計算機(jī)使 MTU 設(shè)置生效。 |
組網(wǎng):
? ? PC-AR2831-AR2880-CISCO設(shè)備組成的核心網(wǎng)-SERVER
網(wǎng)絡(luò)運(yùn)行MPLS VPN;AR2880為PE;AR2831為CE,PE、CE間運(yùn)行OSPF,多CE配置;路由器各接口MTU、TCP MSS值采用默認(rèn)設(shè)置
AR2880:Version 3.30, Release 0008
AR2831:Version 3.30, Release 0008
現(xiàn)象1:
? ?? ? AR2880路由器的以太口MTU使用缺省設(shè)置時,使用的OA系統(tǒng)(BS架構(gòu))部分流程無法運(yùn)行,上網(wǎng)發(fā)郵件時附件無法粘貼;但是在cisco設(shè)備上,同樣的組網(wǎng)沒有發(fā)現(xiàn)問題;
現(xiàn)象2:
? ?? ? 將AR2880路由器的以太口MTU改為512測試,郵件附件可以粘貼,但OA主頁打開后無內(nèi)容,刷新不了;將AR2880路由器的以太口MTU改為1200測試,郵件附件可以粘貼,OA主頁可以正常顯示,但是點(diǎn)擊OA系統(tǒng)的"起草公文"無頁面彈出,正常狀況下應(yīng)彈出新建公文頁面;
告警信息:
無??
原因分析:
原因分析:
可能是應(yīng)用軟件問題;可能是MTU、TCP MSS值協(xié)商配置問題;
具體分析:
1、接口MTU、TCP MSS采用缺省值1500時,無法貼附件;
這是因?yàn)閼?yīng)用了三層MPLS VPN技術(shù),增加了8bit的標(biāo)簽,MTU值協(xié)商出現(xiàn)問題。
AR28XX路由器默認(rèn)在接口上自動分片,所以在普通的應(yīng)用中采用默認(rèn)值不會影響業(yè)務(wù)。但路由器接口上收到一個報文長度大于本接口MTU值的報文,如果該報文被強(qiáng)制打上不分片的標(biāo)記,將丟棄報文,并返回一個ICMP差錯報文(type 3,code 4),通知報文發(fā)起者丟棄原因。報文發(fā)起者將發(fā)送比較小的報文。通過多次上述報文協(xié)商,將得到對于某一個固定路徑上的最小Mtu值,這個過程叫做Mtu Discovery,通過MTU Discovery來確定報文路徑上最小可通過的MTU;如果兩個設(shè)備相連,沒有MTU Discovery功能并且MTU值不一致,將可能導(dǎo)致丟棄報文。只有把雙方設(shè)備的Mtu為對端設(shè)備MRU的最小值,才能正常通信。由于某些組網(wǎng)考慮到網(wǎng)絡(luò)安全問題和性能,往往會把ICMP報文過濾掉,引起Mtu Discovery不能正常運(yùn)行;應(yīng)用軟件由于程序算法問題或根本沒有相應(yīng)協(xié)商功能,也會導(dǎo)致了部分應(yīng)用異常。
2、更改接口MTU值以后,仍然有部分業(yè)務(wù)不正常;
這是因?yàn)?/span>TCP MSS值協(xié)商的問題。
?MSS值的計算方法是:MSS=MTU-IP-TCP(如果有其他pppoe、加密報文頭的話也同樣減去),也就是說MSS值其實(shí)就是TCP所承載的凈載荷的長度。由于AR28XX接口缺省的MTU是1500字節(jié),故一般要求加密報文頭+鏈路層開銷+IP頭(20-60字節(jié))+TCP報文(20字節(jié))小于1500字節(jié),即TCP分片配置1200左右比較適合。缺省情況下,TCP報文不分片。因此TCP MSS不匹配也會引起部分應(yīng)用異常。
處理過程:
? ?? ?本例中通過修改路由器接口MTU、TCP MSS值,解決問題。
? ???具體報文mtu、tcp mss大小要根據(jù)具體應(yīng)用,按經(jīng)驗(yàn)值進(jìn)行嘗試,選擇最佳值;其中MTU值的選擇可以通過ping命令設(shè)置不分片來進(jìn)行測試;TCP MSS值的選擇則可以通過MTU減去相應(yīng)其它加密、鏈路層開銷、IP頭、TCP頭等字節(jié)計算。
? ???具體過程如下:
? ???1、本例中使用cisco路由器時相關(guān)應(yīng)用正常。初步估計是mtu值問題,但是對普通應(yīng)用AR28系列路由器會自動分片,不會影響業(yè)務(wù)。測試發(fā)現(xiàn)在client上ping大包的時候,如果不設(shè)置不允許分片,業(yè)務(wù)正常。看來客戶應(yīng)用中做了不允許分片的設(shè)置或其它原因mtu協(xié)商錯誤。更改路由器接口mtu為1500-8=1492以后,業(yè)務(wù)正常。
? ???2、更改接口mtu以后,其它部分業(yè)務(wù)還不正常。分析原因是tcp mss值的問題。減小tcp mss值8字節(jié)1460-8=1452,但是還有部分業(yè)務(wù)不正常。詢問軟件集成商,得到答復(fù)部分軟件中使用了加密技術(shù)。而且不同的應(yīng)用加密強(qiáng)度不同。
? ???3、逐步調(diào)整路由器接口的tcp mss值,減到到1200以后,所有業(yè)務(wù)測試通過。
命令說明:
? ???1、mtu命令用來設(shè)置以太網(wǎng)接口的MTU(最大傳輸單元),undo mtu命令用來恢復(fù)MTU的缺省值。缺省的MTU為1500。使用mtu命令改變接口最大傳輸單元MTU后,需要先對接口執(zhí)行shutdown命令,再執(zhí)行undo shutdown命令將接口重啟,以保證設(shè)置的MTU生效。
? ???2、tcp mss命令用來配置TCP報文分片,undo tcp mss命令用來取消TCP報文分片。 ? ? ? ? ? ? ? 個人總結(jié): ? ? MTU=MSS+IP header+TCP header+鏈路層開銷+加密報文頭(某些程序加密強(qiáng)度不一樣) ? MTU,對UDP和TCP報文都檢測,當(dāng)超過時,如果報文DF=0,就進(jìn)行分段,如果DF=1,就丟棄,同時返回RFC 792定義的ICMP Type3 Code 4(ICMP Destination Unreachable-Fragmentation Needed and DF Set)或 RFC 1191定義的ICMP包(包含轉(zhuǎn)發(fā)失敗鏈路的MTU),主機(jī)收到后會調(diào)節(jié)MSS以適應(yīng),后續(xù)包不會分片就可進(jìn)行傳輸。如果兩端之間某Router配置了ACL ,deny掉所有的ICMP,那就無法收到咯。 ? MSS其實(shí)就是TCP報文payload大小。一般的應(yīng)用軟件,當(dāng)客戶端和服務(wù)器端在建立TCP連接的時候需要根據(jù)實(shí)際傳輸?shù)膱笪拇笮韰f(xié)商TCP的窗口大小MSS。Tcp連接成功后會進(jìn)行兩次滑動窗口的協(xié)商,一次是pc與server,一次是與網(wǎng)關(guān),然后在兩次協(xié)商里選擇一個較小的值作為窗口來發(fā)送報文。 ? 當(dāng)協(xié)商出來的MSS比較大時,加上IP header+TCP header+鏈路層開銷+加密報文頭后,就有可能大于MTU,當(dāng)DF=1時,就會丟棄掉。 ? 正如????所說:“對于UDP協(xié)議而言,這個協(xié)議本身是無連接的協(xié)議,對數(shù)據(jù)包的到達(dá)順序以及是否正確到達(dá)不甚關(guān)心,所以一般UDP應(yīng)用對分片沒有特殊要求。”所以在路由器上進(jìn)行ip tcp mss命令只對tcp packet檢測就夠了。 ? 再提供一個案例:MSN是使用https方式登陸的,有時會有突發(fā)大報文,而且DF位是設(shè)置為1的。雖然目前大部分出現(xiàn)的故障現(xiàn)象都是:不能發(fā)送附件;不能打開網(wǎng)頁等。都是在PPPoE中發(fā)生的。但就算源和目的網(wǎng)絡(luò)的MTU都是1500,但是由于中間經(jīng)過的節(jié)點(diǎn)鏈路可能存在不同,可能少于1500。或者在傳輸過程中的某個路由器設(shè)置了較小的MTU。而往往配置路由器或交換機(jī)時,習(xí)慣禁止了所有的ICMP信息,這樣的話那路由器就無法返回ICMP 3/4的包給源主機(jī)了。 RFC 2923(TCP Problems with Path MTU Discovery)。 ? 所以,有時候出現(xiàn)的故障,不止要調(diào)試MTU值,還要調(diào)試MSS值,才能使所有應(yīng)用正常 其實(shí)碰到此問題時,最好是借助Sniffer抓包分析(不過奇怪,銳捷NBR1000無法抓到ICMP Type 3 Code 4的包,所以無法抓包提供分析圖,好可惜!是路由器不支持還是其他原因,以后有機(jī)會考證) ? 附:Sniffer抓包協(xié)助理解分片過程以及DF ? ? 上圖是:Ping –l 2000 [url]www.163.com[/url] 首先看IP header,More fragments位為1,向?qū)Ψ酵ǜ娲藬?shù)據(jù)包為多幀發(fā)送(分段),total lengt=1300bytes(1280bytes+IP報頭20bytes)。再看ICMP處,可以看到分了兩個包,大小分別為1280bytes和728bytes,2008 bytes of reassembled data指明重組后的數(shù)據(jù)為2008bytes(icmp包頭8bytes,數(shù)據(jù)2000bytes)。然后看DLC部分,指明了以太類型0800(IP),幀大小為1314bytes(ICMP的1280bytes+IP報頭20bytes+幀14bytes) ? 再接著看下一個幀。首先看到DLC部分寫著了幀大小為762bytes,IP部分,continuation of frame 17 ,第17個幀的后續(xù)。Fragment offset 分段偏移量為1280bytes(第一個包的大小)。至此,第一個icmp echo包全部發(fā)送完畢。 ? ping –f –l 1200 [url]www.163.com[/url] -f命令:將數(shù)據(jù)報DF(don’t fragment)位設(shè)置為1(不能分段)
本文出自 “我是木頭” 博客,請務(wù)必保留此出處http://infotech.blog.51cto.com/391844/123859
總結(jié)
以上是生活随笔為你收集整理的MTU MSS 详解记录的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 步步高回应“网传即将倒闭”:一切正常
- 下一篇: Boost库之function的使用