ip報頭結構如下圖所示
下面具體分析ip包頭中各部分的作用。
版本號(version):長度4位元。標識目前採用的ip協議的版本號。一般的值為0100(ipv4),0110(ipv6)
ip包頭長度(header length):長度4位元。這個欄位的作用是為了描述ip包頭的長度,因為在ip包頭中有變長的可選部分。該部分佔4個bit位,單位為32bit(4個位元組),即本區域值= ip頭部長度(單位為bit)/(84),因此,乙個ip包頭的長度最長為「1111」,即154=60個位元組。ip包頭最小長度為20位元組。
服務型別(type of service):長度8位元。8位 按位被如下定義 ppp d t r c 0
ppp:定義包的優先順序
000 普通 (routine)
001 優先的 (priority)
010 立即的傳送 (immediate)
011 閃電式的 (flash)
100 比閃電還閃電式的 (flash override)
101 cri/tic/ecp (不知道蝦公尺意思)
110 網間控制 (internetwork control)
111 網路控制 (network control)
d 時延: 0:普通 1:盡量小
t 吞吐量: 0:普通 1:盡量大
r 可靠性: 0:普通 1:盡量大
m 傳輸成本: 0:普通 1:盡量小
0 最後一位被保留,恆定為0
ip包總長(total length):長度16位元。 以位元組為單位計算的ip包的長度 (包括頭部和資料),所以ip包最大長度65535位元組。
識別符號(identifier)(資料報id):長度16位元。該字段和flags和fragment offest欄位聯合使用,對大的上層資料報進行分段(fragment)操作。路由器將乙個包拆分後,所有拆分開的小包被標記相同的值,以便目的端裝置能夠區分哪個包屬於被拆分開的包的一部分。
標記(flags):長度3位元。該欄位第一位不使用。第二位是df(don』t fragment)位,df位設為1時表明路由器不能對該上層資料報分段。如果乙個上層資料報無法在不分段的情況下進行**,則路由器會丟棄該上層資料報並返回乙個錯誤資訊。第三位是mf(more fragments)位,當路由器對乙個上層資料報分段,則路由器會在除了最後乙個分段的ip包的包頭中將mf位設為1。
片偏移(fragment offset):長度13位元。表示該ip包在該組分片包中位置,接收端靠此來組裝還原ip包。
生存時間(ttl):長度8位元。當ip包進行傳送時,先會對該字段賦予某個特定的值。當ip包經過每乙個沿途的路由器的時候,每個沿途的路由器會將ip包的ttl值減少1。如果ttl減少為0,則該ip包會被丟棄。這個字段可以防止由於路由環路而導致ip包在網路中不停被**。
協議(protocol):長度8位元。標識了上層所使用的協議。
以下是比較常用的協議號:
1 icmp
2 igmp
6 tcp
17 udp
88 igrp
89 ospf
頭部校驗(header checksum):長度16位。用來做ip頭部的正確性檢測,但不包含資料部分。 因為每個路由器要改
變ttl的值,所以路由器會為每個通過的資料報重新計算這個值。
起源和目標位址(source and destination addresses):這兩個地段都是32位元。標識了這個ip包的起源和目標位址。要注意除非使用nat,否則整個傳輸的過程中,這兩個位址不會改變。
至此,ip包頭基本的20位元組已介紹完畢,此後部分屬於可選項,不是必須的部分。
可選項(options):這是乙個可變長的字段。該欄位屬於可選項,主要用於測試,由起源裝置根據需要改寫。可選專案包含以下內容:
時間戳(timestamps):當ip包離開每個路由器的時候記錄時間。
填充(padding):因為ip包頭長度(header length)部分的單位為32bit,所以ip包頭的長度必須為32bit的整數倍。因此,在可選項後面,ip協議會填充若干個0,以達到32bit的整數倍。
各類報頭TCP UDP ICMP IP結構
當我們使用raw socket的時候,可以完全自定義ip包,一切形式的包都可以 製造 出來。因此,本文事先必須對tcp ip所涉及ip包結構進行必要的交待。目前,ipv4的報頭結構為常用的icmp報文包括echo request 響應請求訊息 echo reply 響應應答訊息 destinatio...
IP包頭結構詳解
這篇講得比較詳細 清楚,轉了 ip包頭結構如下圖所示 下面具體分析ip包頭中各部分的作用。版本號 version 長度4位元。標識目前採用的ip協議的版本號。一般的值為0100 ipv4 0110 ipv6 ip包頭長度 header length 長度4位元。這個欄位的作用是為了描述ip包頭的長度...
IP頭結構詳解
版本號 version 長度4位元。標識目前採用的ip協議的版本號。一般的值為0100 ipv4 0110 ipv6 ip包頭長度 header length 長度4位元。這個欄位的作用是為了描述ip包頭的長度,因為在ip包頭中有變長的可選部分。該部分佔4個bit位,單位為32bit 4個位元組 即...