TCP/IP詳解(三)IP:網際協議

        IP提供不可靠、無連接的服務。所有的T C P、U D P、I C M P及I G M P數據都以I P數據報格式傳輸(網絡概述裏有圖示)。

         不可靠(u n r e l i a b l e)的意思是它不能保證I P數據報能成功地到達目的地。I P僅提供最好的傳輸服務。如果發生某種錯誤時,如某個路由器暫時用完了緩衝區,I P有一個簡單的錯誤處理算法:丟棄該數據報,然後發送I C M P消息報給信源端。任何要求的可靠性必須由上層來提供(如T C P)。
        無連接(c o n n e c t i o n l e s s)這個術語的意思是I P並不維護任何關於後續數據報的狀態信息。每個數據報的處理是相互獨立的。這也說明,I P數據報可以不按發送順序接收。如果一信源向相同的信宿發送兩個連續的數據報(先是A,然後是B),每個數據報都是獨立地進行路由選擇,可能選擇不同的路線,因此B可能在A到達之前先到達。


一、IP首部


        分析圖3 - 1中的首部。最高位在左邊,記爲0 bit;最低位在右邊,記爲31 bit。

        4個字節的32 bit值以下面的次序傳輸:首先是0~7 bit,其次8~15 bit,然後1 6~23 bit,最後是24~31 bit。這種傳輸次序稱作big endian字節序。由於T C P / I P首部中所有的二進制整數在網絡中傳輸時都要求以這種次序,因此它又稱作網絡字節序。以其他形式存儲二進制整數的機器,如little endian格式,則必須在傳輸數據之前把首部轉換成網絡字節序。

        服務類型(TO S)字段包括一個3 bit的優先權子字段(現在已被忽略),4 bit的TO S子字段和1 bit未用位但必須置0。4 bit的TO S分別代表:最小時延、最大吞吐量、最高可靠性和最小費用。4 bit中只能置其中1 bit。如果所有4 bit均爲0,那麼就意味着是一般服務。


        標識字段唯一地標識主機發送的每一份數據報。通常每發送一份報文它的值就會加1。

        T T L(t i m e - t o - l i v e)生存時間字段設置了數據報可以經過的最多路由器數。它指定了數據報的生存時間。T T L的初始值由源主機設置(通常爲3 2或6 4),一旦經過一個處理它的路由器,它的值就減去1。當該字段的值爲0時,數據報就被丟棄,併發送I C M P報文通知源主機。

       爲了計算一份數據報的I P檢驗和,首先把檢驗和字段置爲0。然後,對首部中每個16 bit進行二進制反碼求和(整個首部看成是由一串16 bit的字組成),結果存在檢驗和字段中。當收到一份I P數據報後,同樣對首部中每個16 bit進行二進制反碼的求和。由於接收方在計算過程中包含了發送方存在首部中的檢驗和,因此,如果首部在傳輸過程中沒有發生任何差錯,那麼接收方計算的結果應該爲全1。如果結果不是全1(即檢驗和錯誤),那麼I P就丟棄收到的數據報。但是不生成差錯報文,由上層去發現丟失的數據報並進行重傳。

       由於路由器經常只修改T T L字段(減1),因此當路由器轉發一份報文時可以增加它的檢驗和,而不需要對 I P整個首部進行重新計算。

       最後一個字段是任選項,是數據報中的一個可變長的可選信息。目前,這些任選項定義如下:
               • 安全和處理限制(用於軍事領域,詳細內容參見RFC 1108[Kent 1991])
               • 記錄路徑(讓每個路由器都記下它的I P地址)
               • 時間戳(讓每個路由器都記下它的I P地址和時間)
               • 寬鬆的源站選路(爲數據報指定一系列必須經過的I P地址)
               • 嚴格的源站選路(與寬鬆的源站選路類似,但是要求只能經過指定的這些地址,不能經過其他的地址)。
       這些選項很少被使用,並非所有的主機和路由器都支持這些選項。


二、IP路由選擇

       大多數的主機都是採用這種簡單機制:如果目的主機與源主機直接相連(如點對點鏈路)或都在一個共享網絡上(以太網或令牌環網),那麼I P數據報就直接送到目的主機上。否則,主機把數據報發往一默認的路由器上,由路由器來轉發該數據報。

        I P層既可以配置成路由器的功能,也可以配置成主機的功能。當今的大多數多用戶系統,包括幾乎所有的U n i x系統,都可以配置成一個路由器。我們可以爲它指定主機和路由器都可以使用的簡單路由算法。本質上的區別在於主機從不把數據報從一個接口轉發到另一個接口,而路由器則要轉發數據報。

       I P路由選擇主要流程:

       1)、搜索路由表,尋找能與目的I P地址完全匹配的表目(網絡號和主機號都要匹配)。

       2)、搜索路由表,尋找能與目的網絡號相匹配的表目。

       3)、搜索路由表,尋找標爲“默認(d e f a u l t)”的表目。

       如果上面這些步驟都沒有成功,那麼該數據報就不能被傳送。如果不能傳送的數據報來自本機,那麼一般會向生成數據報的應用程序返回一個“主機不可達”或“網絡不可達”的錯誤。

      路由過程中,數據報中的目的I P地址始終不發生任何變化,每個鏈路層可能具有不同的數據幀首部(不同類型的網絡),而且鏈路層的目的地址(如果有的話)始終指的是下一站的鏈路層地址。


三、特殊的IP地址


       上圖沒看懂, 更多:http://rainux.org/ip


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