1. 程式人生 > >《TCP/IP詳解》筆記——IP選路

《TCP/IP詳解》筆記——IP選路

本系列是針對《TCP/IP詳解》的筆記總結,包含各章節的主要內容。有助於幫助你快速瞭解並掌握TCP/IP協議的相關內容。

目錄

 1、概述
 2、選路原理
 3、ICMP重定向差錯
 4、ICMP發現報文

1、概述

IP層工作步驟
  1)搜尋匹配的主機地址(MAC)
  2)搜尋匹配的網路地址(IP)
 3)搜尋預設表項,該預設的表項在路由表中被指定為一個網路表項,網路號為0

 IP層進行的主要是一種選路機制,搜尋路由表並決定向那個網路介面傳送分組。(具體的選路策略是由守護程式提供)
這裡寫圖片描述

其中route命令和netstat命令的主要作用是:

  • route print顯示你當前網路連線的路由情況,子網連線情況等資訊;
  • netstat -r就是顯示當前你的電腦與外界網路連線的網路資訊,包括埠使用情況和IP連線的資訊等。

2、選路原理

2.1簡單路由表

這裡寫圖片描述

2.2 初始化路由表

 當初始化一個介面時(通常是用ifconfig命令設定介面地址),就為介面自動建立一個直接路由。對於點對點鏈路和環回介面來說,路由是達到主機。對於廣播介面來說,如乙太網,路由是達到網路。
 到達不直接相連的主機或網路的路由必須以某種方式新增到路由表中。一個常用的方法是在系統引導時顯式地在初始化檔案中執行route命令。

2.3 沒有到達目的地的路由表

  • 如果資料報是由本地主機產生的,那麼就給傳送該資料的應用程式返回一個差錯,或者是“主機不可達差錯”或者是“網路不可達差錯”。
  • 如果是被轉發的資料報,那麼就給原始傳送端傳送一份ICMP主機不可達的差錯報文。

3、ICMP重定向差錯

 當IP資料報應該被髮送到另一個路由器時,收到資料報的路由器就要傳送ICMP重定向差錯報文給IP資料報的傳送端。
 1)我們假定主機發送一份IP資料報給R1。這種選路決策經常發生,因為R1是該主機的預設路由。
 2)R1收到資料報標籤檢查它的路由表,發現R2是傳送該資料報的下一站。當它把資料報傳送給R2時,R1檢測到它正在傳送的介面與資料報到達介面是相同的(即主機和兩個路由器所在的LAN)。這樣就給路由器傳送重定向報文給原始傳送端提供了線索。
 3)R1傳送一份ICMP重定向報文給主機,告訴它以後把資料報傳送給R2而不是R1。

ICMP重定向報文的接受者必須檢視三個IP地址:
 (1)導致重定向的IP地址(在作為ICMP重定向報文資料部分返回的IP首部中);
 (2)傳送重定向報文的路由器的IP地址(包含重定向資訊的IP資料報中的源地址)
 (3)應該採用的路由器IP地址(在ICMP報文中的4~7位元組)
其他規則:
 首先,重定向報文只能由路由器生成,而不能由主機生成。
 另外,重定向報文時為主機而不是為路由器使用的。假定路由器和其他一些路由器共同參與某一種選路協議,則該協議就能取消重定向的需求。

4、ICMP發現報文

 一般認為,主機在引導以後要廣播或多播發送一份路由器請求報文。一臺或更多臺路由器響應一份路由器通告報文。另外,路由器定期地廣播或多播傳送它們的路由器通知報文,允許每個正在監聽的主機相應地更新它們的路由表。
RFC確定了這兩種ICMP報文的格式。
這裡寫圖片描述

  路由器在一份報文中可以通知多個地址。地址數指的是報文中所含的地址數。地址項大小指的是每個路由器地址32bit字的數目,始終為2.生存期是指通告地址的有效時間。
 接下來是一對或多對IP地址和優先順序。優先順序是一個有符號的32bit整數,指出該IP地址作為預設路由器地址的優先等級,這是與子網上的其他路由器相比較而言的。值越大說明優先順序越高。優先順序為0x80000000說明對應的地址不能作為預設路由器地址使用,儘管它也包含在通告報文中。優先順序預設值一般為0。

4.1 路由器操作

 當路由器啟動時,它定期在所有廣播或多播傳送介面上傳送通告報文。這些報文不是定期傳送的,而是隨機傳送的,以減少與子網上其他路由器發生衝突的概率。一份給定的通告報文預設生命週期是30分鐘。
 使用生命週期的另一個時機是當路由器上的某個介面被關閉時。在這種情況下,路由器可以在該介面上傳送最後一份通告報文,並將生命週期值設為0。

4.2 主機操作

 主機在引導期間一般傳送三份路由器請求報文,每三秒鐘傳送一次。一旦接收到一個有效的通告報文,就停止傳送請求報文。
 主機也監聽來自相鄰路由器的請求報文。這些通告報文可以改變主機的預設路由器。另外,如果沒有接收到來自當前預設路由器的通告報文,那麼預設路由器會超時。
只要有一般的預設路由器,該路由器就會每個10分鐘傳送通告報文,報文的生命週期是30分鐘。這說明主機的預設表項是不會超時的,即使錯過了一份或兩份通告報文。