p資料報首部格式 :
tcp/ip協議定義了乙個在網際網路上傳輸的包,稱為ip資料報(ip datagram)。這是乙個與硬體無關的虛擬包, 由首部和資料兩部分組成,其格式如圖所示。首部的前一部分是固定長度,共20位元組,是所有ip資料報必須具有的。在首部的固定部分的後面是一些可選字段,其長度是可變的。首部中的源位址和目的位址都是ipv4協議位址。
1、ip資料報首部的固定部分中的各欄位
(1)版本 佔4位,指ip協議的版本。通訊雙方使用的ip協議版本必須一致。目前廣泛使用的ip協議版本號為4(即ipv4)。
(2)首部長度 佔4位,可表示的最大十進位制數值是15。請注意,這個欄位所表示數的單位是32位字長(1個32位字長是4位元組),因此,當ip的首部長度為1111時(即十進位制的15),首部長度就達到60位元組。當ip分組的首部長度不是4位元組的整數倍時,必須利用最後的填充字段加以填充。因此資料部分永遠在4位元組的整數倍開始,這樣在實現ip協議時較為方便。首部長度限制為60 位元組的缺點是有時可能不夠用。但這樣做是希望使用者儘量減少開銷。最常用的首部長度就是20位元組(即首部長度為0101),這時不使用任何選項。 (#我們一般看到的版本和首部長度兩個欄位是十六進製制45,就是版本號version=4,headlength=5,也就是首部長度是60個位元組)。
(3)區分服務 佔8位,用來獲得更好的服務。這個欄位在舊標準中叫做服務型別,但實際上一直沒有被使用過。2023年ietf把這個字段改名為區分服務ds(differentiated services)。只有在使用區分服務時,這個欄位才起作用。
(4)總長度 總長度指首部和資料之和的長度,單位為位元組。總長度欄位為16位,因此資料報的最大長度為216-1=65535位元組。 #可以看這個乙太網frame總長為336位元組,而ip資料報total length=322,336-322=14正好是ethernet包頭的長度,所以就可以看出這ip資料報總長度一值就是除去ethernet頭的剩餘長度,也就是ip包頭加資料的長度。在ip層下面的每一種資料鏈路層都有自己的幀格式,其中包括幀格式中的資料字段的最大長度,這稱為最大傳送單元mtu(maximum transfer unit)。當乙個資料報封裝成鏈路層的幀時,此資料報的總長度(即首部加上資料部分)一定不能超過下面的資料鏈路層的mtu值。
(5)標識(identification) 佔16位。ip軟體在儲存器中維持乙個計數器,每產生乙個資料報,計數器就加1,並將此值賦給標識字段。但這個「標識」並不是序號,因為ip是無連線服務,資料報不存在按序接收的問題。當資料報由於長度超過網路的mtu而必須分片時,這個標識欄位的值就被複製到所有的資料報的標識欄位中。相同的標識欄位的值使分片後的各資料報片最後能正確地重灌成為原來的資料報。
(6)標誌(flag) 佔3位,但目前只有2位有意義。
● 標誌欄位中的最低位記為mf(more fragment)。mf=1即表示後面「還有分片」的資料報。mf=0表示這已是若干資料報片中的最後乙個。
● 標誌字段中間的一位記為df(don』t fragment),意思是「不能分片」。只有當df=0時才允許分片。
(7)片偏移 佔13位。片偏移指出:較長的分組在分片後,某片在原分組中的相對位置。也就是說,相對使用者資料字段的起點,該片從何處開始。片偏移以8個位元組為偏移單位。這就是說,每個分片的長度一定是8位元組(64位)的整數倍。
(8)生存時間 佔8位,生存時間字段常用的的英文縮寫是ttl(time to live),表明是資料報在網路中的壽命。由發出資料報的源點設定這個字段。其目的是防止無法交付的資料報無限制地在網際網路中兜圈子,因而白白消耗網路資源。最初的設計是以秒作為ttl的單位。每經過乙個路由器時,就把ttl減去資料報在路由器消耗掉的一段時間。若資料報在路由器消耗的時間小於1秒,就把 ttl值減1。當ttl值為0時,就丟棄這個資料報。
(9)協議 佔8位,協議字段指出此資料報攜帶的資料是使用何種協議,以便使目的主機的ip層知道應將資料部分上交給哪個處理過程。(在scapy中,下層的這個protocol一般可以從上曾繼承而來,自動填充,我們一般可以省略不填此項)
(10)首部檢驗和 佔16位。這個欄位只檢驗資料報的首部,但不包括資料部分。這是因為資料報每經過乙個路由器,路由器都要重新計算一下首部檢驗和(一些字段,如生存時間、標誌、片偏移等都可能發生變化)。不檢驗資料部分可減少計算的工作量。
(11)源位址 佔32位。
(12)目的位址 佔32位
2、ip資料報首部的可變部分
ip首部的可變部分就是乙個可選字段。選項字段用來支援排錯、測量以及安全等措施,內容很豐富。此字段的長度可變,從1個位元組到40個位元組不等,取決於所選擇的專案。某些選項專案只需要1個位元組,它只包括1個位元組的選項**。但還有些選項需要多個位元組,這些選項乙個個拼接起來,中間不需要有分隔符,最後用全0的填充字段補齊成為4位元組的整數倍。 增加首部的可變部分是為了增加ip資料報的功能,但這同時也使得ip資料報的首部長度成為可變的。這就增加了每乙個路由器處理資料報的開銷。實際上這些選項很少被使用。新的ip版本ipv6就將ip資料報的首部長度做成固定的。
(3)時間戳(讓每個路由器都記下它的ip位址和時間)
(4)寬鬆的源站路由(為資料報指定一系列必須經過的ip位址)
(5)嚴格的源站路由(與寬鬆的源站路由類似,但是要求只能經過指定的這些位址,不能經過其他的位址)
IP資料報首部格式
1.ip資料報首部的固定部分中的各欄位 1 版本佔4位,指ip協議的版本。通訊雙方使用的ip協議的版本必須一致。目前廣泛使用的ip協議版本號為4 即ipv4 關於以後要使用的ipv6 即版本6的ip協議 我們將在後面的4.6節討論。2 首部長度佔4位,可表示的最大十進位制數值是15。請注意,首部長度...
IP資料報首部的格式identification
標識 identification 佔16位。ip軟體在儲存器中維持乙個計數器,每產生乙個資料報,計數器就加1,並將此值賦給標識字段。但這個 標識 不是序號,因為ip是無連線服務,資料報不存在按序接收的問題。當資料報由於長度超過網路的mtu而必須分片時,這個標識欄位的值就被複製到所有的資料報片的標識...
ip首部可選字段 IP資料報格式 35
1 tcp ip協議棧 2 最大傳送單元mtu 1 最大傳送單元mtu 鏈路層資料可封裝資料的上限。如乙太網的mtu是1500位元組。2 如果所傳送的資料報長度超過某鏈路的mtu值,要怎麼處理?答 當ip資料報比鏈路的最大傳輸單元大時,就可以被分解為很多的足夠小片段,以便能夠在其上進行傳輸。即分片。...