TCP/IP路由技術--1.2 IP包頭
阿新 • • 發佈:2020-10-10
1.2 IP包頭
下面表中是IP包頭(packet header)
下面對上面表格中的術語進行詳細的解釋:
版本(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)
那麼Tos是如何被重新定義的呢?請先看下下面的表:
二進位制位:
0 1 2 3 4 5 6 7
開始的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位的倍數。
真實的IP資料包:
Version (版本) |
Header length(包頭長度) |
Total length(總長度) |
||
Identifier(識別符號) |
Flag (標記欄位) |
|||
Time to live (TTL 生存時間) |
Protocol(協議) |
|||
Sourceaddress(源地址) |
||||
Destination address(目標地址) |
||||
Options(可選項) |
Padding (填充) |
區分服務程式碼點 (DSCP) | ECN |
協議號 | 所表示的協議 |
1 | ICMP(Internet訊息控制協議) |
2 | IGMP(Internet組管理協議) |
4 | 被IP協議封裝的IP |
6 | 傳輸控制協議(TCP) |
17 | 使用者資料報協議(UDP) |
45 | 域間路由選擇協議(IDRP) |
46 | 資源預留協議(RSVP) |
47 | 通用路由選擇封裝(GRE) |
54 | NBMA下一條解析協議(NHRP) |
88 | Cisco internet閘道器路由選擇協議(IGRP) |
89 | 開放最短路徑優先(OSPF) |
轉載於:https://blog.51cto.com/opencloud/645786