IP數據包在通信中是非常重要的,為了加深對IP數據包格式的理解,今天來看看IP數據包究竟包含哪些字段,這些字段起到什麼作用。
來先看看IP包長啥樣子的,請看下圖
從上圖可看到IP包的包頭是20個字節。看看IP包頭包含哪些信息
版本:占4位,指IP協議版本。并且通信雙方使用的版本必須一緻,目前我們使用的是IPv4,IPv6也是一種版本,目前用的不多,以後會使用
首部長度:占4位,表示的最大十進制數是15(注意:首部長度字段所表示的單位是32位子,一個32位字長是4字節),因此首部長度的最小值為5(即:0101),相當于5*4=20字節,最大值為15(即:1111),相當于15*4=60字節,切記當首部長度不是4的整數倍時,必須利用最後的填充字段填充
區分服務:占 8位,用來獲得更好的服務,一般情況下不怎麼使用這個字段,隻有在區分服務時使用這個字段。
總長度:指首部和數據之和的長度,單位為字節,總長度字段為16位,因此數據報的最大長度為2^16 - 1 = 65535
标識:占16位,IP軟件在存儲器中維持一個計數器,每産生一個數據包,計數器加1,并将此值賦給标識字段,當數據包長度超過網絡的MTU時,就要采用分片處理,分片時,這個标識字段的值就會被複制到所有的數據報切片中。最後相同的數據報标識字段的分片就會重裝成為原來的數據報。
标志:占3位,但目前隻有兩位有意義
占13位,表示相對于用戶數據的起點,該片從何處開始,片偏移以8字節為偏移量,也就是說每一個分片的長度一定是8字節的整數倍。
生存時間:占8位,生存時間常用的字段是TTL(Time To Live),表示數據報在網絡中的壽命,由發出的源站點設置,目的就是防止無法交付的數據報在因特網中無限制的兜圈子,白白消耗資源。TTL字段是以跳數限制的,每經過一個路由器,在轉發之前就把跳數減為1,當TTL減為0時就會丢棄這個數據報,因為數據報在因特網中最大經過的路由器是255
協議:占8位,協議字段指數據報攜帶的數據是使用何種協議的,以便使目的主機的IP層知道将數據部分上交給那個處理過程。
首部校驗和:
占16位,這個字段隻檢驗數據報的首部,不包括數據部分。這是因為數據報沒經過一次路由器,都要重新計算一下首部校驗和(因為,一些字段如生存時間、标志、片偏移等可能發生變化)
源地址和目的地址:占32位,表示發送端和接收端的IP地址
可選字段:占25位,該字段大小長度可變,從一字節到40字節不等
填充占7位,前面字段加起來不是4的整數倍時,該字段填充全0補齊為4字節的倍數
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!