路由器工作原理浅谈

前提是你 提交于 2019-12-01 09:03:58

路由器工作原理浅谈

路由器是构建整个网络最核心的设备。比较著名的品牌为cisco、锐捷、华为、TP-LINK、H3C等等。之前工作中接触的较多的是思科和银河风云,思科的主要是7609,性能十分稳定,基本上全年每天24小时工作不会出问题。银河风云一般,十分笨重,板卡容易坏,2M接口不稳定(进行自环不是loopback状态),软件有bug(一次作业中发现其以太口如果正常工作中,当将网线从以太口中拔出再插上,和对端的路由器之间路由协议的邻居就建立不起来,必须将整个路由器进行重启才正常工作)。

 路由器其实和我们普通使用的计算机类似,有cpu、输入输出接口、内存,操作系统(思科的是ios,华为的VRP)。思科公司从来不承认自己是硬件公司,而是一直声称自己是软件公司,由此可以路由器的操作系统是核心,操作系统的性能直接决定了路由器的性能。路由器和我们使用的计算机最大的不同之处就是路由器是用来进行转发数据包的,而我们使用的计算机只是接收数据包或者发送数据包。好比我们个人只会收快递或者发快递,只是作为叶子节点,但是快递中转站则接收来自各地的快递然后进行判断将每个包裹从正确的路线发送出去,这个快递中转站就和我们的路由器很相像了。

 路由器有很多接口,我们的电脑一般只有一个以太网口。而路由器比较常见的接口有2M口、以太电口、以太光口、POS口等等,这也是为了满足整个网络的异构性。路由器这些接口主要是做什么用的,当然是用来接收数据包、发送数据包的。数据包大家可以看成一个个快递包裹。比如你要通过网络给朋友发送一首mp3,一个包裹装不下,那么就分成1000个包裹,当然是数据包,这个工作不需要你来做,电脑自动完成了,当你朋友收到这1000个数据包后,进行检查有没有破损的,没有就进行重新组装成mp3,如果在传送过程中有丢失则会通知你进行重新传送,重新传送的时候只需要重传丢弃或进行校验出错的那几个数据包即可。另外这1000个数据包到达朋友处的顺序是不定的,他们各自独立的在网络上跑向目的地,这就是分组交换,相对应的就是电路交换,电路交换就如我们打电话,进行交互之前必须提前申请好一条资源线路。

 好的,路由器接口是用来接收数据包的,那么数据包到达路由器接口会发生什么呢?首先路由器会检查数据帧目标地址字段中的数据链路标识。(其实就是MAC地址,二层,数据链路层,只在单跳中有用,在网络上每进行一跳数据包头中的目的MAC都要进行改写才能继续进行下一跳。这和IP地址不一样,数据包中的目的IP地址在整个网络传输过程中是一直不会变化的。IP地址类似我们的地址,MAC地址类似于我们每个人的身份证号),如果它包含了路由器接口标识符或者广播标识符,那么说明这个数据包是给路由器 我自己的,则路由器需要将从帧中剥离出数据包并传递给网络层。

在网络层,路由器将检查数据包的目的IP地址。如果目的IP地址是路由器的接口IP地址或者是所有主机的广播地址,那么需要进一步检查数据包的协议字段,然后再把被封装的数据发送给适当的内部进程,就是说这个数据包就是给我自己的,我自己进行消化处理,不需要我再进行转发。

除此之外,其他所有的数据包都不是给我的,都需要我进行转发,进行转发就要进行路由选择,否则路由器不知道应该从哪个接口将该数据包扔出去。数据包的目的地址可能是另一个网络上的主机地址,这个网络也许和路由器直接相连、也许不直接相连。那么路由器就需要查看自己的路由表来判断这个数据包中指示的目的地址应该从哪个接口送出去。路由表是路由器一个最核心的数据库,是不断动态变化的,是路由器工作的基石,他是由一条条的路由组成的,每一条路由至少包含了两点:目标地址、指向目标地址的指针。目标地址:这是路由器可以到达的网络地址。指向目标的指针:指针不是指向路由器的直连目标网络就是指向直连网络内的另一条路由器地址,或者是到这个链路的本地接口。而且数据包在进行路由匹配的时候遵循路径选择最长匹配原则,就是如果有多个匹配,则选择掩码最长的。

我们上面所说的路由表是路由器工作过程中最核心的东西,是一个动态变化的数据库,所有数据包转发都需要根据路由表进行匹配。而且每个路由器都有自己的路由表。那么路由表中一条条的路由是怎么来的呢,由静态路由和动态路由协议得来的,静态路由是手动设置的,动态路由协议包括RIP、EIGRP、OSPF、ISIS、BGP等,在路由器中看启动了哪些路由协议,也即启用了哪些进程。这些进程就像一个个的打工仔,不断的和同样运行该协议的邻居路由器们进行交互、进行计算,从而找到新的路由供路由器进行选择,路由器根据一定的策略再决定要不要将该路由加入路由表中,只有加入了路由表中的路由才是有用的。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!