• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 手機與無線通信 > 設計應用 > IP數據報的分片與重組分析

    IP數據報的分片與重組分析

    作者: 時間:2017-06-12 來源:網絡 收藏
    前言

      在IP協議的報頭中,除了字段,還有幾個字段是非常重要的,這就是我們今天要討論的標識符、標志位以及偏移量,這3個字段在的分片與重組中,是非常重要的字段。

      我們都知道,不同類型的網絡,其MTU(最大傳輸單元)各不相同,如以太網中,最大的傳輸幀為1518字節,FDDI為4500字節,令牌環幀在4500字節到17800字節之間,而IP協議的一個重要功能,就是能夠對傳輸的數據大于硬件接口的MTU時,對其進行分段傳輸。即大于MTU的數據報將被分為2個或多個的合適的大小被傳輸。一個分片在到達接收主機的路徑中,還可能被繼續分片,因此,分片的可能會以不同的路徑傳輸到接收主機,接收主機通過一系列的重組,將其還原為一個完整的,再提交給上層協議處理。

      IP標識符

      IP標識符、標志、偏移量3個字段在IP報頭中的位置如下圖1所示:

    本文引用地址:http://www.czjhyjcfj.com/article/201706/353701.htm
      在發送數據報前,發送主機給每個數據報一個ID值,放在16位的標識符字段中。此ID用于標識唯一的數據報或數據流。接收主機利用此ID對收到的數據報進行重組。正如前面所說,當分片的IP數據報從源地址發送到目的地址的時候,由于網絡延遲或者不同的傳輸路徑的關系,在到達目的主機時,這些分片數據報并不總是有序的排列,而是處于一種無序狀態,因此,接收主機便用此ID判斷接收的這些分片數據報是否屬于同一個數據流,然后再進行重組(重組將在偏移量中討論)。

    標志

      標志字段在IP報頭中占3位,第1位作為保留,置0;第2位,分段,有兩個不同的取值:該位置0,表示可以分段;該位置1,表示不能分段;第3位,更多分段,同樣有兩個取值:該位置0,表示這是數據流中的最后一個分段,該位置1,表示數據流未完,后續還有分段,當一個數據報沒有分段時,則該位置0,表示這是唯一的一個分段。見下圖2:


      當目的主機接收到一個IP數據報時,會首先查看該數據報的標識符,并且檢查標志位的第3位是置0或置1,以確定是否還有更多的分段,如果還有后續報文,接收主機則將接收到的報文放在緩存直到接收完所有具有相同標識符的數據報,然后再進行重組。



      更多分段位能夠讓接收主機判斷分片的數據報是否發送完畢;而分段位除了能夠將將數據報分段,而且還能夠實現另一個用途,在某些情況下,可以利用分段位動態的找到網絡端到端的MTU大小。如果路由器配置時,置此位為0,則當主機嘗試發送一個比傳輸路徑上的數據報大的幀時,路由器不轉發該幀,而是丟棄,并給源主機發送ICMP報文,說明該數據報太大,源主機利用此信息調整數據報大小,再重新發送。

      偏移量

      13位的偏移量字段用來表示分段的數據報在整個數據流中的位置,即相當于分片數據報的順序號。發送主機對第一個數據報的偏移量置為0,而后續的分片數據報的偏移量則以網絡的MTU大小賦值。偏移量對于接收方進行數據重組的時候,這是一個關鍵的字段。對于分片的數據段(單位:字節)必須為8的整數倍,否則IP無法表達其偏移量。如下圖3所示:



      以太網中,源主機如果需要通過UDP傳送3000字節的數據到目的主機,這時的分段情況如下圖4所示(在同一網段):



      此處需要注意的是對于分片1的報頭,相對于其他兩個分片的報頭而言,要多出8個字節的報頭開銷,因此,在計算實際傳輸的數據凈載荷時,分片1要多減去8字節UDP報頭。最后,接收主機通過此偏移值將數據重組成完整的數據報。

      總結

      IP協議雖然是我們司空見慣的一個協議,但是,對于其報頭結構,報頭中每個字段的含義,還是需要我們不斷學習,才能真正理解IP協議的精髓。



    關鍵詞: IP數據報 TTL UDP協議

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 柳州市| 高安市| 华池县| 福建省| 迁西县| 定西市| 平阴县| 会同县| 商洛市| 清涧县| 陕西省| 阿图什市| 永济市| 文化| 平乐县| 徐闻县| 巴林右旗| 平潭县| 伊吾县| 乌鲁木齐县| 大邑县| 绩溪县| 汝阳县| 石渠县| 江安县| 印江| 延安市| 广西| 丘北县| 涿鹿县| 营口市| 广安市| 甘孜县| 肇东市| 赤水市| 龙口市| 阳西县| 莒南县| 安溪县| 衡东县| 晋中市|