一、基本概念
IP數據包也稱為IP報文分組,是網絡層的一個協議,由IP報文頭和IP報文用戶數據組成,IP報文頭部長度一半在20-60個字節之間。一個IP分組最大長度不能超過65535個字節。IP是一個不可靠和無連接的協議,因為它提供的的是最大努力傳輸;沒有推自身傳輸的消息進行檢錯和跟蹤的方法,因此IP具有內在協議層的不可靠性,如果對數據的可靠性質有要求可以選擇IP+TCP,如果對數據的可靠性無要求可以使用IP+UDP。
二、數據格式
版本號[4bit] : 用於指定IP協議的版本號,目前主要版本為IPv4, 即第4版本號,通信雙方的IP協議版本號必須一致,否則無法直接進行通信。
首部長度[4bit]:指IP報文頭部長度,每個長度單位為4個字節, 最小長度(0101)為5個單位長度, 所以IP協議報文頭部長度最小20(5 * 4)個字節;最大長度(四個bit全為1),為15個單位長度, 所以最大為60(15 * 4)個字節。
服務類型[8bit]: 用來表示更好的服務。
RFC791[互聯網標准]:
其中前3個bit 表示報文優先級取值為 0: 普通級別(缺省標記值)、1:優先(數據業務)、2: 快速(數據業務)、3:閃速(語音控制)、4: 疾速(視頻會議、視頻流)、5:關鍵(語音數據)、6:網間控制(網絡控制數據)、7:網絡控制(網絡控制數據), 后幾位分別表示低延時、高吞吐、高可靠、低路由,字段為1表示啟用,為0表示不啟用。
總長度[16bit]: 包括首部和數據之和,單位為字節,報文總長度最大可表示65545個字節
標識[16bit]: 唯一標識主機發送的數據報,當IP報文長度超過網絡的MTU(最大傳輸單元)時,進行分片,該標示字段不變。 通常每發送一個報文,該字段值+1
標志[3bit]:傳輸控制標志, 分別表示R、DF、MF三位, DF位為分片標志位值為0分片,MF位中斷標志位值為1表示最后分片字段
片偏移[13bit]:在原先數據報文中相對首位的偏移位。(需要再乘以8)
生存時間(TTL)[8bit]:IP報文所允許通過的路由器的最大數量。每經過一個路由器,TTL減1,當為0時,路由器將該數據報丟棄。TTL 字段是由發送端初始設置一個 8 bit字段.推薦的初始值由分配數字 RFC 指定,當前值為 64。發送 ICMP 回顯應答時經常把 TTL 設為最大值 255。
協議號[8bit]:IP報文攜帶的數據使用的是那種協議,以便目的主機的IP層能知道要將數據報上交到哪個進程
首部校驗和[8bit]:計算IP頭部的校驗和,用於檢測首部在傳輸過程中是否出現差錯
源IP地址[32bit]:發送端設備IP地址
目標IP地址[32bit]:目標IP地址
選項信息:IP選項是IP固定首部之后的選項部分,由於IP首部長度是用4bit來計數,以4個字節為表示的,所以首部長度最多為60個字節,IP選項最多為40個字節。IP選項字段可能包含0~多個單獨選項。選項包含兩類:單字節與多字節。
單字節:單個標明類型的選項, 單字節IP選項只有倆個
選項表的結尾:在可變長度的選項的結尾必須使用操作結束符(有時成為選項列表結束符),因此,只能有一個選項結束符。選項結束符在所有選項的結尾。並且只有在選項的結尾無法按照IP數據報的題頭長度字段中規定與選項題頭的結尾保持一致時,才會使用結束符。
無操作:是一個填充字符,沒有任何功能,只作為填充符放在選項的開始或現象之間,一邊在32位邊界對其下一個選項,無操作字節沒有長度字段。用於規定數據報控制選項,並支付只到第一個段中
多字節: 多字節IP選項共有七個,由一個字節的復用字段,一個字節的長度字段和一個可變長度的數據字段組成。
記錄路由:記錄有為記錄IP數據在從源設備傳輸到目的設備時采用的路徑提供了一種方法。
時間戳:用於記錄路由器有路由處理數據報所用的時間,時間以毫秒為單位,時間戳只能給出數據包從一個路由器傳輸到下一個路由器所使用的時間的預估值。
嚴格源路由:嚴格路由為設備提供了數據報到達目的地必須通過的跳(路由器接口)的列表,這些跳是數據報可以使用的唯一路由器。 在這個列表中兩個連續地址之間的路徑之間不能有多個物理網絡否則將產生一個錯誤信息。如果數據不能沿着嚴格源路由指定的路徑傳送。這個數據將會丟棄。
寬松源路由:寬松源路由允許主機或路由器使用具有任何數量的中間路由器的路由到達該路由中的下一個必經的接口。如果路由器利用記錄的路由器代替願路由,這個選項成為寬松源和記錄路由選項
數據包:上層協議數據