1. 程式人生 > >IP UDP包頭詳解

IP UDP包頭詳解

ride 標記 table 插入 cto ip 地址 ble 定義 ipv

技術分享圖片技術分享圖片

各字段功能:

1、版本號(Version):長度 4 bit 。標識目前采用的 IP 協議的版本號。一般的值為 0100(IPv4),0110(IPv6)

版本號 版本
0 保留
1~3 未分配
4 Internet 協議版本 4(IPv4)
5 ST 數據報(Datagram)
6 簡單 Internet 協議(SIP)
6 IPv6
7 TP / IX
8 P Internet 協議(PIP)
9 使用更大地址的 TCP 和 UDP(TUBA)
10~14 未分配
15 保留

2、IP 報頭長度(Header Length):長度 4 bit 。這個字段的作用是為了描述 IP 報頭的長度,因為在 IP 報頭中有變長的可選部分。該部分占 4 個 bit,長度單位為 4 個字節,即本區域值 = IP 頭部長度(單位為字節)/ 長度單位(4 個字節)。因此,一個 IP 報頭的長度最長為 “ 1111 ”,即 15 x 4 個字節 = 60 個字節。IP 報頭最小長度為 20 字節。

Header Length Header Length 所代表的實際的 IP 報頭長度
0101 20 字節
0110 24 字節
0111 28 字節
1101 52 字節
1110 56 字節
1111 60 字節

3、服務類型(Type of Service):長度 8 bit 。8 位按位被如下定義:PPP DTRC0

**TOS只表示用戶的請求,不具有強制性,實際應用中很少用,路由器通常忽略TOS字段。**
  • PPP:(Precedence)前 3 位,定義包的優先級,取值越大數據越重要。優先級主要用於QoS,表示從0(普通級別)到7(網絡控制分組)的優先級。
    - 000 普通(Routine)
    - 001 優先的(Priority)
    - 010 立即的發送(Immediate)
    - 011 閃電式的(Flash)
    - 100 比閃電還閃電式的(Flash Override)
    - 101 CRI / TIC / ECP(找不到這個詞的翻譯)
    - 110 網間控制(Internetwork Control)
    - 111 網絡控制(Network Control)
  • DTRCO:後 5 位
    - D (Delay更低的時延)時延:0:普通,1:延遲盡量小
    - T (Throughput 更高的吞吐量)吞吐量:0:普通,1:流量盡量大
    - R(Reliability更高的可靠性) 可靠性:0:普通,1:可靠性盡量大
    - C (Cost 更低費用的路由)傳輸成本:0:普通,1:成本盡量小
    - 0 最後一位被保留,恒定為 0

4、IP 包總長度(Total Length):長度 16 bit 。以字節為單位計算的 IP 包的長度(包括頭部和數據),所以 IP 包最大長度 65 535 字節。所以,數據包有效載荷的大小 = IP 包總長度(Total Length)- IP 報頭長度(Header Length)。

5、標識符(Identifier):長度 16 bit 。該字段和 Flags 和 Fragment Offest 字段聯合使用,對較大的上層數據包進行分段(fragment)操作。路由器將一個包拆分後,所有拆分開的小包被標記相同的值,以便目的端設備能夠區分哪個包屬於被拆分開的包的一部分。

6、標記(Flags):長度 3 bit 。

  • 該字段第一位不使用。
  • 第二位是 DF(Don’t Fragment)位,DF 位設為 1 時表明路由器不能對該上層數據包分段。如果一個上層數據包無法在不分段的情況下進行轉發,則路由器會丟棄該上層數據包並返回一個錯誤信息。
  • 第三位是 MF(More Fragments)位,當路由器對一個上層數據包分段,則路由器會在除了最後一個分段的 IP 包的報頭中將 MF 位設為 1 。

7、片偏移(Fragment Offset):長度 13 bit,以 8 個八位組為單位。表示該 IP 包在該組分片包中位置,接收端靠此來組裝還原 IP 包。

8、生存時間(TTL):長度 8 bit,設計之初是以秒(s)為單位的,但實際以跳數為單位,建議的缺省值為 64 。當 IP 包進行傳送時,先會對該字段賦予某個特定的值。當 IP 包經過每一個沿途的路由器的時候,每個沿途的路由器會將 IP 包的 TTL 值減少 1 。如果 TTL 減少為 0,則該 IP 包會被丟棄。這個字段可以防止由於路由環路而導致 IP 包在網絡中不停被轉發。

9、協議(Protocol):長度 8 bit 。標識了上層所使用的協議。以下是比較常用的協議號:1 ICMP;2 IGMP;6 TCP;17 UDP;88 IGRP;89 OSPF 。

10、頭部校驗(Header Checksum):長度 16 bit 。用來做 IP 頭部的正確性檢測,但不包含數據部分。 因為每個路由器要改變 TTL 的值,所以路由器會為每個通過的數據包重新計算這個值。

11、起源和目標地址(Source and Destination Addresses):這兩個地址都是 32 bit 。標識了這個 IP 包的起源和目標地址。要註意除非使用 NAT,否則整個傳輸的過程中,這兩個地址不會改變。

12、可選項(Options):這是一個可變長的字段。該字段屬於可選項,主要用於測試,由起源設備根據需要改寫。可選項目包含以下內容:

  • 松散源路由(Loose source routing):給出一連串路由器接口的 IP 地址。IP 包必須沿著這些 IP 地址傳送,但是允許在相繼的兩個 IP 地址之間跳過多個路由器。
  • 嚴格源路由(Strict source routing):給出一連串路由器接口的 IP 地址。IP 包必須沿著這些 IP 地址傳送,如果下一跳不在 IP 地址表中則表示發生錯誤。
  • 路由記錄(Record route):當 IP 包離開每個路由器的時候記錄路由器的出站接口的 IP 地址。
  • 時間戳(Timestamps):當 IP 包離開每個路由器的時候記錄時間。
  • 填充(Padding):因為 IP 報頭長度(Header Length)部分的單位為 32 bit,所以 IP 報頭的長度必須為 32 bit 的整數倍。因此,在可選項後面,IP 協議會填充若幹個 0,以達到 32 bit 的整數倍。







字段 長度 含義
版本 4比特 IP協議的版本號,分為IPv4和IPv6協議。
首部長度 4比特 IPv4的首部長度。
區分服務 8比特 用來獲得更好的服務。只有在使用區分服務時,這個字段才起作用。
總長度 16比特 指首部和數據之和的長度。
標識 16比特 IPv4軟件在存儲器中維持一個計數器,每產生一個數據報,計數器就加1,並將此值賦給標識字段。
標誌 3比特 目前只有兩位有意義。最低位為1表示後面“還有分片”的數據報,為0表示這已經是最後一個數據片;中間一位為1表示“不能分片”,為0才允許分片。
片位移 13比特 指出較長的分組在分片後,該片在原分組中的相對位置。
生存時間TTL(Time To Live) 8比特 表示數據報在網絡中的壽命,功能是“跳數限制”。
協議 8比特 指出此數據報攜帶的數據是使用何種協議。
首部檢驗和 16比特 數據報每經過一個設備,設備都要重新計算一下首部檢驗和,若首部未發生變化,則此結果必為0,於是就保留這個數據報。這個字段只檢驗數據報的首部,但不包括數據部分。
源地址 32比特 報文發送方的IPv4地址。
目的地址 32比特 報文接收方的IPv4地址。
選項字段 0~40字節(長度可變) 用來支持排錯、測量以及安全等措施。在必要的時候插入值為0的填充字節。
數據部分 可變 用來填充報文。

UDP

技術分享圖片

IP UDP包頭詳解