IP協議(網路層協議)

一萬HOURS發表於2017-06-20

1 IP協議功能

  • 定址和路由
  • 傳遞服務
    • 不可靠,可靠性由上層協議提供
    • 無連線
  • 資料包分段和重組

2 IP協議

IP資料包格式

這裡寫圖片描述

其中固定部分為20byte,可變部分最大為40byte,因此IP資料包的首部大小為20~60byte。

版本

  • 佔4bit,指IP協議的版本。目前的IP協議版本號為4,即IPv4

首部長度

  • 佔4bit,可表示的最大數值是15個單位(一個單位為4位元組),因此IP首部長度的最大值是60位元組

服務型別

  • 指示期望獲得哪種型別的服務
  • 1998 年這個欄位改名為區分服務
  • 只有在網路提供區分服務(DiffServ)時使用
  • 一般情況下不使用,通常IP分組的該欄位(第2位元組)的值為00H
  • 佔8bit,用來獲得更好的服務,這個欄位以前一致沒有被人使用。其中D表示延時,T表示吞吐量,R表示可靠性,C表示代價。最後一位沒有使用,但是必須為0,否則非法
  • 現在常用的為差分服務,最後兩位未使用。如果前6位為XXXXX0的形式表示該IP資料包由因特網指派,為XXXX11表示由本地指派,為XXXX01表示臨時或實驗性的IP資料包

總長度

  • 佔16bit,指首部和資料之和的長度,單位為位元組。因此資料包的最大長度為65535位元組,總長度必須不超過最大傳送單元MTU
  • 最小的IP分組首部: 20B
  • IP分組可以封裝的最大資料: 65535-20=65515B

標識

  • identification佔16bit,它是一個計數器,用來產生資料包的標識止
  • 只有當同一個資料段被分成不同的IP資料包,其標識才相同

標誌

  • 佔3bit,目前只有後兩個位元有意義
  • 標誌欄位的最低位是MF(More Fragment),MF=1表示後面還有分片,MF=0表示最後一個分片
  • 標誌欄位中間的一位是DF(Don’t Fragment),只有當DF=0時才允許分片
  • 最高位保留

片偏移

  • 13bit,片偏移指出較長的分組分片後某片在原分組中的相對位置,偏移以8個位元組為偏移單位

這裡寫圖片描述

生存時間

  • 8bit,記為TTL(Time To Live),IP分組在網路中可以通過的路由器數(或跳步數)。這是為了限制資料包在網路中的生存時間,其單位最初是秒,但為了方便,現在都用“跳數”作為TTL的單位。資料包每經過一個路由器,其TTL值就減1
  • 如果TTL=0,路由器則丟棄該IP分組

協議

  • 協議(8bit)欄位指出此資料包攜帶的資料使用何種協議,以便目的主機的IP層將資料包部分上交給哪個處理過程
  • 指示IP分組封裝的是哪個協議的資料包
  • 實現複用/分解
  • E.g. 6為TCP,表示封裝的為TCP段; 17為UDP, 表示封裝的是UDP資料包

這裡寫圖片描述

首部校驗和

  • 首部校驗和(16bit)欄位只校驗資料包的首部,不包括資料部分。這裡不採用CRC檢驗碼而採用簡單的計算方法
  • 實現對IP分組首部的差錯檢測
  • 計算校驗和時,該欄位置全0
  • 採用反碼算數運算求和,和的反碼作為首部校驗和欄位
  • 逐跳計算、逐跳校驗

源地址、目的地址

  • 源地址和目的地址都各佔4個位元組
  • 分別標識傳送分組的源主機/路由器(網路介面)和接收分組的目的主機/路由器(網路介面)的IP地址

IP資料包首部的可變部分

  • IP首部的可變部分就是一個選項欄位,欄位佔長度可變,範圍在1~40B之間:攜帶安全、源選路徑、時間戳和路由記錄等內容,用來支援排錯、測量以及安全等措施,內容很豐富
  • 選項欄位的長度可變,取決於所選擇的專案
  • 增加首部的可變部分是為了增加IP資料包的功能,但這同時也使得IP資料包的首部長度稱為可變的。這就增加了每一個路由器處理資料包的開銷
  • 實際上這些選項很少使用

填充欄位

  • 填充欄位佔長度可變,範圍在0~3B之間:目的是補齊整個首部,符合32位對齊,即保證首部長度是4位元組的倍數

3 IP分片

3.1 最大傳輸單元(MTU)

  • 網路鏈路存在MTU (最大傳輸單元)—鏈路層資料幀可封裝資料的上限
    • 不同鏈路的MTU不同

這裡寫圖片描述

3.2 IP分片與重組

  • 大IP分組向較小MTU鏈路轉發時, 可以被“分片” (fragmented)

    • 1個IP分組分為多片IP分組
    • IP分片到達目的主機後進行“重組”(reassembled)
  • IP首部的相關欄位用於標識分片以及確定分片的相對順序

    • 總長度、標識、標誌位和片偏移

這裡寫圖片描述

3.3 分片相關的欄位

這裡寫圖片描述

  • 標識欄位佔16位:標識一個IP分組

    • IP協議利用一個計數器,每產生IP分組計數器加1,作為該IP分組的標識
  • 標誌位欄位佔3位:

    • DF (Don’t Fragment)
    • DF =1:禁止分片
    • DF =0:允許分片

    • MF (More Fragment)

    • MF =1:非最後一片
    • MF =0:最後一片(或未分片)

這裡寫圖片描述

  • 片偏移欄位佔13位:一個IP分組分片封裝原IP分組資料的相對偏移量
    • 片偏移欄位以8位元組為單位

3.4 IP分片過程

  • 假設原IP分組總長度為L,待轉發鏈路的MTU為M
  • 若L>M,且DF=0,則可以/需要分片
  • 分片時每個分片的標識複製原IP分組的標識
  • 通常分片時,除最後一個分片,其他分片均分為MTU允許的最大分片
  • 一個最大分片可封裝的資料應該是8的倍數, 因此, 一個最大分片可封裝的資料為:

    這裡寫圖片描述

  • 需要的總片數為:

    這裡寫圖片描述

  • 每片的片偏移欄位取值為:

    這裡寫圖片描述

  • 每片的總長度欄位為:

    這裡寫圖片描述

  • 每片的MF標誌位為:

    這裡寫圖片描述

舉例:

這裡寫圖片描述

相關文章