IP數據包也叫IP報文分組,傳輸在ISO網絡7層結構中的網絡層,它由IP報文頭和IP報文用戶數據組成,IP報文頭的長度一般在20到60個字節之間,而一個IP分組的最大長度則不能超過65535個字節。
下圖為IP分組的報文頭格式,報文頭的前20個字節是固定的,后面的可變。
版本:占4位(bit),指IP協議的版本號。目前的主要版本為IPV4,即第4版本號,也有一些教育網和科研機構在使用IPV6。在進行通信時,通信雙方的IP協議版本號必須一致,否則無法直接通信。
首部長度:占4位(bit),指IP報文頭的長度。最大的長度(即4個bit都為1時)為15個長度單位,每個長度單位為4字節(TCP/IP標准,DoubleWord),所以IP協議報文頭的最大長度為60個字節,最短為上圖所示的20個字節。
服務類型:占8位(bit),用來獲得更好的服務。其中的前3位表示報文的優先級,后面的幾位分別表示要求更低時延、更高的吞吐量、更高的可靠性、更低的路由代價等。對應位為1即有相應要求,為0則不要求。
總長度:16位(bit),指報文的總長度(包括報文頭)。注意這里的單位為字節,而不是4字節,所以一個IP報文的的最大長度為65535個字節。
標識(identification):該字段標記當前分片為第幾個分片,在數據報重組時很有用。
標志(flag):該字段用於標記該報文是否為分片(有一些可能不需要分片,或不希望分片),后面是否還有分片(是否是最后一個分片)。
片偏移:指當前分片在原數據報(分片前的數據報)中相對於用戶數據字段的偏移量,即在原數據報中的相對位置。
生存時間:TTL(Time to Live)。該字段表明當前報文還能生存多久。每經過1ms或者一個網關,TTL的值自動減1,當生存時間為0時,報文將被認為目的主機不可到達而丟棄。使用過Ping命令的用戶應該有印象,在windows中輸入ping命令,在返回的結果中即有TTL的數值。
協議:該字段指出在上層(網絡7層結構或TCP/IP的傳輸層)使用的協議,可能的協議有UDP、TCP、ICMP、IGMP、IGP等。
首部校驗和:用於檢驗IP報文頭部在傳播的過程中是否出錯,主要校驗報文頭中是否有某一個或幾個bit被污染或修改了。
源IP地址:32位(bit),4個字節,每一個字節為0~255之間的整數,及我們日常見到的IP地址格式。
目的IP地址:32位(bit),4個字節,每一個字節為0~255之間的整數,及我們日常見到的IP地址格式。