報文分段、IP資料包、幀的長度約束

來源:互聯網
上載者:User

轉載留存以備學習

  1、資料連結層對資料幀的長度都有一個限制,也就是鏈路層所能承受的最大資料長度,這個值稱為傳輸單元最大值,即MTU。以乙太網路為例,這個值通常是1500位元組。

  2、對於IP資料包來講,也有一個長度,在IP包頭中,以16位來描述IP包的長度,也就是說,一個IP包,最長可能是65535位元組(多數網路裝置將其限制在576位元組以內)。

  3、結合以上兩個概念,第一個重要的結論就出來了,如果IP包的大小,超過了MTU值,那麼就需要分區,也就是把一個IP包分為多個,這個概念非常容易理解,一個載重5T的卡車,要拉10T的貨,它當然就得分幾次來拉了。

  4、IP分區是很多資料常講的內容,但是我倒是覺得分不分區其實不重要,重要的是另一個東西。一個資料包穿過一個大的網路,它其間會穿過多個網路,每個網路的MTU值是不同的。我們可以設想,如果接受/發送端都是乙太網路,它們的MTU都是1500,我們假設發送的時候,IP資料包會以1500來封裝,然而,不幸的是,傳輸中有一段X.25網,它的MTU是576,這會發生什麼呢?我想,這個才是我們所關心的。

  當然,結論是顯而易見的,這個資料包會被再次分區,咱開始用火車拉,到了半路,不通火車,只通汽車,那一車貨會被分為很多車……僅此而已,更重要的是,這種情況下,如果IP包被設定了“不允許分區標誌”,那會發生些什麼呢?對,資料包將被丟棄,然事收到一份ICMP(Internet Control Message Protocol,Internet控制報文協議)不可達差錯,告訴你,需要分區!

  這個網路中最小的MTU值,被稱為路徑MTU,我們應該有一種有效手段,來發現這個值,最笨的方法或許是先用traceroute查看所有節點,然後一個個ping……

  5、到了傳輸層,也會有一個最大值的限制,當然,對於只管發,其它都不管的UDP來說,不再我們討論之列。這裡說的是TCP協議。說到大小,或許會讓人想到TCP著名的滑動視窗的視窗大小,它跟收發兩端的緩衝有關,這裡討論的是傳輸的最大資料包大小,所以,它也不在討論之列。

  TCP的選項欄位中,有一個最大報文段長度(MSS,Maximum Segment Size),表示了TCP傳往另一端的最大資料的長度,當一個串連立時,串連的雙方都要通告各自的MSS,也就是說,它說是與TCP的SYN標誌在一起的。當然,對於傳輸來講,總是希望MSS越大越好,現在超載這麼嚴重,誰家不希望多拉點貨……但是,MSS總是有個限制的,也就是MTU-IP頭長度-TCP頭長度,對於乙太網路來講

  它通常是1500-20-20=1460,雖然總是希望它能很大(如1460),但是大多數BSD實現,它都是512的倍數,如1024……

  6、回到分區上來,例如,在Win2000下執行如下命令:

  "ping 192.168.0.1 -l 1473

  按剛才的說法,1473+20(ip頭)+8(icmp頭)=1501,則好大於1500,它會被分區。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.