歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 閒聊計算機IP網絡

閒聊計算機IP網絡

日期:2017/2/28 14:43:12   编辑:Linux教程

記得剛上第一節《計算機網絡》課的時候,下課時就記得網絡分為通信子網和資源子網,當時覺得這是多麼的教條,時隔多年以後,再來回味這個通信子網和資源子網的劃分,還真是能牽扯出來不少東西呢...

通信子網和資源子網的劃分是橫向的劃分,而縱向的劃分就是諸協議棧。

什麼是通信子網呢?通信子網就是負責網絡交通的子網,它的任務就是路由尋址。什麼是資源子網呢?資源子網中存儲資源數據。一般而言,處在末梢端的網絡都是資源子網,主干部分的則是通信子網。這麼解釋還是太教條了,如果理解了IP地址的話,沖著這個資源子網和通信子網分類,可以洋洋灑灑上千字了...

IP地址和IP尋址

IP地址

IP地址可以分為網絡位和主機位,其中網絡位標識網絡,用來執行IP路由尋址,主機位用來標識主機。那麼很顯然,IP地址的網絡位就可以表示通信子網,而主機為則可以表示資源子網。

IP尋址

IP尋址的機制就是IP路由,IP理由的實質就是“局部逐跳地沿著鏈路向前推進”。根據目的地和當前位置的關系,IP路由的路由項可以分為四類,分別是:

1.Global路由:本機距離目的地之間需要跨越其它的路由器,其中包含路徑的下一個路由器的IP地址,需要下一跳解析協議解析其鏈路層地址。

2.Link路由:本機距離目的地之間不需要跨越其它路由器,目的地就在連接本機的鏈路的另一端,其中不包含下一個路由器的地址,因為已經可以直接用下一跳解析協議直接解析目的地了。Link路由即直連路由。

3.Host路由:本機就是目的地,即數據包已經到達。本機配置的所有IP地址都會是Host路由。

4.Blackhole路由:黑洞路由,即數據包永遠都到達不了目的地。

現在我們來看一下一個數據包從源頭到目的地的經歷。不考慮遇到黑洞的情形,基本可以分為以下的過程:

1.數據包始發,通過查找路由表發現目的地路由是一條Global路由,於是將包傳遞到下一跳;

2.路徑上可能會持續命中Global路由多次,逐跳傳遞包;

3.數據包在某台路由器上匹配到了一條Link路由,直接解析目的地的鏈路層地址,數據包繼續前進;

4.數據包匹配到一條Host路由,終於到達了目的地,該設備的第四層接收例程開始處理數據包。

為了保證上述的過程,路由器需要確保:對於Global路由,下一跳一定是Link可達的。也就是說在添加Global路由的時候,要執行一次針對下一跳的路由查找,確保查找結果是一條Link路由。當然,在支持路由遞歸查詢的路由器上,可以不必要求下一跳一定是Link的,然而在內部,最終遞歸查找的結果還是Link上的下一跳。

主機標識-最後一跳

數據包在到達目的地的過程中,對於目標是逐步接近的,如果將Global路由,Link路由,Host路由來做一個排序的話,數據包在經過更後面的路由類型後,是絕對不可能在經歷一次前面的路由類型的,比如數據包的路徑上的路由類型匹配序列不可能是:Global,Global,Link,Global。

可以肯定的是,數據包的最後一跳的依據是一條Link路由,接下來數據包就到達了目的地。但是並不能保證它能被上層接收,因為還需要匹配一條Host路由,也就是說,目標IP地址必須是本機的一個IP地址才可以。雖然有些實現中,在上一跳的“下一跳解析協議”執行的時候,這一點就能保證了,但是標准的IP路由還是需要去匹配路由表的Host路由項。在Linux中,arp_process中,對於REQUEST,目標IP地址一定要是Local表中的Host路由項才會回復REPLY。

關於直連路由

直連路由是內核自動生成的。基本上業內沒有人不知道這句話,然而關於直連路由的認識,很多人附加了一些內容,即直連路由不能手工配置。不能手工配置和不需要手工配置是完全不同的兩回事。其實直連路由也是可以手工配置的。這也就是說,我們可以配置32位掩碼的IP地址,這樣就不會生成直連路由,然後我們手工配置一條直連路由即可。實質上,所謂的直連路由,就是指出到達某IP網段的數據包可以在路由指出的網卡上解析目標IP地址。

直連路由即Link路由,上文提到過,在添加Global路由的時候,要確保下一跳是Link可達的,這一點就是通過針對下一跳地址做路由查找來實現的,如果返回的路由不是Link路由,則添加不成功。現在我們來看一下Link路由的生成。有三種生成方式:

第一種:自動生成

當你添加了一個IP地址在網卡上,協議棧就會根據你的IP地址掩碼解析出其網絡ID,根據IP地址以及其路由原則,屬於同一網絡的所有主機必須處在同一鏈路內,系統會生成一條鏈路層路由,即直連路由。

第二種:手工添加

如果信息所擁有的信息不足以讓它生成一條直連路由,但是管理員站在人的角度可以確定該直連路由的話,就可以手工添加一條,比如管理員知道線纜另一端的網卡的IP地址是1.1.1.1/24,那麼他就可以在本端配置一條直連路由,雖然他並不定將本端網卡的IP地址也配置成1.1.1.0/24網段的。

第三種:強制添加導致的隱Link路由

如果你能確保Global路由的下一跳IP地址真的不會跨越路由器,即它真的就在本鏈路,然而本地又沒有和它同一網段的IP,這就說明本端不會有到達下一跳IP地址的Link路由,那麼如何來將該Global添加入系統路由表呢?可以強制添加,一旦強制添加,系統會認為該下一跳在Link上,到達下一跳的路由是一條Link路由,但是該路由不會顯示出來。

更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2013-10/90954p2.htm

Copyright © Linux教程網 All Rights Reserved