路由器工作原理、路由表的形成、静态路由、缺省路由、单臂路由

一、路由、路由器

 

路由:跨越从源主机到目标主机的一个互联网络来转发数据包的过程。在这个过程中负责转发或者负责路由的机器就叫做路由器。

路由器:能够将数据包转发到正确的目的地,并在转发过程中选择最佳路径的设备。

如下图所示,主机A想和B通信,主机A先产生数据包,在经过一个互联网络之后,到达主机B。

 

 

二、路由器工作原理

 

如下图所示,有两个路由器router1和router2,router1连接的是1.0网段,router2连接的是4.0网段,1.0网段和4.0网段默认是不能通信的。现在如果主机1.1想和右边的主机4.2通信,这个过程是如何发送的呢?

 

 

首先主机1.1会先检查自己的ARP缓存表,发现自己的表中并没有4.2的MAC地址,于是它发广播,这个广播会发送给主机1.2和router1的E0接口,1.2不会给1.1任何回复,而router1发现4.1不是同一网段所以不会帮它转发,而是把自己的IP1.3和E0接口的MAC地址回复给主机1.1,所以在1.1的ARP表中保存的是E0接口的MAC地址和其IP的对应关系。 所以主机1.1想和4.2通信的时候,它产生的数据会先以单播的形式传给router1的E0接口。

 

 

当E0接口收到数据包之后,查看数据包中的目标地址为4.2,然后router1会查找自己的路由表,发现在自己的路由表中能找到4.0这个网段,并且4.0网段在s0接口上,所以路由器就会根据路由表的指示把数据包从自己的E0接口路由至S0接口。(这里要注意的是,如果路由表中找不到4.0这个网段,路由器不会像交换机一样执行广播,而是会丢弃这个数据包,并向1.1返回一个请求超时的结果。路由器也不会学习源目标地址。即路由器根本不关注源地址,只关注目的地址)

 

 

进而通过S0端口所连接的互联网络把数据包传递到了router2的S0接口

 

 

 

当router2收到数据包之后 ,router2查看数据包的目标地址,发现是4.0网段的,然后也查找路由表,发现4.0网段连接在自己的E0接口上,所以router2会根据路由表的指示把这个数据包从自己的S0接口路由到E0接口上。

 

 

 进而通过E0接口找到最终的目的地,把数据包转发过去,完成整个的转发过程

 

 

 

 

三、路由表的形成

 

我们提到,路由器在自己的路由表中找不到目标地址时,不会像交换机一样执行广播,而是会丢弃这个数据包,那么如果是一个新的路由器,它的路由表是空的怎么办呢?它不会像交换机一样不断的学习源地址以扩充自己的MAC地址表,那么路由器中的路由表是怎么来的呢?

路由表:在路由器中维护的路由条目,路由器根据路由表做路径选择。

那么路由表到底是怎么形成的呢?

 

1、直连路由

如下图所示,这个路由器有两个接口,分别是E0/0/0接口和E0/0/1接口,路由器想转发数据,我们需要在路由器的接口上配置IP地址,所以第一步我们先在E/0/0/0端口配置一个IP地址为192.168.1.1/24,当配好之后,路由表中立刻就出现了这个接口和网段的信息。所以路由器是会学习的,只不过学习的不是源目标地址,而是自己接口的网段信息。

 

 然后如果再在E/0/0/1接口上配置一个10.1.1.1/8,路由表中也会立刻出现这个信息

 

 

所以路由器最开始的路由表中保存的就是自己接口地址所属的网段,这种路由就叫做直连路由。

 

如果现在这个路由器又连了一个路由器,并把它的一个接口配置为20.0.0.0/8,那么这个网段会出现在刚才那个路由器的路由表中吗?如果不出现的话就没法和20网段通信,所以我们是需要让他出现的,即让非直连的网段出现在自己的路由表中,这个怎么实现呢?方法只有两个,一个是通过静态路由,一个是通过动态路由,静态路由是指让管理员手动把这个网段输入到这个路由器的路由表中,动态路由是指让各个路由器之间相互学习,不在需要手动输入。

 

所以对于非直连的路由,其默认是不会出现在本地路由表中的,若想有知道非直连的路由,则需要通过静态路由和动态路由的方法。

 

2、静态路由

 

静态路由是管理员手工配置的,是单向的。

如下图所示,有两个网络,左边是一个叫network的网络,右边是一个公司的网络。RTA和RTB两个路由器直连,RTA S0接口的IP地址是192.168.2.2,RTBS0接口地址是192.168.2.1,RTB右边网段是192.168.1.0。

 

现在对于RTA来讲,它的路由表里只会有一个路由,即 192.168.2.0/24  S0 , 对于RTB来讲,它的路由表里应该有两个路由,即 192.168.2.0/24 S0 和 192.168.1.0/24 E0/0/1(假设这个端口是E/0/0/1),现在的问题是RTA想访问192.168.1.0,但是RTA的路由表中没有这个网段,所以这时候就需要管理员手动把192.168.1.0这个网段加入到RTA的路由表中,这就是静态路由。

 

 注:在路由过程中,只有网络中的所有路由器的路由表完全一致了,该网络才能正常转发数据。 若网络中的所有路由器的路由表完全一致后,该网络称之为收敛了。只有收敛的网络才能够正常的转发数据。 网络不收敛的状态称之为动荡状态。

 

静态路由特点如下:

 

2、缺省路由

有一个问题,我们知道只有路由表中有目的网段的时候,才能转发数据,但是我的路由器的路由表中不可能有全球所有的网段,这时候怎么办呢?总不能通过静态路由的方式把网段一个一个加到路由表中,这特别特别浪费时间。我们家里每年都要交宽带费,宽带费不仅包含带宽网速,其实还包含了路由转发(即上网)功能。所以当我在家里要访问不管是百度、新浪还是搜狐,如果我的路由器的路由表中没有这些目的地址,那么它会把这些请求全部传递给运营商的路由器,运营商的路由器负责帮我找到这些目的地,这些目的地把回包回给运营商路由器,运营商路由器在回给我的路由器,从而完成数据的转发过程。

所以所谓的缺省路由就是把我所有不认识的路由都统一的发送给另外一个人,这个路由就是缺省路由。即当路由器在路由表中找不到目标网络的路由条目时,路由器把请求转发到默认路由接口。

总结下来就是:当路由器在自身的路由表中无法找到目标网络时,令路由器不要丢弃数据包,而是将数据包转发到一个默认的路由器上,这条路由称之为缺省(默认)路由。

 缺省路由特点:

 

3、单臂路由

在一个企业当中一般各个部门会使用不同的vlan,我们希望这几个部门之间相互不能通信。现在我们知道不同网段之间也是不能通信的。所以我们让不同部门使用不同VLAN的同时也使用不同的网段,做到二层和三层同时隔离,确保不同部门不能通信,如下图所示。

 

 

但是有的时候我们是需要不同部门之间能通信的,在VLAN不同网段不同的情况下,这个时候应该怎么实现呢?首先,能够让不同网段的主机之间进行通信的只有路由器,所以我们肯定需要一个路由器。

 

 另外,我们知道不同VLAN的主机发送数据时,在交换机侧是要被贴上不同的VLAN标签的,然后带着VLAN标签的数据在被交换机转发到路由器,所以交换机和路由器之间这条链路只能是trunk链路,因为只有trunk链路才能转发带vlan标签的数据。

 

 

 

 

假如现在192.168.1.2要和192.168.2.2通信,那么我们肯定要配置网关,因为不同网段之间通信是需要通过网关的,交换机是没法配网关的,因为他是一个二层设备没法识别到IP地址,我们只能在路由器上配网关,但是现在路由器只有一个接口,我们怎么去配这三个网段的三个网关呢?此时有一种技术可以把路由器的一个端口拆成三个子接口,每一个子接口为一个网段提供服务,通过这种技术就可以实现一个接口配置多个地址。

所以通过这种技术,192.168.1.2通过VLAN1把自己的数据包给到路由器的第一个子接口,第一个子接口查找路由表之后,又从另一个子接口路由到192.168.2.2,这样一来就实现了单臂通信。 即进和出走的都是一根线,这就是单臂路由。

 

 

注*:路由器在路由数据包时,三层头部中的源IP地址和目标IP地址始终保持不变,而路由器会不断的使用自身接口的MAC地址做二层重封装,将数据包一路路由至目的地。即MAC地址的传输仅具有本地效应,而IP不是。

 

posted @ 2022-08-26 14:34  云计算成长路  阅读(2650)  评论(1编辑  收藏  举报