# 網絡基本功(五):細說路由(下)
**轉載請在文首保留原文出處:EMC中文支持論壇**[https://community.emc.com/go/chinese](https://community.emc.com/go/chinese) [](http://service.weibo.com/share/share.php?title=%23ECN%e4%b8%ad%e6%96%87%e6%94%af%e6%8c%81%e8%ae%ba%e5%9d%9b%23 %e7%bd%91%e7%bb%9c%e5%9f%ba%e6%9c%ac%e5%8a%9f%ef%bc%88%e4%ba%94%ef%bc%89%ef%bc%9a%e7%bb%86%e8%af%b4%e8%b7%af%e7%94%b1%ef%bc%88%e4%b8%8b%ef%bc%89@EMC%e6%98%93%e5%ae%89%e4%bf%a1%e4%b8%ad%e5%9b%bd%e6%8a%80%e6%9c%af%e7%a4%be%e5%8c%ba&url=https://community.emc.com/message/836518#836518)
## 介紹
靜態路由是指由網絡管理員手工配置的路由信息。當網絡的拓撲結構或鏈路的狀態發生變化時,網絡管理員需要手工去修改路由表中相關的靜態路由信息。動態路由是指路由器之間相互通信,傳遞路由信息,利用收到的路由信息更新路由表的過程。是基于某種協議來實現的。本文詳細闡述這兩者的實現過程。
## 更多信息
**靜態路由:**
靜態路由是指由網絡管理員手動配置在路由器上的表項。對于特定的目標地址,以及在小型或穩定的網絡環境,手動配置靜態路由可以非常成功地應用。通過使用靜態路由,網絡管理員確定了通向一目標網絡的路徑。
一個重要的概念是:路由的核心在于下一跳。下一跳是一個特定路由器的角度來看,距離目標地址更近一步的路由器。下圖顯示了一個中型路由拓撲。從R1的角度來看,R2同時是到達192.168.3.0以及192.168.4.0的下一跳。
[](https://community.emc.com/servlet/JiveServlet/showImage/2-836518-93887/image002.jpg)
初始狀態下,除了已經啟動的接口和給定的IP地址以外,什么都沒有配置。路由器的路由表只會包含直連路由。每一個路由器只知道它接口相連的兩個網絡。下表顯示了這一時刻的路由表。
[](https://community.emc.com/servlet/JiveServlet/showImage/2-836518-93903/image003.png)
從上表可以看出,路由器不知道整個網絡的情況。例如,Node A連接到Switch 1嘗試訪問Switch 4的Node B。經過主機路由表處理后,A將數據轉發至R1的默認網關(192.168.1.254),R1查詢自己的路由表并發現沒有目標網絡的相關信息。于是R1發送ICMP destination unreachable消息。
這個問題怎么解決呢?像這樣的小型網絡,網絡管理員可以在路由器輸入路由命令,配置額外的轉發信息:
```
ip route destination-network destination-network-mask next-hop-IP-address (forwarding router interface)
```
例如,以下命令告知R1怎樣到達192.168.3.0以及192.168.4.0:
```
ip route 192.168.3.0 255.255.255.0 192.168.2.254
ip route 192.168.4.0 255.255.255.0 192.168.2.254
```
R1上輸入命令之后,路由表更新如下所示:
[](https://community.emc.com/servlet/JiveServlet/showImage/2-836518-93904/image004.png)
現在R1理解到達這些網絡需要經過R2,但是R2接下來怎么辦呢?由于192.168.3.0直接連接到R2,R2可以直接ARP主機。但對于192.168.4.0,R2需要管理員以下命令來協助:
```
ip route 192.168.4.0 255.255.255.0 192.168.3.254
```
路由表相應更新:
[](https://community.emc.com/servlet/JiveServlet/showImage/2-836518-93905/image005.png)
目前只成功了一半,報文需要返回。查看R3的路由表,發現路由器不知道怎么找到192.168.1.0。Node A的報文到達之后,Node B嘗試回復,但是會從R3收到ICMP destination unreachable的消息。在Node A看來,好像傳輸從未收到回復。要完成這一過程,需要在所有路由器上對于所有未知網絡輸入ip route命令來更新路由表。
[](https://community.emc.com/servlet/JiveServlet/showImage/2-836518-93906/image006.png)
R2真正的路由表以及在R2上輸入的ip route命令如下圖所示:
[](https://community.emc.com/servlet/JiveServlet/showImage/2-836518-93907/image007.jpg)
**動態路由:**
路由協議允許路由器動態共享遠端網絡的信息以及自動將這信息添加到自己的路由表中。動態路由協議的一大好處在于當拓撲變更時,路由器會交換路由信息,從而能夠自動學習新增網絡,并且在鏈路故障時,找到替換路徑。
路由協議完成這一功能的方式取決于它所使用的算法以及此協議的操作特性。通常來說,動態路由協議的執行過程如下:
1\. 路由器在端口發送和接收路由消息。
2\. 路由器與其他使用相同路由協議的路由器共享路由信息。
3\. 路由器交換路由信息來學習遠端網絡。
4\. 當路由器檢測到拓撲變化時,路由協議將這一變化通知其他路由器。
**網絡發現**
例如,R1,R2,R3之間的拓撲:
[](https://community.emc.com/servlet/JiveServlet/showImage/2-836518-93908/image008.jpg)
R1:發送10.1.0.0以及10.2.0.0的更新;從R2接收10.3.0.0的信息,跳數加1;在路由表中存儲10.3.0.0的信息,metric設為1。
R2:發送10.3.0.0以及10.2.0.0的更新;從R1接收10.1.0.0的信息,跳數加1;在路由表中存儲10.1.0.0的信息,metric設為1。從R3接收10.4.0.0的信息,跳數加1;在路由表中存儲10.4.0.0的信息,metric設為1。
R3:發送10.3.0.0以及10.4.0.0的更新;從R2接收10.2.0.0的信息,跳數加1;在路由表中存儲10.2.0.0的信息,metric設為1。
**交換路由信息**
路由器周期性的更新信息。在最初的網絡發現結束后,每個路由器通過發送和接收以下更新來繼續收斂的過程:
[](https://community.emc.com/servlet/JiveServlet/showImage/2-836518-93909/image009.jpg)
R1:發送10.1.0.0,10.2.0.0以及10.3.0.0的更新;從R2接收10.4.0.0的信息,跳數加1;在路由表中存儲10.4.0.0的信息,metric設為2;從R2收到相同的10.3.0.0的更新,metric為1,不作更新。
R2:發送10.1.0.0,10.2.0.0,10.3.0.0以及10.4.0.0的更新;從R1接收10.1.0.0的信息,不作更新;從R3接收10.4.0.0的信息,不作更新。
R3:發送10.2.0.0,10.3.0.0以及10.4.0.0的更新;從R2接收10.1.0.0的信息,跳數加1;在路由表中存儲10.1.0.0的信息,metric設為2;從R2收到相同的10.2.0.0的更新,metric為1,不作更新。
距離矢量路由協議切斷了鄰居路由之間的環路,也稱為**水平分割**。水平分割阻止信息從**同一端口**接收之后再發送出去。例如,R2不會從Serial 0/0/0端口發送網絡10.1.0.0的信息,因為R2從Serial 0/0/0學習了10.1.0.0。
網絡中的路由器收斂了信息之后,路由器可以使用路由表來決定到達目的地的最佳路徑。不同的路由協議有不同的計算最佳路徑的方法。
**路由收斂**
當所有路由器對于整個網絡有準確的更新之后,達到路由收斂狀態,如下圖所示:
[](https://community.emc.com/servlet/JiveServlet/showImage/2-836518-93910/image010.jpg)
收斂時間是路由器分享信息,計算最佳路徑,更新路由表的時間。收斂同時是協作并且獨立的。路由器相互之間共享信息但是必須各自獨立的計算自己路由拓撲改變所帶來的影響。? 由于它們各自獨立地關于新的拓撲達成一致,于是說它們收斂于這種一致。
- 介紹
- 網絡基本功(一):細說網絡傳輸
- 網絡基本功(二):細說交換機
- 網絡基本功(三):細說VLAN與Trunk
- 網絡基本功(四):細說路由(上)
- 網絡基本功(五):細說路由(下)
- 網絡基本功(六):鏈路聚合
- 網絡基本功(七):細說IP地址與子網
- 網絡基本功(八):細說TCP滑動窗口
- 網絡基本功(九):細說TCP重傳
- 網絡基本功(十):細說TCP確認機制
- 網絡基本功(十一):TCP窗口調整與流控
- 網絡基本功(十二):細說Linux網絡配置(上)
- 網絡基本功(十三):細說Linux網絡配置(下)
- 網絡基本功(十四):細說診斷工具ping
- 網絡基本功(十五):細說網絡性能監測與實例(上)
- 網絡基本功(十六):細說網絡性能監測與實例(下)
- 網絡基本功(十七):細說tcpdump的妙用(上)
- 網絡基本功(十八):細說tcpdump的妙用(下)
- 網絡基本功(十九):細說NAT原理與配置
- 網絡基本功(二十):細說ICMP和ARP
- 網絡基本功(二十一):細說HTTP(上)
- 網絡基本功(二十二):細說HTTP(下)
- 網絡基本功(二十三):Wireshark抓包實例診斷TCP連接問題
- 網絡基本功(二十四):Wireshark抓包實例分析TCP重傳
- 網絡基本功(二十五):Wireshark抓包實例分析TCP重復ACK與亂序
- 網絡基本功(二十六):Wireshark抓包實例分析TCP窗口及reset
- 網絡基本功(二十七):Wireshark抓包實例分析HTTP問題(上)
- 網絡基本功(二十八):Wireshark抓包實例分析HTTP問題(下)
- 網絡基本功(二十九):Wireshark抓包實例診斷數據庫常見問題
- 網絡基本功(三十):細說DNS(上)
- 網絡基本功(三十一):細說DHCP