TCP/IP詳解------環回接口


1 loopback interface        

        大多數的產品都支持環回接口(Loopback Interface),以允許運行在同一台主機上的客戶程序和服務器程序通過TCP/IP進行通信。A類網絡號127就是為環回接口預留的。根據慣例,大多數系統把IP地址127.0.0.1分配給這個接口,並命名為localhost。一個傳給環回接口的IP數據報不能在任何網絡上出現。我們想象,一旦傳輸層檢測到目的端地址是環回地址時,應該可以省略部分傳輸層和所有網絡層的邏輯操作。但是大多數的產品還是照樣完成傳輸層和網絡層的所有過程,只是當IP數據報離開網絡層時把它返回給自己

 

 

 

圖中需要指出的關鍵點是:
1) 傳給環回地址(一般是1 2 7 . 0 . 0 . 1)的任何數據均作為 IP輸入
2) 傳給廣播地址或多播地址的數據報復制一份傳給環回接口,然后送到以太網上。這是因為 廣播傳送和多播傳送的定義包含主機本身
3 ) 任何傳給 該主機IP地址的數據均送到環回接口
看上去用傳輸層和 I P層的方法來處理環回數據似乎效率不高,但它簡化了設計,因為環回接口可以被看作是網絡層下面的另一個鏈路層。網絡層把一份數據報傳送給環回接口,就像傳給其他鏈路層一樣,只不過環回接口把它返回到 IP的輸入隊列中。 

2 設備上的環回接口

    Loopback接口是虛擬接口,是一種純軟件性質的虛擬接口。任何送到該接口的網絡數據報文都會被認為是送往設備自身的。大多數平台都支持使用這種接口來模擬真正的接口。這樣做的好處是虛擬接口不會像物理接口那樣因為各種因素的影響而導致接口被關閉。事實上,將Loopback接口和其他物理接口相比較,可以發現Loopback接口有以下幾條優點:
    1.Loopback接口 狀態永遠是up的,即使沒有配置地址。這是它的一個非常重要的特性。
    2.Loopback接口 可以配置地址,而且可以配置全1的掩碼,可以節省寶貴的地址空間。
    3.Loopback接口不能封裝任何鏈路層協議。   

3 環回路由

        當設備給其自身發數據包時,是把該數據包送往其loopback接口(其實是直接送給cpu處理)。但如果目的IP不是其loopback地址,它如何得知數據包的目的地址就是 它自己的IP地址呢?此時就需要 環回路由來識別了。一般pc網卡上的IP及一些低端網絡設備的管理IP都默認指向其環回接口,但很多高端設備都需要手動設置環回路由。例如一台路由器的其中一個接口地址為61.175.201.54,則環回路由應該設置為61.175.201.54/32 127.0.0.1,以表示該地址就在自身接口上。       

4  應用舉例

        就拿pc來說,pc的網卡就相當於路由器的一個接口。如一台pc網卡上設置的地址為220.172.115.50,網卡連接正常時,協議狀態up,在dos命令行狀態下輸入ipconfig便可看到該網卡上的IP地址。此時在主機上ping其網卡地址的過程如下:主機發送一個icmp包,目的地址為220.172.115.50,請求對方回答;主機根據默認環回主機路由發現數據包目的地址的下一跳指向其loopback接口(主機事先並不知道該地址就在其網卡上),於是將數據包發往其loopback接口(即直接發往cpu);之后主機收到源IP為220.172.114.50的ping包,於是對該數據包進行回答,回應包亦根據環回路由原路返回。
        從該過程可看出,該數據包的始發點和被接收點都在同一個接口(即主機本身的loopback接口),尋址過程為一個環回過程,因此該接口稱之為“環回接口”。當網卡連接斷開時,協議down下,用ipconfig便發現“media disconnected”等提示,無IP地址顯示。ping 220.172.115.50便出現“destination unreachable”等提示(由於網卡協議沒起來,主機沒能發現相應路由,無法做出轉發決定,從而提示路由不可達)。但此時ping 127.0.0.0/8網段的IP均能ping通,因為一般pc默認把127.0.0.0/8網段IP作為loopback地址,當主機發現該數據包的目的地址為其自身的環回地址時,便將該數據包直接送往其cpu。由此可看出ping通環回地址並不表示就能ping通網卡地址,因此不要拿ping 127.0.0.1來檢測網卡的好壞,這樣做是行不通的。
        下面我們來看看關於路由器的例子。如routerA的接口s0/1與routerB的接口s0/2直接相連,routerA s0/1的地址為202.56.112.11而routerB s0/2的地址為202.56.112.12,兩台路由器都沒有做接口環回路由。此時在routerA上ping其接口s0/1的IP地址能ping通,但tracert 202.56.112.11便發現該數據包並未直接送給routerA本身,而是通過routerB后再回到routerA的。第一次遇到這種情況時我也很詫異,但理解環回的概念以后,這個疑惑也就自然解開。下面我們也來看看該數據包的尋址過程:首先路由器(cisco2600以上)沒有默認接口地址的loopback路由,並且這兩台router也沒有做相關手工設置。因此當routerA發送目的地址為其s0/1的icmp ping包時,routerA查找路由表沒發現指向環回接口的主機路由(主機路由優先級高於網絡路由),於是根據直連路由將該數據包轉發到routerB;routerB接收到該數據包后也根據直連路由將其轉發給routerA;routerA收到該ping包后,作出回應,回應包原路返回。因而便出現一個有趣的現象,routerA ping自己的延遲比其ping routerB的延遲還要大。為此很多設備都手工設置了本地環回路由,從而減少不必要的麻煩。
 
https://www.cnblogs.com/haitao-fan/archive/2012/04/21/2461028.html
https://blog.csdn.net/ac69896366/article/details/26555019                                                                                                           


免責聲明!

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



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