1. 程式人生 > >環回接口---loopback

環回接口---loopback

識別 cpu 中一 發送 因此 cer 可見 補充 ack

盡管在網上查了不少資料,但依然未找到全面的解釋,最近給縣局作崗位認證培時, 忽然間想通了些問題,很多疑問迎刃而解。以下是我對環回地址及環回接口的一些認識,供大家參考交流:
一、環回接口
為了標識和管理網絡設備(如路由器、pc),我們通常會利用到這些設備的接口(包括物理接口和邏輯接口:如vlan)上設置的IP地址。但很多情況下,盡管該設備未脫離網絡,由於其管理地址所處的接口狀態處於down,該設備便無法管理(因為物理連接斷開,接口協議起不來)。為了解決這一問題,於是便出現了loopback接口,該接口為設備上一個邏輯接口,接口狀態不受物理端口up/down的影響,只要設備的系統協議不出問題,該接口就不會down掉。順便補充一下,盡管3層vlan亦是邏輯接口,但通常我們使用的vlan都是居於端口的,而且核心層交換機vlan一般只關聯一個端口,當端口狀態處於down時vlan接口是無法up起來的。
由此可見loopback接口的地址無疑是標示物理設備本身的最佳選擇,因為只要設備運行正常,它將永處於up狀態。
二、環回地址及環回路由
loopback地址即是loopback接口上設置的地址,該地址用於標示設備本身。A類地址段127.0.0.0被用作本地環回地址,一般設備都默認采用127.0.0.1,當然也可在loopback接口上設置公網IP,作為全網的設備標識。
當設備給其自身發數據包時,是把該數據包送往其loopback接口(其實是直接送給cpu處理)。但如果目的IP不是其loopback地址,它如何得知數據包的目的地址就是它自己的IP地址呢呢?此時就需要環回路由來識別了。一般pc網卡上的IP及一些低端網絡設備的管理IP都默認指向其環回接口,但很多高端設備都需要手動設置環回路由。例如一臺路由器的其中一個接口地址為61.175.201.54,則環回路由應該設置為61.175.201.54/32 127.0.0.1,以表示該地址就在自身接口上。
三、應用舉例
就拿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的延遲還要大。為此很多設備都手工設置了本地環回路由,從而減少不必要的麻煩。

環回接口---loopback