路由工作原理

路由的工作原理

所谓的路由便是路由器从一个接口上收到数据包,根据数据包的目的地址进行分组的转发,寻找路径转发到另外的接口的过程。

路由器与交换机不同,交换机是由集成电路所组成的交换芯片来进行数据包的转发,而路由器不同,路由器就像是一种特殊的计算机,他拥有计算机该有的元素:CPU、操作系统、内存、存储,其中主要依靠的是 CPU,路由器其实就是一个另类小型的计算机。

在路由器中有这样的一些组件以及其功能:

  • cpu:用于执行操作系统的指令。

  • 随机访问存储器RAM(断电容易丢失),有这样一些作用:
    运行操作系统
    运行配置文件
    存放ip路由表
    ARP缓存表
    数据包缓存区

  • 只读存储器ROM(其中的内容不会丢失,同时还不能修改,是在出厂的时候烧录上去的),包括:

    Bootstrap指令:引导路由器开机过程
    硬件的基本自检程序POST
    迷你版IOS,简化版的操作系统,用于在操作系统丢失,无法进入操作系统时紧急恢复。

  • 非易失性 RAM(NVRAM)。即在断电之后也不会丢失数据,用于存储启动配置,包括 IP 地址、路由协议,主机名等等。基本很少使用了

  • Flash 闪存。存放我们的操作系统镜像如 IOS,相当于我们的硬盘。NVRAM 的淘汰,便是将数据存放在 Flash。

有关于路由器基本的一些查询命令:
查看版本信息:

show version

查看cpu负载,使用量,以及进程信息:

show process cpu

查看系统所运行的协议,以及端口状态:

show protocols

查看内存:

show memory

查看开机加载的配置信息:

show startup-config

把配置完成的信息保存到开启加载的文件中:

running-config startup-config

路由转发过程:
在这里插入图片描述
PC1 希望发送数据包给 PC2,而 PC1 首先确定目的 IP 地址是否在同一个网络中(通过 IP 地址与子网掩码的和运算,得出网络号然后对比使用同样方法得出的 PC2 的网络号):

若是网络号相同则通过 ARP 转发数据包;
若是网络号不同则通过将数据包转发给默认网关(将在后续课程中详解)。

Router1 接收到 PC1 的以太帧,将该帧复制到 buffer(缓冲区)中,分用得到以太帧的类型(确定其中包含 IP 数据包)、目的 MAC 地址是接收端口的 MAC 地址,确认该数据包是该自己接收的,便继续分用 IP 数据包头得到目的 IP 地址,发现 IP 地址与自己的所有端口都不匹配,便知晓此数据包并不是发给自己的,同时与自己不在同一个网段,便查询自己的路由表:

若是路由表中并没有该网段的信息便丢弃;
若是路由表中有该网段的信息,变查看路由表中所记录该网段应该从哪个端口转发出去。

Router1 在路由表中查到所应该转发的端口便修改原来的数据帧中源 MAC 地址与目的 MAC 地址,然后就转发给下一跳的 Router2

若是 Router 直接连接的端口是以太网口(例如 ethernet,fastethernet)将继续使用以太帧的封装方式
若是 Router 直接连接的端口是串口(例如 Serial 口)将使用 PPP 的点到点的协议封装方式封装数据帧

Router2 在收到数据包之后以同样的方式分用确实数据包的类型与 MAC 地址,最后得到目的 IP 地址,发现改网段是自己直连的网段,便查看 ARP 缓存表:

若是 ARP 缓存表中有该 IP 地址与 MAC 地址的记录便直接转发给 PC2;
若是 ARP 缓存表中无该 IP 地址与 MAC 地址的记录便发送 ARP 请求来获取 PC2 的 MAC 地址;

这样便是路由器完成一次数据包转发的任务。

这便是路由器在接收到数据包到转发数据包的整个过程。其中转发到的下一个路由器成为下一跳(类似于公交车、地铁的下一站),并且因为当前这一跳与下一跳的链路可能与原来的不同,所以新封装的数据帧的协议与格式可能略有不同(例如交换机发给路由器是是用的以太网的封装协议,而路由器直接使用的是串口连接,此时数据帧的封装协议便会改成 PPP)。
了路由转发机制:
在路由器中有一张路由表,他存放在内存中,如地图一般,收到数据包就会在路由表中查看,有这个网段,认识路,便转发数据包,若是地图中便没有该目的地网段,便会丢弃该数据包,因为它不认识路,无法继续转发下去。

这就是路由表的功能,路由表负责寻址,找到最佳的路由路。找到了最佳路由之后便需要将数据包转发出去,在路由器中数据的转发机制有三种:

  • 进程交换
  • 快速交换
  • 思科快速转发(CEF)
    进程交换:非常早期的转发机制,数据包到达,路由器将接收的数据包拆解获得ip目的地址,将之与路由表中的条目进行对比,一旦匹配便转发。缺点时效率低下,每来一个数据包都要计算,哪怕全都是重复的网络地址。

快速交换:计算了一遍之后,找一个专门的地方存放结果,这样在下一次遇到相同的目的ip地址便不用重新计算路由的路径,可以有效的减少cpu做同样事情。

思科快速转发:网络刚刚创建或者拓扑发生更改的时候,当网络融合后 FIB 与 邻接表会将转发数据包的所有因素都考虑到然后计算出最佳的路径集合,如此在数据包到来的时候可以直接查询到结果然后进行转发这样就不用再数据包到来的时候计算,这样便进一步的节省了转发所需的时间。

思科默认开启cef,关闭:

no ip cef

有关路由表:
查看路由表:

show ip route

在路由表中每一项有这样一些信息:

路由来源:确定该路由表项的获取方式:是直连;还是通过静态或动态路由协议所获得
目的网络:确定远程网络的网络号,也就是网络地址。
管理距离(AD):AD 代表路由的“可信度”;AD 越低,路由来源的可信度越高,表示首选路由来源。获取方式的不同 AD 的值也就不同。当同一个目的地址有不同的路径时,这将是一个参考值,指明了发现路由方式的优先权。
度量: 路由协议会给确定到达远程网络每一条路径计算出一个数,这个数就是度量值。 较低的值表示首选路由, 因为度量值(Metric)指明了路径的优先权
下一跳:用于确定转发数据包的下一路由器的 IP 地址。
路由时间戳:用于确定从获取该路由信息之后经历了多长的时间。
传出接口:用于确定将数据包转发至最终目的地的发出接口。

基本命令:
配置环回接口ip:

int loopback 0
ip address ip地址 子网掩码

查看所有端口ip信息:

show ip interface brief

查看某个端口上运行的配置信息;

show running-config interface 端口ID

可以用管道过滤得到自己想要的结果,常用参数有四类:

  • section:显示从过滤表达式开始的整组部分信息
  • include:显示所有符合过滤表达式的信息
  • exclude:排除所有符合表达式的信息
  • begin:显示从符合表达式开始之后的所有信息
show running-config | section line #要有一个空格
发布了108 篇原创文章 · 获赞 26 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_37369726/article/details/102979510