IP數據報格式以及分片


網絡層協議主要有4個:

ARP協議

IP協議 最重要

ICMP協議

IGMP協議

IP數據報的格式

IP數據報要是比較大,就需要分隔,分隔后的小單元就是分組

固定部分:顧名思義一定要有,所有IP數據報都有,大小20字節

可變部分:大多數情況下都是沒有可變部分的。可有可無optiona

上圖是IP數據報首部的圖,固定部分+可變部分

數據部分其實就是傳輸層。等到傳輸層再講

  • 版本字段:IPV4 還是IPV6

  • 首部長度 占4bit,理論范圍是0-15,但是考慮到固定部分必須有20字節,它的范圍就是5-15 單位是4B 最小5的話,\(5✖️4B=20B(固定長度)\)

  • 區分服務 這個字段很少用,有時候急着發送的時候會有加急選項。反正很少用

  • 總長度 首部長度+數據部分長度 整個IP數據報的長度 單位是1B

    IP數據報長度上限值 是$2^{16}-1=65535B $ 但是考慮到數據鏈路層的MTU,實際中還是不會取到65535,早早都已經分片了

  • 標識

  • 標志

  • 片偏移

上面三個都是和IP數據報分片成分組相關

  • 生存時間TTL :每經過一個路由器,TTL就會減一,變成0就丟棄。防止不能傳輸到目的的數據報不會在網絡中無限傳輸,讓它傳一會就死掉

  • 協議字段 數據部分使用的的協議(傳輸層使用的協議)

  • 首部檢驗和:

    首部的這些字段中,諸如生存時間、片偏移、標識每經過一個路由器都會發生變化。首部檢驗和就是看整個首部有沒有變化到出錯。

  • 源地址

  • 目的地址 32位IP地址

  • 可選字段 可有可無。有的話,可能會增強一些功能。

  • 填充字段。補0 自然要填充成4B的整數倍,呼應首部長度4B單位的要求

IP數據報分片的過程

以太網中,鏈路層的數據部分最大傳輸單元MTU1500字節。

而鏈路層的數據部分就是一個IP數據報,也就是一個IP數據報的整個長度都不能超過1500字節! 要是IP數據報的首部是20字節,那么數據部分的最大長度就是1480字節

對於有的IP數據報的長度要是超過1500B,多數情況都需要分片 ,分成IP分組;但是也有例外,要是IP數據報不同意分組,這個數據報就不能傳輸給鏈路層封裝,就返回一個錯誤,ICMP錯誤!

分片的話,就要結合IP數據報的三個字段:

  • 標識: 同一數據報的分片 都會使用相同的標識。最終組合起來就是靠着標識

  • 標志:

    標志字段有三位,只要后兩位有意義 \(X ~\_~\_\)

    中間位表示"禁止分片", don't fragment (DF):1 表示不許分片 0 :表示允許分片

    最低位表示 "更多分片" more fragment (MF) :1 表示后面還有分片

    0: 表示后面沒有分片/最后一個分片了

  • 片偏移:

IP數據報分組分片后,某一個片在原來片中的相對位置,以8B為單位。解決中間分片的位置關系 , 占13bit 除了最后一個分片,每一個分片都是8B的整數倍

這個MTU是1420 不同數據鏈路層協議的MTU不同

分片2的偏移量是 \(1400B /8=175\)

分片3的偏移量 \(2800B /8=350\)

IP數據報格式幾個字段格式單位區分:

總長度 ——1B

首部長度——4B

片偏移——8B


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM