詳解 Router 路由器

  • 前言
  • 正文
    • 路由器構造
    • 路由器基本指令
    • 靜態路由
      • 配置靜態路由
    • 動態路由
      • Distance Vector (距離史量)
      • DV 的缺陷
        • 設定最大跳數
        • 路由毒化
        • 水平分割
        • 計時器
      • Link State (鏈路狀態)
      • DV / LS 比較
      • 配置動態路由
    • 默認路由
      • 配置默認路由

前言

路由器之前也稍微介紹過,知道一些基本功能,也知道路由器是工作於網絡層的設備。這篇文章我們就更進一步,來深入了解路由器的知識。若想先了解網絡層的知識,歡迎先去看看 OSI Network Layer 網絡層,也可以去看看 搞清楚網絡中的設備 先對一些設備有初步概念。

正文

路由器構造

路由器詳細的內部構造如下圖 :

  • RAM : 存放一些路由器配置的相關信息。包話路由表,ARP cach路由器配置的相關信息。包話路由表,ARP cache 等等。

  • NVRAM : Non Volatile RAM,備份的 RAM。

  • Flash : 存放 Cisco OS 系統。

  • ROM : 存放 POST (Power On Self Test),以及 boostrap 程序。主要是在路由器要被啟動時做為一個驗證作用。

  • Interfaces : 路由器上有多個端口

路由器基本指令

當路由器被啟動時,首先是普通模式,是無法進行一些配置的,必須進入特權模式。

指令 作用
Router>enable 進入特權模式
Router#config terminal 進入全局配置模式
Router(config)#hostname [name] 為路由器命名
Router(config)#enable secret [password] 為路由器設置密碼
Router(config)#banner motd #[message]# 設定登陸提示文字
Router(config)#interface [type][number] 進入某類型某端口配置模式
Router(config-if)#ip address [address][subnet mask] 配置端口 ip 地址和子網掩碼
Router(config-if)#description[description] 設定端口激活消息
Router(config-if)#no shutdown 將端口激活
Router#copy running-config startup-config 保存路由器更改
Router#show startup-config 顯示NVRAM中配置文件
Router#show ip route 顯示路由表
Router#show interfaces 顯示路由器端口完整信息
Router#show ip interface brief 顯示簡單路由器端口信息

靜態路由

如果說一條路徑較為固定,也變化不大時,使用靜態路由會是更好的一個選擇。

配置靜態路由


可以去看看 静态路由命令配置,有一個清楚的例子。

動態路由

前面的文章中也稍微介紹過了動態路由。動態路由的時限就是要靠一些 routing protocol 來完成,來在路由器之間分享信息。

所以最重要的,當然是來探討這些 routing protocol。以下介紹的 routing protocol 都是 IGP(Interior Gateway Protocol) 的協議。這邊先介紹兩大類 routing protocol。

Distance Vector (距離史量)

DV 算法使用了 Bellman-Ford 算法,在路由器之間傳遞路由表信息,從而達到路由器之間知道彼此信息的目的。但是 DV 不允許任一路由器學習到整體路由的拓樸,而是只能學習到鄰居路由器的信息。

DV 的缺陷

DV 的缺陷如下圖,就是有可能產生路由迴路,導致網絡性能大幅降低。

為什麼上圖會造成路由迴路呢 ? 首先,假設今天網段 1 和 E 之間的線路斷掉了,那基於 DV,E 就會告訴 A 說,我到不了網段 1。但是這時,B 或許會基於之前學習到的信息,告訴 A 說,我到的了網段 1,可是其實這個路徑,本身就是通過 A 四跳到達的。於是 A 此時就以為 B 真的有一條路徑可以到達網段 1,導致數據包不斷在 A,B,C,D 之間傳輸,造成路由迴路。

那麼來看看對於這樣的缺陷,有哪些解決辦法!

設定最大跳數

設定最大跳數的做法就是在每個路由器上設定一個最大跳數,如果收到一個數據報跳數等於這個最大跳數 (通常設為 16),就丟棄該報文,視為不可達。

路由毒化

路由毒化的做法以這個拓樸來看。當 E 到達網段 5 的路徑斷掉後,E 並不會刪除到達網段 5 的這個條目,而是將之置為 16 跳到達 (不可達)。然後基於 DV 算法,就會將這個路由表依序傳遞下去,最終,A,B,C,D 都會知道到達網段 5 的代價是 16 跳,也就是不可達。

水平分割

水平分割的思路就是說,從一個端口得到的信息,不能再由相同端口發送回去,以此來避免迴路的形成。

計時器

計時器的做法是說,在網絡不可達時,不會立即刪除條目,而會先起一個計時器。在這個計時器的指定時間內,其餘路由器仍然持續交換信息,但是,只有當所收到的路由優化,才會接收下信息,否則就不變。等到計時器到點,才把條目刪除。

Link State (鏈路狀態)

Link State 的概念會比 DV 複雜得多,因為是要基於全局拓樸視野去決定最佳路徑等等,也因此,不會產生路由迴路的情形,也更高級些。

Link State 主要是通過每一個路由器有一個拓樸數據庫,並各自以自己為根,使用 SPF(Shortest Path First)算法生成各自的路徑樹。

之後會再介紹一些典型的 Link State Protocol。

DV / LS 比較

Distance Vector Link State
拓樸視角 鄰居視角 全局視角
計算單位 跳數 最短路徑
觸發機制 定時定期更新 事件觸發(拓樸改變)
收斂性
交換信息 路由表 鏈路狀態
效率

上表所指的收斂性指的是路由器從開始學習信息到穩定下來的過程的一個性質

配置動態路由

默認路由

默認路由的概念就是說,對於一個路由器,如果來了一個報文,其目的地址和路由表中的條目都沒有配對時,就會請默認路由代為轉發。

配置默認路由

詳解 Router 路由器相关推荐

  1. php 時間比較,PHP用strtotime()函數比較兩個時間的大小實例詳解

    在PHP開發中,我們經常會對兩個時間的大小進行判斷,但是,在PHP中,兩個時間是不可以直接進行比較,因為時間是由年.月.日.時.分.秒組成的,所以,如果需要將兩個時間進行比較的話,我們首先要做的就是將 ...

  2. linux(CentOS)下Mrtg的安装詳解

    linux(CentOS)下Mrtg的安装詳解 MRTG非常強大,他可以監控你的服務器的一舉一動,並且用web方式呈現給你,告訴你網絡,cpu,內存,硬盤等使用狀況,但是配置起來這個軟件實在是非常麻煩 ...

  3. 详解TP-Link路由器设置(图解)

    详解TP-Link路由器设置(图解) 本文摘自: http://diybbs.zol.com.cn/4/286_32495.html 路由器设置图解旨在为搭建网络的初学者准备,技术要点其实没有什么,但 ...

  4. Windows 2000/Xp 錯誤編號詳解

    2000/Xp 顯示藍色當機之STOP詳解 Windows 2000/Xp 顯示藍色當機之STOP詳解 1.停止錯誤編號:0x0000000A 說明文字:IRQL-NOT-LESS-OR-EQUA ...

  5. Unity 3D : ComputeShader 全面詳解

    Unity 3D : ComputeShader 全面詳解 https://blog.csdn.net/weixin_38884324/article/details/80570160 前言: 會寫一 ...

  6. Linux ps aux指令詳解--转

    linux上进程有5种状态: 1. 运行(正在运行或在运行队列中等待) 2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号) 3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有 ...

  7. redhat linux ls ls,Linux(3)RedHat7 基本命令二-ls命令詳解

    導語 本文將講述關於ls命令的詳細解析. ls命令 用法 ls [選項]... [文件]... ls [-aAdfFhilnrRSt] 目錄名稱 ls [–color={never,auto,alwa ...

  8. ps aux指令詳解

    linux上进程有5种状态: 1. 运行(正在运行或在运行队列中等待) 2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号) 3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有 ...

  9. 转:ps aux指令詳解

    分类: LINUX 2010-12-17 09:39 17876人阅读 评论(3) 收藏 举报 终端pthreadscommandcmdthreadrss linux上进程有5种状态: 1. 运行(正 ...

最新文章

  1. 如何查看阵列卡的队列深度
  2. linux根据端口查pid、根据pid查端口、根据pid查服务路径
  3. 学习mysql中使用inner join,left join 等
  4. org.apache.hadoop.ipc.Client: Retrying connect to server
  5. DataBinding 学习系列(3)新增的可见字段来编写对象(bean)
  6. Floyed-Warshall算法(求任意两点间最短距离)
  7. visual studio如何用低版本打开高版本项目
  8. 聚合(Aggregation)和组合(Composition)的区别
  9. HDU 2609 最小表示法
  10. paip.SVN merge分支合并到主干
  11. 谷歌浏览器访问网站无法加载验证码图片问题
  12. nginx源码下载、编译和安装
  13. unity内部图集切割
  14. uni-app开发和常规Vue开发
  15. 碰撞检测 :Separating Axis Theorem
  16. Google BBR是什么?以及在 CentOS 7 上如何部署
  17. 压电式雨量传感器RS485数据解析协议
  18. Tampermonkey 高级API的使用 附Demo
  19. 听新闻学英语android版,听新闻学英语
  20. String.matches()的用法

热门文章

  1. java游戏魔塔20层_▓▓◇◆20层魔塔超详细攻略◇◆ ▓▓
  2. 牛客白月赛49【题解】
  3. 基于Java的魔塔游戏设计与实现
  4. 学成在线 课程列表 页面
  5. 最新,2022中科院分区发生修改,新增1区期刊数十本(附修改版目录)
  6. bootstrap实例《一》星巴克官网
  7. 【SpringMVC】逃不掉的CUID
  8. 深入浅出聊Unity3D项目优化:从Draw Calls到GC (难度2 推荐5)
  9. 扫地机器人的轮子困住_小米扫地机器人轮子在运行中悬空怎么办?怎么清理传感器?...
  10. vue 导入第三方js实例对象