版本(Version
)
:它標識了數據包
IP
版本號。表形式為:
4
位字段的值設置為二進制的
0100
表示
IP
版本
4
(
IPv4
)
.
設置為
0110
表示
IP
版本
6
(
IPv6
)
Header length (包頭長度) : 字段長度為 4 位,它表示 32 位字長的 IP 報頭長度,設計報頭長度的原因是數據包可選字段大小會發生變化。 IP 報頭最小 20 個八位組,最大可以擴展到 60 個八位組。這個字段也可以描述 32 位字的組大長度。
Type service (服務類型) :字段長度為 8 位,它用來指定特殊的數據包處理方式。服務類型字段實際上被划分為 2 個子字段:優先權和 Tos 。優先權用來設置數據包的優先級。 Tos 允許按照吞吐量、時延、可靠性和費用方式選擇傳輸服務。 Tos 通常不用 所有位都被設置為 0. 在 OSPF 路由協議的早期規范中還稱為 Tos 路由選擇。 優先級偶爾在服務質量( QoS )應用中使用。
下圖簡單的說明了 8 個 Tos 位。
但是隨着網絡的發展 ToS字段已經作為區分服務架構的一部分被重新定義了。(diffserv)
8位
開始的 6 個位( 0-5 )現在構成了區分代碼點( DSCP ),利用這 6 位我們可以使用任意數值或根據在區分服務體系結構中預先定義的服務類別,最多可以定義 64 個不同服務類別,並可以整理到 PHB 中。
PHB 理解: 在 Diffser 中,能夠在一台路由器定義服務分類,將數據包歸類到這些分類中去。路由器可以根據它們的分類使用不同的優先級對數據包進行排序和轉發。每一個排序和處理被稱為 Per-Hop behavior( 逐跳行為 PHB )是由 Diffse 定義的 這個機制本身稱為區分服務類別( Cos ) .
顯示擁塞通知(Explicit Congestion Notification ECN ) 在上圖中顯示擁塞通知是某些路由器支持顯示擁塞通知的。當路由器支持該特性時,這些位可用於擁塞信號( ECN=11 )
Total length (總長度) : 主要表示包頭和數據的數據包長度。數據包總長度字段的長度為 16 位,以 8 位為單位計數。其中包括 IP 報頭。接收者用 IP 數據包總長度減去 IP 報頭長度,就可以確定數據包有效載荷大小。 16 位長的二進制數用十進制表示最大可以為 65535 ,所以 IP 數據包最大長度是 65535 。
Identifier (標識符) :字段長度為 16 位,通常與標記字段和分段偏移一起用於數據包的分段。也就是當數據包原始長度超過數據包所要經過的數據鏈路的最大傳輸單元( MTU )那么分段必須將數據包分段為更小的數據包。
Flag (標記字段) :長度為 3 位 其中第 1 位沒有使用。
第 2 位是不分段( DF ),當 DF 位置被置為 1 時,路由器將不能對數據包進行分段處理。如果數據包因為不能被分段而不能轉發,那么路由器將丟棄數據包並向數據發送方發送錯誤信息。
第 3 位表示更多分段( MF ) 當路由器對數據包分段時除了最后一個分段的 MF 職位 0 ,其它分段的 MF 位全設置為 1 ,當接收者收到 MF 為 0 的分段停止分段。
Fragment offset (分段偏移) :字段長度為 13 位,以 8 個八位組為單位。用於指明分段起始點相對於根頭起始點的偏移量。由於分段經過網絡肯定會發生錯序,所以分段偏移字段可以使接收者按正確的順序重組數據包。
Time to live (TTL 生存時間 ) :字段長度為 8 位,在最初創建數據包時 TTL 被設定某個特定的值,當數據包逐個經過路由器時,每台路由器都會降低 TTL 的數值,當 TTL 值為 0 時,路由器將會丟棄這個數據包並向數據發送源發送錯誤信息 這樣就可以防止數據包無休止的傳下去。 TTL 實際上是表示跳數。常見的是 15 和 32 缺省值是 64. tracert 這樣的命令就是利用 TTL 字段。
Protocol (協議) :字段長度為 8 位,他給出了主機到主機的層或傳輸層協議的“地址”或協議號。協議字段指定了數據包中信息的類型。
常見協議號
Header length (包頭長度) : 字段長度為 4 位,它表示 32 位字長的 IP 報頭長度,設計報頭長度的原因是數據包可選字段大小會發生變化。 IP 報頭最小 20 個八位組,最大可以擴展到 60 個八位組。這個字段也可以描述 32 位字的組大長度。
Type service (服務類型) :字段長度為 8 位,它用來指定特殊的數據包處理方式。服務類型字段實際上被划分為 2 個子字段:優先權和 Tos 。優先權用來設置數據包的優先級。 Tos 允許按照吞吐量、時延、可靠性和費用方式選擇傳輸服務。 Tos 通常不用 所有位都被設置為 0. 在 OSPF 路由協議的早期規范中還稱為 Tos 路由選擇。 優先級偶爾在服務質量( QoS )應用中使用。
下圖簡單的說明了 8 個 Tos 位。
但是隨着網絡的發展 ToS字段已經作為區分服務架構的一部分被重新定義了。(diffserv)
8位
開始的 6 個位( 0-5 )現在構成了區分代碼點( DSCP ),利用這 6 位我們可以使用任意數值或根據在區分服務體系結構中預先定義的服務類別,最多可以定義 64 個不同服務類別,並可以整理到 PHB 中。
PHB 理解: 在 Diffser 中,能夠在一台路由器定義服務分類,將數據包歸類到這些分類中去。路由器可以根據它們的分類使用不同的優先級對數據包進行排序和轉發。每一個排序和處理被稱為 Per-Hop behavior( 逐跳行為 PHB )是由 Diffse 定義的 這個機制本身稱為區分服務類別( Cos ) .
顯示擁塞通知(Explicit Congestion Notification ECN ) 在上圖中顯示擁塞通知是某些路由器支持顯示擁塞通知的。當路由器支持該特性時,這些位可用於擁塞信號( ECN=11 )
Total length (總長度) : 主要表示包頭和數據的數據包長度。數據包總長度字段的長度為 16 位,以 8 位為單位計數。其中包括 IP 報頭。接收者用 IP 數據包總長度減去 IP 報頭長度,就可以確定數據包有效載荷大小。 16 位長的二進制數用十進制表示最大可以為 65535 ,所以 IP 數據包最大長度是 65535 。
Identifier (標識符) :字段長度為 16 位,通常與標記字段和分段偏移一起用於數據包的分段。也就是當數據包原始長度超過數據包所要經過的數據鏈路的最大傳輸單元( MTU )那么分段必須將數據包分段為更小的數據包。
Flag (標記字段) :長度為 3 位 其中第 1 位沒有使用。
第 2 位是不分段( DF ),當 DF 位置被置為 1 時,路由器將不能對數據包進行分段處理。如果數據包因為不能被分段而不能轉發,那么路由器將丟棄數據包並向數據發送方發送錯誤信息。
第 3 位表示更多分段( MF ) 當路由器對數據包分段時除了最后一個分段的 MF 職位 0 ,其它分段的 MF 位全設置為 1 ,當接收者收到 MF 為 0 的分段停止分段。
Fragment offset (分段偏移) :字段長度為 13 位,以 8 個八位組為單位。用於指明分段起始點相對於根頭起始點的偏移量。由於分段經過網絡肯定會發生錯序,所以分段偏移字段可以使接收者按正確的順序重組數據包。
Time to live (TTL 生存時間 ) :字段長度為 8 位,在最初創建數據包時 TTL 被設定某個特定的值,當數據包逐個經過路由器時,每台路由器都會降低 TTL 的數值,當 TTL 值為 0 時,路由器將會丟棄這個數據包並向數據發送源發送錯誤信息 這樣就可以防止數據包無休止的傳下去。 TTL 實際上是表示跳數。常見的是 15 和 32 缺省值是 64. tracert 這樣的命令就是利用 TTL 字段。
Protocol (協議) :字段長度為 8 位,他給出了主機到主機的層或傳輸層協議的“地址”或協議號。協議字段指定了數據包中信息的類型。
常見協議號
Header checksum(
報頭校驗和)
:它是針對IP報頭的糾錯字段。校驗和不計算被封裝的數據。
UDP 、 TCP 和 ICMP 都各有自己的校驗和。報頭校驗和字段包含一個 16 位二進制補碼和。如果數據包在傳輸中沒有發生錯誤,那么結果應該 16 位全為 1. 數據包每經過 1 台路由器,每台路由器都將重新計算校驗和。
Sourceaddress (源地址) :指數據包發送源 ip 地址。
Destination address (目標地址) :數據包將要到達的目的地地址。
Options (可選項) :是一個長度可變的字段。它是可選的。
可選項如下:
ⅰ 松散源路由選擇(loose source routing ) 它給出了一連串路由器接口的 IP 地址序列 。數據包必須沿着 IP 地址序列傳送,但是允許相繼的 2 個地址之間可跳過多台路由器。
ⅱ 嚴格源路由選擇(strict source routing ) 也給出了一連串路由器接口的 IP 地址序列,不同於松散源路由選擇的是,數據包必須按照路由轉發。如果下一條不在路由表,就將會發生錯誤。
ⅲ 記錄路由(Record Router ) 當數據包離開時為每台路由器提供空間記錄數據包的出站接口地址。
ⅳ 時間戳(timestamp ) : 時間戳相當於路由記錄選項,這樣數據包不僅可以知道自己到過那里。而且還可以記錄到達的時間。
填充(padding )在可選項后面添加 0 來補足 32 位,主要是保證報頭是 32 位的倍數。
