1.路由原理
路由器工作在OSI参考模型的网络层,它的重要作用是为数据包选择最佳路径,最终送达目的
地。那么路由器是怎样选择路径的呢?
在只有一个网段的网络中,数据包可以很容易地从源主机到达目标主机,但是如果一台计算机
要和非本网段的计算机进行通信,数据包可能就要经过很多路由器。如图所示,主机A和主机
B所在的网段被许多路电器隔开,这时主机A与主机B的通信就要经过这些中间路电器这就要面
临一个很重要的问题--如何选择到达目的地的路径。数据包从A到达B有很多条路径可供选择,
但是很显然,在这些路径中在某一时刻总会有一条路径是最好(最快)的。因此,为了尽可能地
提高网络访问速度,就需要有一种方法来判断从源主机到达目标主机所经过的最佳路径,从而
进行数据转发,这就是路由技术。
1.1路由器的工作原理
首先来看一下路由器是如何工作的。对于普通用户来说,能够接触到的只是局域网,通过在 PC上设置默认网关就可以使局域网的计算机与Internet进行通信,其实在PC上所设的默认网关就是路由器以太口的IP地址。如果局域网的计算机要和外面的计算机进行通信,只要把请求提交给路由器的以太口即可,接下来的工作就由路由器来完成。因此可以说路由器就是互联网的中转站,网络中的数据包就是通过一个一个的路由器转发到目的网络的。
那么路由器是如何进行数据包的转发的呢?就像一个人如果要去某个地方,他的脑海里一定要
有一张地图一样,在每个路由器的内部也有一张地图,这张地图就是路由表。在这个路由表中,包
含该路由器掌握的所有目的网络地址,以及通过此路由器到达这些网络的最佳路径。这个最佳路径
指的是路由器的某个接口或下一跳路由器的地址,正是由于路由表的存在,路由器才可以高效地进
行数据包的转发。下面以如图所示的网络为例,介绍路由器转发数据包的过程,为了讨论方便
将网段192.168.1.0/24简写为10,其他网段也做类似处理。
(1)主机11要发送数据包给主机41,因为IP地址不在同一网段,所以主机会将数据包发送
给本网段的网关路由器A.
(2)路由器A接收到数据包,先查看数据包IP首部中的目标IP地址,再查找自己的路由表。数
据包的目标IP地址是41属干40网段路由器A在路由表中查到40网段转发的接口是SO接口,
干是,路由器A将数据包从S0接口转发出去。
(3)网络中的每个路由器都是按这样的步骤转发数据的,直至到达路由器 B,再用同样的转发
方法从EO口转发出去,最后41主机接收到这个数据包。
在转发数据包的过程中,如果在路由表中没有找到数据包的目的地址,则根据路由器的配置转发到默认接口或给用户返回目标地址不可达的信息。
上述虽然只是对路由器工作过程的简单描述,但却是路由器最基本的工作原理。
1.2路由表的形成
路由表是在路由器中维护的路由条目的集合,路由器根据路由表做路径选择,路由表是怎么形成的呢?
直连网段:当在路由器上配置了接口的IP地址,并且接口状态为up时,路由表中出现直连路由项。如图所示,路由器A在接口F0/0和F0/1上分别配置了IP地址,并且在接口已经是up状态时,在路由器A的路由表中就会出现1921681.0和10.0.0.0这两个网段。
非直连网段:对于20000这样不直接连在路由器A上的网段,路由器A应该怎么写进路由表呢?这就要使用用静态路由或动态路由来将这些网段及如何转发写到路由表中。
2.静态路由和默认路由
当路由器在网络拓扑中处于不同的位置时,需配置静态路由或默认路由以保证网络的连通性。
2.1静态路由
非直连网段:对于20000这样不直接连在路由器A上的网段,路由器A应该怎么写进路由表呢?这就需要使用静态路由或动态路由来将这些网段及如何转发写到路由表中。
在路由器A上添加静态路由必须指明下列内容。
1. 要到达的目的网络是1921681.0/24.
2.与路由器A直连的下一个路由器B的接口IP地址或路由器A的本地接口。
静态路由是管理员手动设置的,除非网络管理员干预,否则静态路由不会发生变化。由于静态
路由需要管理员逐条写入,而且不能对网络的改变做出反应,因此一般来说,静态路由用于网络规
模不大,拓扑结构相对固定的网络中。静态路由的特点如下,
1.允许对路由的行为进行精确的控制。由于静态路由是手动配置的,因此管理员可以通过静
态路由来控制包在网络中的流动。
2. 静态路由是单向的,也就是说,如果希望实现双方的通信,必须在通信双方配置双向的静态路由。例如,在上例中,在路由器A上配置了静态路由,只是告诉路由器 A 如何到192.168.1.0网段,如果路由器B需要将数据包转发到连接在路由器A上的网络,就还要在路由器B上配置路由。
3.静态路由的不足之处是缺乏灵活性。静态路由虽然能够对包通过路由器的路径进行精确制,但同时也限制了它的灵活性,由于它是静态配置的,不能根据网络的变化灵活改变因此当网络拓扑更新时(如链路故障),管理员就必须重新配置该静态路由。
2.2默认路由
默认路由是一种特殊的静态路由,是当路由表中与数据包的目的地址之间没有匹配的表项时路由器能够做出的选择。如果没有默认路由,那么目的地址在路由表中没有匹配表项的数据包将被丢弃。
默认路由在某些时候非常有效,当存在末梢网络(StubNetwork)时,默认路由会大大简化路由
器的配置,减轻管理员的工作负担,提高网络性能。
那么,什么是末梢网络呢?末梢网络是这样一种网络:这个网络只有一个唯一的路径能够到达
其他网络,如图84所示的路电器B右侧的网络19216810就是一个末档网络,这个网络中的主机要访问其他网络必须通过路申器B和路电器A没有第二条路可走这样就可以在路电器B上配置一条默认路由,只要是网络192.168.10中的主机要访问其他网络,这样的数据包发送到路由器B后,路由器B就会按照默认路由来转发(转发到路由器A的SO口),而不管该数据包的目的地址到底是哪个网络。
另外,适当地使用默认路由还可以减小路由表的大小。网络管理员有时会这样配置路由表,即在路由表中只添加少数的静态路由,同时添加一条默认路由,这样当收到数据包的目的网络没有包含在路由表中时,就按照默认路由来转发(当然默认路由有可能不是3.最好的路由)。
3.静态路由和默认路由的配置
下面将介绍静态路由与默认路由的配置方法。
3.1静态路由配置命令
1.配置静态路由
静态路由配置命令如下所示。
其中各参数的含义如下所述。
network:目的网络地址。
mask:子网掩码。
address:到达目的网络经过的下一跳路由器的接口地址。
interface:到达目的网络的本地接口.。
2.配置默认路由
默认路由的配置命令格式与静态路由一样,只是在目的网络部分不同,配置命令如下所示。
其中各参数的含义如下。
0.0.0.00.0.0.0:代表任何网络,也就是说发往任何网络的数据包都转发到命令指定的下一个路由器接口地址。
address:到达目的网段经过的下一跳路由器的接口地址。
3.配置命令应用
下面通过一个简单的案例来应用上述配置命令,如图所示,两台路由器R1、R2互连,且分别与两台主机相连,现在希望通过对路由器的配置实现整个网络互通。
初学者容易犯的错误是,认为无须任何配置就能够实现互通。针对这种认识我们首先分析一下。假设两台主机互相访问,左面的主机发送的数据报文目标地址应为3000.0/24当R1收到这样的 数据报文后会查看自己的路由表中是否存在这样的条目,由于我们事先没有做任何路由配置,因此路由表中只有直连路由而没有30.0.0.0条目,路由器会丢弃该数据报文。
配置静态路由是为了让路由器知道30000的存在,并且知道如何到达,具体配置命令如下
所示。
其中300.0.0255.255.255.0是目标地址,20.0.0.2是下一跳地址。当在R1上完成上述配置后,
两台主机就可以互通了吗?当然不能,因为R2还不知道如何到达10000网段,因此还需要进行如下配置。
这样就可以实现全网互通了。所谓全网互通就是拓扑中任意两节点之间可以通信,这需要拓扑中任意一台路由器拥有任意网段的路由条目。
之后我们可以通过showiproute命令来查看R1的路由表。
4.配置实例
如图所示,假设1921681.0/24是公司的内网网段,R1是公司的网关路由器,R2是ISP
的接入设备,连接Internet后,应该如何配置才能满足公司访问Internet的需求呢?
Internet网络中包括各种路由条目,因此应该选用默认路由进行配置,无论数据报文的IP地址是什么,都可以从R1路由器转发出去。而R2的目标网络相当明确,就是内网的192168.1.0网段,
因此配置静态路由即可。
上述情况只是一个路由实例,实际情况没有这么简单,因为公司内网一般使用的是私有IP地址,需要通过NAT技术转换成公网IP地址,这部分内容将在后续课程讲解。
4.路由与交换的对比
4.1路由器转发数据包的封装过程
Host A 向 Host B发送数据,路由器对数据包的封装过程如下。
(1)HostA在网络层将来自上层的报文封装成IP数据包,其首部包含了源地址和目的地址。源地址即本机地址1921681.2,目的地址为HostB的地址1921682.2HostA会用本机配置的24位掩码与目的地址进行“与”运算,得出目的地址与本机地址不在同一网段,因此发往HostB的数据包需要经过网关路由器A转发。
(2)HostA通过ARP请求获得默认网关路由器A的EO口MAC地址00-11-12-21-22-22。在数据链路层HostA将IP数据包封装成以太网数据帧,在以太网数据帧首部的源MAC 地址为00-11-12-21-11-11目的MAC地址为网关EO口的MAC地址00-11-12-21-22-22
(3)路由器A从EO口接收到数据帧,把数据链路层的封装去掉。路由器A认为这个IP数据包是要通过自己进行路由转发,所以路由器A会查找自己的路由表,寻找与目标IP地址192.168.2.2相匹配的路由表项,再根据路由表的下一跳地址将数据包转发到E1接口。
(4)在E1接口路电器A重新封装以大网帧,此时源MAC地址为路电器A的E1口MAC 地址00-11-12-21-33-33,目的MAC地址为与之相连的路由器B的E1口MAC 地址00-11-12-21-44-44
(5)路由器B从E1口接收到数据帧,同样会把数据链路层的封装去掉,对目的P地址进行检查,并与路由表进行匹配,再根据路由表的下一跳信息将数据包转发到E0接口,路由器B发现目的网段
与自己的EO接口直接相连,通过ARP广播,路由器B获得HostB以太口的MAC地址00-11-12-21-66-66路由器B再将IP数据包封装成以太网帧,源MAC地址为路由器B的EO口的MAC 地址00-11-12-21-55-55MAC址为HostB的MAC地址00-11-12-21-66-66封装完毕,将以太网帧从EO接口发往Host B。
4.2交换机与路由对比
路由和交换是网络世界中两个重要的概念。
交换发生在OSI参考模型的第2层,即数据链路层,通常交换的动作由交换机来完成。而路由
发生在OSI参考模型的第3层,即网络层,通常路由的动作由路由器来完成。路由和交换在移动信
息的过程中需要使用不同的控制信息,所以两者实现各自功能的方式不同。
在数据链路层只能识别物理地址,因此当交换机的某个端口收到一个数据帧时,交换机首先会读取数据帧中相应的目标地址的MAC地址,然后在自己的MAC地址表中查找是否有目标MAC地址的端口信息。如果有,则把数据帧转发到相应的端口,如果没有,则向除源端口外的所有端口转发数据帧,这就是数据交换的过程,可见交换是交换机根据自己的MAC地址表在交换机的不同端口之间进行的,即从交换机的一个端口“交换”到另外一个端口。
在网络层可以识别逻辑地址,当路电器的其个接口收到一个数据包时,路电器首先会读取包中相应目标的逻辑地址的网络部分,然后在路由表中查找,如果在路由表中找到了目标地址的路由条目,则把数据包转发到路由器的相应接口,如果在路由表中没有找到目标地址的路由条目,且路由器配置了默认路由,就根据默认路由的配置转发到路由器的相应接口;如果在路由表中没有找到目标地址的路由条目目路电器中没有配置默认路由则将该数据包手弃并饭回不可达信息,这就是数据路由的过程可见路由是路电器根据自己的路由表进行的其间经过了路由选择和路由转发的过程,从路由器的一个接口“路由”到另一个接口。
谢谢大家!