1. 程式人生 > >TCP/IP網路層之 IP選路的實現過程

TCP/IP網路層之 IP選路的實現過程

先來看看這幅圖


由這幅圖可知,IP可以從TCP、UDP、ICMP、IGMP接收IP資料報(這些資料報都是本地生成的資料報)並進行傳送,或者從鏈路層接收資料報並進行轉發到下一站(路由器IP層)。我們知道,IP層中儲存有一個路由表,當IP從TCP、UDP、ICMP、IGMP或鏈路層中接收資料報並準備傳送時,它得對該路由表搜尋一下,選擇合適的路由(就是選路的意思)。

(1)當資料報來自於鏈路層時,IP首先檢查目的IP地址是否和本機的IP地址之一相同(某些裝置不止一個IP地址)或者該目的IP地址是廣播地址(如ARP請求資料幀和RARP請求資料幀封裝成的資料報),如果相同,那麼就接收並進行處理,否則,IP將對資料報進行轉發或丟棄

(2)當資料報來自TCP、UDP、ICMP、IGMP時,那麼,資料報將傳送到下一站(間接路由)或目標主機

以上2個步驟具體如如圖示:


那麼,問題來了,主機或路由器是怎麼選擇路由進行傳送和轉發的呢?

假如目的IP地址是本機或者是同屬同一個區域網(如乙太網)的其他主機,那麼,IP並不需要選路,直接將IP資料報傳送給鏈路層(鏈路層通過傳送ARP廣播獲取目的IP地址對應的MAC地址然後將資料報傳送過去),但是如果目的IP地址的主機不是同一個乙太網內,那必須得選路了

不管是主機或路由器,在選路之前,都得搜尋路由表,搜尋路由表有以下步驟:

1) 搜尋匹配的主機地址; 

2) 搜尋匹配的網路地址;

 3) 搜尋預設表項(預設表項一般在路由表中被指定為一個網路表項,其網路號為 0)


路由表存在以下可能:

1) 最簡單的(也是最不令人感興趣的)情況是主機根本沒有與任何網路相連。 T C P / I P協 議仍然能用於這樣的主機,但是隻能與自己本身通訊!這種情況下的路由表只包含環回介面 一項(環回介面的IP地址一般是我們熟知的127.0.0.1)。

 2) 接下來的情況是主機連在一個區域網上,只能訪問區域網上的主機。這時路由表包含 兩項:一項是環回介面,另一項是區域網(如乙太網)。

 3) 如果主機能夠通過單個路由器訪問其他網路(如 I n t e r n e t)時,那麼就要進行下一步。一般情況下增加一個預設表項指向該路由器。

 4) 如果要新增其他的特定主機或網路路由,那麼就要進行最後一步

  下面我們就舉例子來說明一下:

例子的網路拓撲:

主機sur4的路由表


我們根據上述I P操作的步驟使用這個路由表為主機 s v r 4(140.252.33.34)上的一些分組例子選擇路由。

 1) 假定目的地址是主機 s u n,即目標IP地址為1 4 0 . 2 5 2 . 1 3 . 3 3。首先進行主機地址的匹配。路由表中的兩 個主機地址表項( s l i p【140.252.13.65】和l o c a l h o s t【127.0.0.1】)均不匹配,接著進行網路地址匹配。這一次匹配成 功,找到表項1 4 0 . 2 5 2 . 1 3 . 3 2(網路號和子網號都相同),因此使用e m d 0介面。這是一個直接 路由,因此鏈路層地址將是目的端的地址(鏈路層通過傳送ARP廣播獲取目的IP地址對應的MAC地址然後將資料報傳送過去)。

 2) 假定目的地址是主機s l i p,即目標IP地址為1 4 0 . 2 5 2 . 1 3 . 6 5。首先在路由表搜尋主機地址,並找到一個 匹配地址。這是一個間接路由,因此目的端的 I P地址仍然是1 4 0 . 2 5 2 . 1 3 . 6 5,但是鏈路層地址 必須是閘道器1 4 0 . 2 5 2 . 1 3 . 6 5的鏈路層地址,其介面名為e m d 0。

 3) 這一次我們通過I n t e r n e t給主機a w . c o m(1 9 2 . 2 0 7 . 11 7 . 2)傳送一份資料報。首先在路 由表中搜索主機地址,失敗後進行網路地址匹配。最後成功地找到預設表項。該路由是一個 間接路由,通過閘道器1 4 0 . 2 5 2 . 1 3 . 3 3,並使用介面名為e m d 0。 

這裡要說明一下,路由選擇的下一站,不一定就是我們需要的最終目標地址,但是我們並不需要關心,因為路由器是把下一站當做是目標地址來發送的,逐步將IP資料報傳送到目標地址。就像郵局寄信一樣,假如我要從廣州(源地址)傳送到北京(目標地址),郵局的分檢處就類似IP層選路,從廣州到北京,那麼,分檢處(IP層)會先查詢分檢表(類似路由表),得知先把信傳送到下一站(可能是湖南),後面的傳送任務讓給湖南郵局負責選路傳送,湖南郵局收到信,就會送到分檢處,檢視分檢表,繼續傳送到下一站......以此類推,直到下一站就是北京。

哈哈哈,至此,IP選路的過程與實現就完成了!!!

但是,在這裡我還是要嘮叨一下,假如我們是用校園網上網,我們的IP地址並不是公網地址,是內網的保留地址,情況和上面一樣,但是會涉及到NAT協議,如果想了解,那麼可以看這篇博文點選開啟連結,這位博主講得很好!