【計算機網絡】第六章:[網絡層]靜態路由和動態路由(Part1.靜態路由)

網絡層功能

簡單來說就是爲數據包選擇最佳路徑,儘可能的轉發數據包。分爲兩種,一種是管理員告訴路由器怎麼走,一種是路由器自己來選擇。前者是靜態路由,後者是動態路由。
在這裏插入圖片描述
網絡層要把數據包加上IP地址(源和目標),才能把包送達。路由器通過IP地址來傳輸數據包。這個網絡可以實現負載均衡,讓數據包的傳輸相對平均。

數據包傳輸過程不保證可靠傳輸,比如傳輸過程中出現差錯或者路由器緩存表滿,處理不過來,都會丟包。負責可靠傳輸的是由AB計算機的傳輸層來負責的。
路由器爲數據包選擇最佳路徑,處理不過來就扔掉。網絡層可以通過動態路由來讓路由器動態選擇路徑,出現意外情況時可以選擇備用路徑送達數據包。

網絡暢通的條件

條件:數據包有去有回
當網絡出現問題,排查錯誤時,我們就需要檢查來路和去路,考慮數據包到得了而且返的回來。(比如私網直接訪問公網就是數據包能到回不來的問題)
也就說網絡不暢通無非就是兩種:有去無回和不可到達。
在這裏插入圖片描述
正常流程:A-R1-R2-R3-B
其中路由器負責轉發數據包,每個路由器內都有路由表,通過路由表來轉發數據。路由表就是存儲路由器下一個可到達的網段/路徑信息的表。

一般當數據包到達一個路由器,路由器查路由表知道嚇一跳要到哪一個路由器/網段,然後轉發數據包。如果某路由器路由表不含嚇一跳的信息,則該路由器會丟掉這個數據包並生成一個新的ICMP協議數據包反饋給發送端,告訴它發送失敗已丟包和自己不知道下一跳(沒有去這個網段的路徑)去哪。對於這種不可到達的數據包,由於即使收到了ICMP回饋,ping的結果是無法訪問目標主機
而對於可以到達,但是返回數據包過程中,回來的某個路由器出現問題或者路由表無合法路徑,則數據包無法送回,此時由於發送端一直等待,在等待一段時間後就會認爲等待時間過長,數據包已丟包。此時的ping結果是請求超時
在這裏插入圖片描述
如圖,我們看到了有三個數據包請求超時,數據包到了目的地,沒回來。而第一個返回的消息,來自192.168.80.1並不是我們ping的192.168.80.128,也就說數據包沒有到達目的地。
在這裏插入圖片描述
當然,我們網絡排錯是從低到高層排錯,在檢查網絡層錯誤之前,應該進行物理層和數據鏈路層的排錯。物理層的排錯最簡單,檢查線路(重新插拔網線,水晶頭接線方式,線路是否斷路等),數據鏈路層(網絡是否欠費,上網賬號密碼是否一致,MAC地址是否衝突等)。

靜態路由

靜態路由就是管理員告訴路由器到指定網段下一跳指定了誰,路由器接入網絡後只知道它直連的那些網段,沒有直連的網段都不知道。如果要實現全網暢通,那麼網絡中的所有路由器都要知道到每一個網段如何到達。
在這裏插入圖片描述
圖中就有4個網段,對R1而言,他知道網段1和網段2之間數據包如何轉發,但是R1不知道怎麼到網段3和網段4。此時管理員需要告訴R1,如果要到網段3和4,那麼下一跳給R2。同理對於R2,它知道如何轉發網段23之間的數據,所以需要告訴它去4網段下一跳給R3,去1網段下一跳給R1。以此類推。這樣配置完後,對於每個路由器他們就都知道去每個網段的下一跳是哪個路由了。

管理員需要在路由器上添加沒有直連的路由。要想實現全網暢通,網絡中的路由器必須知道到所有網段如何轉發。

實驗:搭建靜態路由環境

【計算機網絡原理·實驗·第六章】搭建靜態路由環境
靜態路由詳細講解也附在這個鏈接裏了。

路由彙總

靜態路由的添加需要管理員一條一條的指定,如果網絡規模不大,那麼尚可操作,但是如果網絡規模變大,或者企業網絡需要直接訪問Internet,則工作量將大到不可能實現。因爲因特網中有無數網段,無數路由,不可能對我管理的路由器的路由表進行一條一條的添加,路由器也沒有足夠大的空間存這些路由條目。

所以我們簡化路由表勢在必行。方法有兩種:默認路由和路由彙總。

在這裏插入圖片描述
上圖,如果用靜態路由添加的話,每個路由器需要配置256個路由表,而每個城市又有256個網段,這還沒有包括路由器間的點對點鏈路,網段數量龐大。
北京市添加去石家莊的的路由表數量之和:256x256

路由彙總
我們發現,172.16.0.0/24~172.16.255.0/24可以超網合併成172.16.0.0/16。
那麼對於北京市路由器R1,我們就可以只添加一條路由表,因爲去往石家莊的線路是唯一的。
就可以使用 ip route 172.16.0.0 255.255.0.0 10.0.0.2
在這裏插入圖片描述
對於城市之間的鏈路,利用超網的想法來進行簡化,可以將一個路由表的效率大大提高。當然,這裏只是使用了超網的概念,並不是將他們進行了超網合併。這樣對於每一個路由,我們只需要添加一條路由表。
北京市添加去石家莊的的路由表數量之和:256 x256 = 256
在這裏插入圖片描述
如果是這種情況,石家莊的網段分佈更大後,我們仍然可以用同樣的方式合併,將172.0.0.0/16~172.255.0.0/16 合併成 172.0.0.0/8。

路由彙總成功的條件:區域內分配的地址連續。地址塊給了物理位置連續的網段。

在這裏插入圖片描述
路由彙總例外:如圖,有一個172.16.10.0/24網段不在石家莊,在北京。這種情況是仍然可以彙總的,只不過路由配置多寫一條命令。告訴它這一個網段例外,即可。
順序無所謂,命令先寫哪一條都可以。

當數據包到達R1時,他會先判斷子網掩碼長的那一個路由表來決定去向。如果先判斷子網掩碼短的一項,則例外路由表永遠用不上。

在這裏插入圖片描述
知識貴在靈活,我們合併路由表可以只通過子網掩碼前移幾位來合併一個不大的規模的IP地址,而並不一定一次合併一整個大網段。
比如我們可以通過子網掩碼前移一位合併2臺設備,也可以前移兩位合併4臺設備,前移3位合併8臺設備。當然這些設備的IP地址是由要求的,要滿足超網合併的條件。
在這裏插入圖片描述
圖中就是應用的典例。

默認路由

全球最大的網段:0.0.0.0/0 是全球最大的網段,包括了全球所有的網段。
子網掩碼爲0.0.0.0,網段爲0.0.0.0。這條路由就叫默認路由。

如果路由器上有這樣幾條命令:
在這裏插入圖片描述
那麼當一個數據包到達後,按照子網掩碼長度進行判斷,子網掩碼越長判斷的優先級越高。其餘沒有特別指定的網段都走默認路由。

在這裏插入圖片描述
默認路由的作用:指向因特網。

對於任意一個路由器,它知道與自己直連的網段如何轉發,需要人工指定不與其直連的網段。而對於網絡末端的路由器(樹狀結構的葉節點),它的路由可以用一條命令來涵蓋所有路由表。用默認路由來指定因特網。

如圖,對於圖中RB而言,轉發給10.1.0.0/24和RC的接口是直連的,也就說它的路由表裏默認已經寫上了這兩條。那麼我只需要寫一條默認路由,不管去哪的數據包,只要不是去這兩個網段,那麼下一跳一定是C。
同理對於D而言,只要不是去C和10.4.0.0/24的,下一跳一定轉發給C,配置路由表也只需要一條命令。
對於C而言,直連ABD,手動添加去10.1.0.0和10.4.0.0的路由表後,其餘所有去向數據包都需要轉發給A。
對於A而言,手動添加去10.1.0.0和10.4.0.0和B和D的路由表後,其他的都是去因特網的命令,也是用默認路由一條就可以涵蓋。


即便網絡沒有接入因特網,我們也可以用默認路由來指定大多數網段。
在這裏插入圖片描述
在這裏插入圖片描述
環狀結構使用默認路由,能用最簡單的配置方法讓網絡通,但是可能在效率上會出現問題。比如A和F通信,需要繞一個大圈發數據包,返回的數據包是最佳路徑而發送的數據包是最差路徑。
在這裏插入圖片描述
如圖,這種配置可以讓AB網絡互通嗎? 可以。
A發送數據給B,A發現和B不在同一網段,發給路由器RA。RA沒有找到合適的路徑選擇默認路由發給RB,RB與B所在網段直連,將數據包交給B。然後B返回數據包到RB,RB沒有去A的最佳路徑選擇默認路由轉發給RA,RA與A直連轉發給A。這樣就完成了AB間通訊,但是問題也隨之而來。
如果Aping一個不在這兩個網段下的計算機,比如1.1.1.1。那麼會發生什麼呢?
A發送數據給未知網段,轉發給路由器RA走默認路由,RA發給RB。RB也不知道這個網段怎麼走,通過默認路由轉發給RA。進入死循環。如此往復,數據包會在一條線路上不斷往返永不前進。
數據包有一個指標是TTL,一般默認是128,每過一個路由器TTL值-1.當TTL值爲0判定該數據包出現問題,丟包。正因爲有TTL這種機制,才能保證數據包出現這種死循環的情況下能夠刪除在網絡中的流量,否則這種無效信息會一直佔據帶寬影響整體通信效率。

這樣的情況同樣會出現在環路上。上上個圖如果試圖訪問不在記錄網段的計算機,也會出現死循環的情況。

在這裏插入圖片描述
然後試着分析一下上圖中每一種級別的路由器至少要加多少路由表。

在這裏插入圖片描述

Windows上的路由表

不同的OS上都有默認的路由表,只不過平常不太關注。
我們可以在cmd裏輸入route print 命令來查看計算機的路由表。

1.計算機網關就是默認路由
打開虛擬機,然後用cmd輸入route print命令。
在這裏插入圖片描述
網關就是對於當前位置的下一跳是誰。
在這裏插入圖片描述
不填網關,也就沒有對應的默認路由了。

2.計算機網絡連通性與路由表的關聯
計算機是可以手動添加路由表的,路由表的添加命令可以通過route /?來查看
在這裏插入圖片描述
可以使用
route add 目標網段 子網掩碼 網關 -參數 來寫
route delete 目標網段 子網掩碼


分析一下下面的場景。
在這裏插入圖片描述
web服務器的本地連接的(網關)默認路由應該指向哪一邊?一般而言web服務器與外界網絡交互更多,所以默認路由添加到右邊即可,但是添加後右邊的路由器又沒有到私網(左邊路由器左接口的網段)的路由表,那麼他需要把數據包給web服務器然後web服務器轉發給數據庫。
這種情況下,web服務器滿足上述要求的命令就是:
route add 172.16.0.0 mask 255.255.255.0 132.108.10.254 -p
指向數據庫的路由表

route add 0.0.0.0 mask 0.0.0.0 132.108.10.1 -p
默認路由

然後我們來思考一個問題,網關其實就是某個網段直連的路由器的某一個接口,那麼對於這個路由器接口,它的網關應該寫什麼?它自身嗎?或者說這裏的路由器改爲一臺有兩個網卡的電腦,一個網卡接交換機,交換機接一個局域網;一個網卡接路由器連接互聯網,那麼對於這臺設備接交換機的網卡,它的網卡怎麼寫?

==>什麼都不寫,不加網關。網關是下一跳的地址,而對於網關而言,如果你寫自己,它的下一跳給自己,數據包就出不去了。所以這裏就不用寫,意味着這臺計算機或路由器有一個默認路由,可以指向互聯網。
在這裏插入圖片描述
如果瞎寫了一個路由來充當網關(0.0.0.0 0.0.0.0 192.168.80.100【不存在的地址】),這麼寫的話,作爲網關,這是數據包的流向之一,而網絡會自動負載均衡,對於這臺設備他會認爲自己有兩條等價的通向互聯網的路徑,那麼如果這時交換機上的設備訪問互聯網,發送數據包過來,因爲負載均衡會有一半的數據包發給不存在的網關而丟包,另一邊傳輸成功。得益於傳輸層的可靠傳輸,丟包的數據會重傳,重傳仍然會分流一半給不存在的網關,也就說每次數據包的重傳都只有原效率的一半而且每次重傳必定會丟一半的包導致下一次重傳,會導致網速很慢。這裏的網速慢並不是因爲網絡擁堵,而是因爲路由表配置出現了問題。

網絡排錯案例
在這裏插入圖片描述
如圖ApingB不通,但是Aping路由器的兩個端口都通,路由器直連兩個網段又不需要路由表,且B ping 路由器也通。那麼問題在哪呢?

==>B沒有配置網關。也就說數據包能夠到達B但是返不回來,因爲數據包到B之後沒有網關出不去,即便是直連,計算機也不知道怎麼轉發這個數據包給路由器。

排錯時,IP、子網掩碼、網關都是很重要的一項。而排錯的中心思想就是數據包有去有回。
實驗驗證:
在這裏插入圖片描述
修改PC2的網關到無。然後模擬上述的情況,發現確實出現了這種問題,PC1ping通路由,甚至可以ping通80網段的網關,唯獨ping不通PC2。是因爲PC2沒有網關。數據包返回時出現了問題。
在這裏插入圖片描述
我們是用抓包工具來驗證想法。
在這裏插入圖片描述
可以看到PC2確實收到了來自PC1的數據包,但是他想返回時,需要返回到網關255.255.255.0,他開始詢問並且發現並沒有這個網關。
在這裏插入圖片描述
這樣看更加直觀,我們發現收到的和返回的數據包是相等的,但是接收端卻接收不到,再看下面的大量ARP協議就知道沒有找到合適的出口,一直等待到數據包被丟棄。由此可見網關的重要作用已經不可忽視性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章