一、路由器的介绍
1.1 什么是路由器
路由器(Router)是连接两个或多个网络的硬件设备,在网络间起网关的作用,是读取每一个数据包中的地址然后决定如何传送的专用智能性的网络设备,简单地说,就是使不同的网络能够进行数据交互的设备。
1.2 路由器的结构
如图,路由器主要由电源接口、WAN口、LAN口组成。其中,WAN口一般只有1个,LAN口至少4个。不同的路由器上可能会有2个WAN口,8个LAN口。
具有无线功能的路由器还有携带天线接口,用于发射或接收无线信号。
WAN口:主要用于连接光猫设备,也就是连接外网设备。
LAN口:主要用于连接内网设备,如交换机、电脑等。
路由器工作功能结构图如下,主要有路由选择和IP数据包转发两部分,其中数字1、2、3分别代表物理层、数据链路层、网络层。
二、路由器的功能
2.1 路由器的功能
- 转发IP数据报:基于路由表的查找,将通过端口接收到的IP数据报,从路由表中查找出合适的路由,将IP数据报从输出端口转发给下一个设备(路由器或主机)。
路由表:路由表是一个记录着指向目的网络地址的路径的数据表。其目的是为转发IP数据报指明转发方向。而表中一条条的路径记录一般统称为路由。
Proto:标识构建路由使用的协议(Protocol)。
pre:标识路由加入IP路由表的优先级(Preference)。优先级标识不同路由获取方式的可信度,优先级越低,可信度越高。可能到达一个目的地有多条路由,但是优先级的存在让他们先选择优先级高的路由进行利用,。
cost:路由开销值,当到达一个目的地的多个路由优先级相同时,路由开销最小的将成为最优路由。
Flags:显示路由状态。
- 路由选择:对路由表中的每一行路由进行“与”运算,选择最佳的一条路由。
例如在路由表中有这样两条路由:10.1.1.0/24和10.1.1.128/25,当要给10.1.1.130发送IP数据报时,就会选择10.1.1.128/25这条路由,不会去选择10.1.1.0/24这条路由。
三、路由器的工作原理
路由器进行数据交互工作的流程一般经过提取目的IP地址阶段、查询路由表阶段、最佳路由选择阶段、数据处理操作阶段、发送IP数据包阶段。
3.1 路由器的提取目的IP地址阶段
当路由器收到一个其他设备发送过来的IP数据报时,都会从收到的IP数据报的首部提取目的IP地址。
3.2 路由器的查询路由表阶段
对路由表中的每一行逐个进行检查:用各网络的子网掩码和提取出来的目的IP地址做“与”运算,看结果是否和相应的网络地址匹配。若匹配,则进行路由选择操作。否则就将IP数据报丢弃,并给源IP地址的设备发送报告IP数据包出错的报文(在wireshark中抓包,并没有看到这个报文)。
3.3 路由器的最佳路由选择阶段
在匹配的路由条目里,根据最长前缀匹配原则和优先级原则,选择最佳的一条路由。
同种类型的路由条目,按最长前缀匹配原则进行选择。
不同类型的路由条目,按优先级原则进选择。
(路由具体有哪些类型,这里不做详细描述,可以看路由的类型。)
注意:路由器给端口设置IP地址后(不管是给二层端口设置IP地址,还是给三层端口设置IP地址),当与端口直连的网络正常连接后,路由表会自动生成一条直连网络的路由和一条端口的特定IP路由。GigabitEthernet型端口为三层端口,可以直接设置IP地址,Ethernet型端口为二层端口,无法直接设置IP地址,需要设置虚拟三层端口IP地址(即Vlanif)。
3.4 路由器的数据处理操作阶段
在匹配的最佳路由中,若路由条目中的下一跳IP地址为127.0.0.1,则表示由路由器执行解析数据任务操作。否则执行转发任务操作。
解析数据任务操作:解析IP数据包的数据部分,并做出回应(构建响应IP数据包)。注意:要发送响应IP数据包同样需要查询路由表。
转发任务操作:将IP数据包转发给最佳路由所指明的下一跳IP地址的设备(即发送IP包给最佳路由所指明的下一跳IP地址的设备)
3.5 路由器的发送IP数据包阶段
进入IP数据包发送队列,在ARP缓存表中查找是否有最佳路由所指明的下一跳IP地址的对应MAC地址。若有,则将IP数据包下交给数据链路层进行封装帧操作,再由物理层发送出去。若没有,则发送ARP请求包广播出去找出下一跳IP地址的对应MAC地址,再将IP数据包下交给数据链路层进行封装帧操作,再由物理层发送出去 。
3.6 路由器的数据交互过程流程图
四、路由器工作原理的例子说明
4.1 通过直接连接一台路由器的情况下,不同子网的两台主机互联
网络拓扑:
主机A要给主机B发送IP数据包:
要经过两个过程的工作,一个是主机A把IP数据包发给路由器,一个是路由器把IP数据包发给主机B。
过程1:
主机A的工作:
1.主机A的网络层中的IP协议会把自己本子网的子网掩码255.255.255.0与主机B的IP地址(1.1.2.1)做“与”运算,得出1.1.2.0,它不等于主机A的网络地址(1.1.1.0),这说明主机A和主机B在不同一个子网上,必须把IP数据包发给路由器(具有路由功能的设备),由路由器再交付给主机B。
2.主机A会先在自己网络层里的ARP缓存表查找有无路由器AR1的G0/0/1端口IP地址(一般是子网的网关IP地址,本实例为1.1.1.254)与其所对应的MAC地址。最开始时,主机A不知道路由器AR1的G0/0/1端口的MAC地址,主机A的ARP进程就会构建一个以目的IP地址为1.1.1.254、源IP地址为1.1.1.1、数据部分主要内容是:“我的IP地址是1.1.1.1,我的MAC地址是54-89-98-A2-1C-6F,我想知道IP地址为1.1.1.254的设备的MAC地址”的ARP请求数据包,然后在本局域网上(1.1.1.0网段)广播发送出去找出路由器AR1的G0/0/1端口的MAC地址。
3.接着主机A的数据链路层会将网络层下交过来的ARP请求数据包作为数据部分、以FF-FF-FF-FF-FF-FF作为目的MAC地址、54-89-98-A2-1C-6F为源MAC地址构建成一个请求MAC地址的广播数据帧,接着将广播数据帧下交给物理层并通知物理层转发出去。
4.主机A的物理层会把数据链路层下交过来的广播数据帧转化成光电信号转发出去。
交换机SW1的工作:
1.交换机SW1的物理层收到主机A转发过来的光电信号,会将光电信号转化成数据帧上交给数据链路层。
2.交换机SW1的数据链路层会将物理层上交过来的广播数据帧进行识别,发现是发往自己的数据帧,然后在MAC地址表中查找目的MAC地址FF-FF-FF-FF-FF-FF的项目,同时将源MAC地址(主机A的MAC地址)和对应端口E0/0/1存入MAC地址表。接着,将广播数据帧下交给物理层。
3.交换机SW1的物理层将数据链路层下交过来的广播数据帧转化成光电信号从除E0/0/1以外的所有端口转发出去。
路由器AR1的工作:
1.路由器AR1的物理层收到交换机SW1转发过来的光电信号,会将光电信号转化成数据帧上交给数据链路层。
2.路由器AR1的的数据链路层会将物理层上交过来的广播数据帧进行识别,发现是发往自己的数据帧,同时对数据帧进行解封处理,并将提取出来的数据部分(请求路由器G0/0/1端口MAC地址的IP数据包)上交给网络层。
3.路由器AR1的网络层从数据链路层上交过来的ARP请求数据包的首部中提取出目的IP地址1.1.1.254,然后查询路由表。找到了目的IP地址为1.1.1.254、子网掩码为255.255.255.255、下一跳IP地址为127.0.0.1的最佳路由。于是就收下这个ARP请求数据包(这里就是怎么检测是不是发给自己的IP数据包),注意:查找路由表时,匹配到了路由就收下IP数据包,区配不到就直接丢弃IP数据包。同时将收到的ARP请求数据包所含有的MAC地址映射(源IP地址的MAC地址)写入自己的ARP缓存表里(不管有没有找到匹配的路由,都会将IP数据包所含有的MAC地址映射(源IP地址的MAC地址)写入自己的ARP缓存表里)。
4.解析完ARP请求数据包后,路由器AR1的网络层会构建一个以目的IP地址为1.1.1.1、源IP地址为1.1.1.254、数据部分主要内容是:“我的IP地址是1.1.1.254,我的MAC地址是00e0-fc77-27dc”的ARP响应数据包。接着查找FIB表,找到目的I