1. 程式人生 > >第9章 IP選路的理解——TCP-IP詳解卷1:協議學習

第9章 IP選路的理解——TCP-IP詳解卷1:協議學習

問題的提出 對於TCP-IP協議的學習,我一直困惑於9.2.1簡單路由表,下面帶引號的一段描述: 在這裡插入圖片描述 “輸出的最後一行是所在的乙太網。H標誌沒有設定,說明目的地址(140.252.13.32)是一個網路地址,其主機地址部分設為0。事實上,是它的低5位設為0(見圖3-11)。由於這是一個直接路由(G標誌沒有被設定),閘道器列指出的IP地址是外出地址。”

我對這段話琢磨了很久,下面是我的理解: 因為Flags沒有H沒有G,書上說,“沒有設定H標誌說明目的地址是一個網路地址(主機號部分為0)”,因此這是個網路地址是板上釘釘的。 路由表的這最後一行是做什麼用的?在這一節的後面,舉了4個分組選擇路由的例子。其中1)和4)就用到這行對應的路由。

首先排除例子2)和3)之不適用這個路由 首先是2): 在這裡插入圖片描述 它是明確目的主機地址並指出鏈路層地址必須是閘道器的間接路由。按照選路原理: 在這裡插入圖片描述 在對路由表的第一次搜尋就成功找到了,不可能找到最後一個路由,也就是網路地址選項的。 其次看3): 在這裡插入圖片描述 這也是明確了目的主機地址的,但是在路由表上面,第一次搜尋(搜尋匹配的主機地址)找不到;第二次搜尋(搜尋匹配的網路地址),不匹配;因此進行第三次匹配,找到預設表項,送往閘道器13.33。

其次為什麼1)和4)適用 這樣就把例子2)和3)排除了。那麼1)為什麼匹配上了最後一行路由? 1)是如下描述的: 在這裡插入圖片描述 目的主機地址是明確的,但是第一次無法匹配。因此進行第二次匹配,結果網路地址是匹配的,所以就用上了。文字的最後一句說明這是一個直接路由,因為沒有G。並且指出鏈路層地址,就是目的端的地址,就是140.252.13.33。可以看到,這個地址在這最後一行路由表裡面,是沒有明確寫出來的。 我還看到“使用emd0埠”,這個emd0埠,是誰的?是目的地址的?是源端地址的?還是閘道器的?通過這幾個例子的分析,得出的結論是,emd0是閘道器的埠。這裡就是13.34的埠。 那麼4)呢? 在這裡插入圖片描述

首先說明只是 ftp svr4 ftp 140.252.13.34 這兩種情況適合的。理由是,在第一次搜尋時,目的地址裡面沒有13.34;第二次搜尋時,網路地址13.32就匹配了。因此IP報文被傳送給乙太網驅動程式,然後因為目的地址恰好就是本機IP地址,因此,就被送往環回驅動程式。

看這段文字,有時會錯誤理解H是與G配對的。其實不是,H這是表明是主機還是網路地址,而G僅僅是表明是直接路由還是間接路由。 第三第四行因為沒有H,因此是的網路的。只是第三是間接的,第四是直接的。

——這是我對TCP-IP閱讀的理解,可能有錯的地方,歡迎各位大俠指正。