IP協議解讀(一)

IP協議是TCP協議棧中的核心協議,也是網絡編程的基礎之一。

網絡層概述

IP服務特點:

IP協議爲上層協議提供無狀態,無連接,不可靠的服務。

  • 無狀態:IP通信雙方不同步狀態傳輸信息,因此所有IP數據報的發送和接收都是相互獨立的,這樣也就造成了它無法處理亂序,重複的IP數據報。相對於面向連接而設定的,例如TCP協議,它能夠自己處理亂序,重複的報文段。他遞交給上層的內容絕對是有序的正確的。但是IP協議的狀態也是有優點的,它簡單高效,因爲我們無需爲保證它的狀態而分配一些內核數據結構。
  • 無連接:通信雙方都不長久的維持對方的任何信息,那麼就需要上層協議去指定傳輸的IP地址。
  • 不可靠服務:不可靠指的是IP協議不能保證IP數據報完整並且準確的到達接收端。因此使用IP的上層協議需要自己做數據確認,超時重傳等可靠傳輸機制。

IPv4頭部結構:

圖一:

這裏寫圖片描述

IPv4頭部結構包含20個字節。另外最多包含40個選項字節。

  • 4位版本號:指定IP協議的版本
  • 4位頭部長度:標識有多少個四字節。
  • 8位服務類型(TOS):包括一個3位的優先權字段(現在已經被忽律),4位TOS字段(最小延時,最大吞吐量,最高可靠性,最小費用),1位保留字段。以上信息決定了IP協議的可彈性。
  • 16位總長度(字節數):整個IP數據報的長度。就是說IP數據報的最大程度就是2^16-1。因爲MTU的限制。最大傳輸不可能達到這個值。

======分片傳輸實現原理=========

  • 16位標識別:唯一標識主機發送的每一個數據報。初始值有系統隨機生成。每發送一個數據報,該值就+1.因此同一個數據報的分片都具有相同的標識值
  • 3位標誌:

    (1)第一位是有保留的

    (2)第二位表示禁止分片(如果對這位進行了設置,IP模塊將不會對數據報進行分片,所以可以想象一下我們剛纔提到的,如果這個數據報的長度超過MTU,這段數據報就會被丟棄,返回ICMP差錯報文)

    (3)第三位表示等多分片(除了IP數據報的最後一個分片外,其他分片都設置爲1)。

  • 13位偏移:是分片相對原始IP數據報開始處的偏移。

這三個字段協同工作行形成了IP分段的功能。

=======================

  • 8位生存時間(TTL):它是數據報到達目的地前允許經過的路由跳數。在發送過程中,每經過一個路由,該值就減1.當TTL位0時,路由器會丟棄這個數據報,返回ICMP差錯報文。它可以防止數據陷入路由循環。
  • 8位協議涌來區分上層協議。ICMP位1,TCP爲6,UDP位17
  • 16位頭部校驗和:它是由發送端進行填充。接收端對其進行CRC校驗算法,來檢驗頭信息在傳輸過程中是否被損壞。
  • 32位原端IP:表示發送端IP
  • 32位目的IP:表示接受端IP
  • IPv4頭部可變長的選項部分,最多包含401個字節,可選的IP選項包括:(1)紀錄路由,(2)時間戳,(3)鬆散源路由選擇,(4)嚴格路由選擇 (這些的介紹會在以後進行分享)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章