TCP/IP詳解 IP路由選擇


TCP/IP詳解 IP路由選擇

在本篇文章當中, 將通過例子來說明IP路由選擇器過程

TCP/IP網絡路由

如圖所示, 主機A與主機B分別是處在兩個不同的子網當中, 中間通過一個路由連接. 如果主機A請求與主機B進行通行, 主機A尋找主機B的位置的過程就可以理解為IP路由的選擇過程.

現在主機A的用戶通過Ping命令確認與主機B的連通性. Ping命令看似簡單, 但是其中IP路由選擇的過程還是會有很多的步驟. 具體的步驟如下 :

  1. 當主機A上輸入12.34.56.78之后, 主機A的因特網控制報文協議(ICMP)創建一個回應請求數據包, 其數據域中只包含有字母.

  2. ICMP協議會將剛剛創建的回應請求數據包(有效負荷)轉交給因特網協議(IP協議)。IP協議會對這個數據包進行封裝,創建一個數據包。在IP協議創建的數據包中,包括主機A的IP地址,目的主機B的IP地址以及值為01h的協議字段。當數據包達到主機B時,主機B通過判斷協議字段01h,將這個有效負荷交給ICMP協議處理。

  3. IP協議創建數據包后,會判斷目的主機B的IP地址是處於本地網絡中還是處於遠程網絡。根據IP地址規則,主機A、B屬於不同網絡。此時IP協議所創建的數據包會被發送到默認的網關。(在每個終端設備中,網絡配置中需要包含自身的IP地址,以及默認到的網關地址。在不同網絡之間的主機互相通信,依靠的就是網關設備)

  4. 如圖中所示,默認的網關就是圖中的路由器。此時我們需要確認路由器的MAC地址。假設路由器對應連接到主機A的路由器網絡接口的IP地址為10.142.149.1,那么主機A(10.142.149.6)的默認網關配置為10.142.149.1,。現在要將IP數據包發送到對應的路由器網絡接口10.142.149.1上,就必須知道這個接口的物理地址,也就是MAC地址。只有知道MAC地址,IP數據包才能夠從網絡層傳遞到底層的數據鏈路層並根據鏈路層的規則生成幀。之后主機A才能把鏈路層中的包發送到IP地址為10.142.149.1的路由器接口上。在本地局域網中,主機只可以通過硬件地址進行相互通信。所以當主機A要把數據包發送給對應的路由器接口時,必須提前知道這個路由器對應的MAC地址。這時就需要用到ARP協議,ARP協議的具體講解后面會單獨寫一篇筆記進行分析。主機A會先檢查本地的ARP緩存,查看一個默認網關的IP地址是否有對應路由器接口的MAC地址。如果ARP緩存表中有對應的記錄,表示IP地址已被成功解析。此時,IP層會將數據包傳遞到數據鏈路層並生成幀。其中目的主機B的MAC地址也將和數據包一起傳遞到數據鏈路層。通常情況下,在主機A中,可以通過ARP命令來查看主機當前的IP地址與MAC地址對應表。

  5. 生成數據幀。當IP數據包和目的主機B的MAC地址傳遞給數據鏈路層后,局域網驅動器將用以提供媒體訪問服務,以通過以太網進行數據傳輸。通過一些控制信息封裝IP數據包,形成數據幀。數據幀中包含有目的主機B和源端主機A的MAC地址,以及以太網類型字段。以太網類型字段主要用來描述交付這個數據包到數據鏈路層的網絡層協議。數據幀結尾是一種被稱作為幀校驗序列的字段,它裝載循環冗余校驗計算值的區域。總結一下,以這個例子來說,主機A的數據鏈路層中生成的數據幀包括目的地址MAC地址(指的是對應路由器接口的MAC地址)、主機A自身的MAC地址、以太網類型字段、數據包、幀校驗序列。注意:這個傳輸過程中,目的地址不是主機B的MAC地址,而是與主機A對應的路由器接口的MAC地址。最后數據幀到物理層以位(bit)的形式傳輸。

  6. 路由器接口接收這些位(bit)並且重新合並成數據幀。接收完畢后,會進行CRC過程並核對保存在幀校驗序列字段中的內容。如果值互相不匹配,則數據幀將會被丟棄。如果兩個值相同,則路由器接口將會接收主機A傳輸過來的數據幀,並核查數據幀中的目的放的MAC地址,是否與自身MAC地址匹配。路由器還會查看數據幀的以太網類型字段,以了解在網絡層采用的協議類型,然后路由器就會抽出數據幀中的數據包,丟棄其余內容。抽取后的數據包傳送給以太網類型字段中列出的上層協議。在本例中為IP協議。

  7. IP協議接收這個數據包后,檢查目的IP地址。在本例中,由於數據包中的目的地址與接收路由器所配置的任何地址都不相匹配,所以路由器會在自己的路由表中查看目的IP網絡的地址。本例中,由於路由器同時還連接着10.142.148.10,所以在這個路由器中的路由表中,有相關的記錄。若沒有相關記錄,則這個數據包會直接被丟棄。數據包被丟棄后,會向主機A發送一個“目標地址不可達”的錯誤信息。

  8. 如果路由器在它的路由表中找到了對應的網絡地址記錄,則數據包就會被轉發到路由器的輸出接口。在本例中,就是路由器用來與主機B連接的接口。路由器會將這個數據包交換到對應接口的緩沖區內。

  9. 接下來就是路由器接口緩沖區中數據包處理情況。這個接口緩沖區需要知道目的主機B地址的MAC地址。因為現在數據包中包含了目的主機B的IP地址,所以路由器會根據這個IP地址檢查本地ARP緩存表,如果主機B的MAC地址已經被解析並緩存在路由器的ARP緩沖中,則這個數據包和主機B的MAC地址會被傳遞到數據鏈路層以便重新生成數據幀。在路由器以前跟主機B通信過的情況下,主機B的IP與MAC地址的映射記錄會在路由器中緩存四個小時。超過四小時未再通信的話,IP與MAC地址的映射記錄將會被刪除。如果在路由器ARP的緩沖表中沒有這個映射記錄,則路由器接口被在其連接的子網內部發送一個ARP請求。ARP請求是以廣播方式發送的,子網內部所有的主機都會受到這個請求,發現這個請求的主體是10.142.148.10的MAC地址。這時各個主機會檢查自己的IP地址,發現不匹配,就會拋棄這個ARP請求包。而主機B檢查自己的IP地址,發現匹配成功,這時主機B就會進行響應,將自己的MAC地址告訴路由器。因此路由器就能夠得知目的主機B的IP地址和MAC地址,就會把數據包和目的主機B的MAC地址傳遞到底層的數據鏈路層中。當然這時,路由器也會把主機B的IP地址和MAC地址緩存到自己的ARP緩沖表中,以備下次使用。

  10. 路由器隨后會生成數據幀,傳送到物理層,以位的方式發送到物理媒體上,在網絡介質上進行傳輸。

  11. 主機B接收到數據幀后進行CRC校驗過程。校驗結果與幀校驗序列中字段內容相同的話,則數據幀中目的方的MAC地址會被讀取,主機B會比對這個MAC地址與自己的MAC地址是否相同。如果相同,則會抽取其中的數據包,並根據以太網字段類型中指定的協議,把數據包傳遞給相應的協議處理。在本例中,數據包中是一個回應請求,所以主機B會把這個數據包最終交給ICMP協議處理。ICMP協議會應答這個請求,同時把這個數據包丟棄並迅速生成一個新的有效負荷作為回應應答。然后主機B會利用同樣的過程把數據包以及目的MAC地址傳遞到下一層,讓其生成數據幀,通過物理介質傳遞到對應的路由器接口上。

  12. 路由器會重復上面對應的步驟,把數據包轉交到另一個接口上進行傳遞,隨后主機A就接收到一個回應應答信息,表示主機A到主機B的網絡是通的。

總結 : 以上就基本闡述了IP路由選擇的全部過程。在本篇筆記中,列舉的是一個路由器節點的例子。像多路由器的轉發的情況也是同一個道理,到達每個路由器時都會先搜索路由表,以確定下一步數據傳輸到哪里或者是丟棄。大致步驟都是相同的,對於IP數據包,其在網絡中的流向基本上是一個套路:

  • 主機A的傳輸層將數據交給網絡層,網絡層添加IP首部,如雙方IP地址,TTL等信息,封裝稱為IP數據包,然后通過ARP協議獲取目的MAC地址后,將數據包交給數據鏈路層。
  • 數據鏈路層根據IP、MAC地址,將數據幀封裝為物理幀,通過物理媒體傳輸。
  • 主機B接收物理幀,判斷MAC地址。如果與自己MAC地址匹配,就把數據幀交給網絡層處理。
  • 網絡層判斷IP地址是否匹配,如果是發給自己的,則再移交上層協議處理;如果不是,則在路由表中查找此IP地址的下一跳地址,並將數據通過內存從接受數據網卡的IP程序copy到發送數據網卡的IP地址。在發送接口中, 通過ARP請求獲取下一跳的MAC地址,IP程序將數據包和目的MAC地址交給數據鏈路層,然后封裝為數據幀,通過物理媒體傳輸數據幀。

在IP路由選擇的過程中,我們可以發現路由表的作用是不可或缺的。下一跳的地址還是直接丟棄數據包,都是與路由表息息相關。下一篇筆記將會簡單介紹一下路由表的形式與作用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM