IP協議 頭部格式

IPv4 頭部結構


Version(版本號):IP 協議版本號。目前只有兩個版本:IPv4 和 IPv6

Header Length(IP 協議頭部長度):IP 協議頭部的長度,單位字節(32 bit)需要這個值是因爲任選字段的長度是可變的, 這個字段佔4bit(最多能表示15個32bit的的字,即4*15=60個字節的首部長度),因此IP 頭部最多有60字節長度。正常的長度是20字節; 如果有額外的 IP 的 options 選項,還得加上 option 的長度。

Type of Service (服務類型):標示包傳輸優先級。總共8位,是由3個優先權位(不再使用),4個 TOS 位,1個固定的0組成。
4個 TOS 位:最新延遲、最大吞吐量、最高可靠性、最小成本,只能4選一。

Total Length(包長度):整個IP包的長度,16位,最大可以標示 65536個字節,Total Length - Header Length = 數據長度。通過 Header Length 和 Total Length 就可以知道數據的起始位置和結束位置。

Identifier(標識符):網絡中轉發的IP報文的長度可以不同,但如果報文長度超過了數據鏈路所支持的最大長度,則報文就需要分割成若干個小的片段才能在鏈路上傳輸。比如以太網幀中數據最大長度(MTU)爲 1500字節,大於 MTU 的都會被分割,被分割的每個包都有相同的一個值,表示這是同一個 ip 包。

Flag(標誌位): 標誌字段在IP報頭中佔3位。

  • 第1位作爲保留;
  • 第2位,分段,是否允許分片;(如果不允許分片,包超過了數據連路支持的最大長度,則丟棄該包,返回發送者一個 ICMP 錯誤)
  • 第3位,更多分段。表示是否最後一個分片。
    當目的主機接收到一個IP數據報時,會首先查看該數據報的標識符,並且檢查標誌位的第3位是置0或置1,以確定是否還有更多的分段。如果還有後續報文,接收主機則將接收到的報文放在緩存直到接收完所有具有相同標識符的數據報,然後再進行重組。

Fragmented Offset(偏移量): 當某個 IP 大包分成多片時,各個分片是不按順序達到目的地的,IP 包根據分片的偏移量進行重組包。(跟TCP 原理一樣)

(Time to Live)生存時間:表示數據包經過的路由器個數。如果網絡上有些路由器的路由表配置不合理,路由尋址可能會導致死循環,數據包會一直循環傳輸。 IP 包發送的時候可以設置一個 TTL 值,比如 TTL=64,沒經過一個路由器 TTL 減1,減到0 還沒到到目的地,路由器會拋棄這個IP包,並使用一個ICMP消息通知發送方。

Protocal(協議): 協議類型 1:ICMP, 2:IGMP, 6:TCP, 17:UDP。

Header CheckSum(首部校驗和):校驗 IP 協議頭,判斷IP協議頭是否正確傳輸。

Source Address(源IP): 請求方 IP

Distination Address(目的IP): 響應方 IP

Options(可選字段): IP支持很多可選選項。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章