7.1 路由器
路由器在局域网中用来互联各个子网,同时隔离广播和介质访问冲突。
正如前面所介绍的,路由器将一个大网络分成若干个子网,以保证子网内通讯流量的局域性,屏蔽其它子网无关的流量,进而更有效地利用带宽。对于那些需要前往其它子网和离开整个网络前往其它网络的流量,路由器提供必要的数据转发。
7.1.1路由器的工作原理
我们通过下图来解释路由器的工作原理:
图 7.1 路由器工作原理
图7.1中有三个子网,由两个路由器连接起来。三个C类地址子网分别是200.4.1.0、200.4.2.0、200.4.3.0。
从图中可以看见,路由器的各个端口也需要有IP地址和主机地址。路由器的端口连接在哪个子网上,其IP地址就应属于该子网。例如路由器A两个端口的IP地址200.4.1.1、200.4.2.53分别属于子网200.4.1.0和子网200.4.2.0。路由器B的两个端口的IP地址200.4.2.34、200.4.3.115分别属于子网200.4.2.0和子网200.4.3.0。
每个路由器中有一个路由表,主要由网络地址、转发端口、下一跳路由器的IP地址和跳数组成。
网络地址:本路由器能够前往的网络
端口: 前往某网络该从哪个端口转发
下一跳: 前往某网络,下一跳的中继路由器的IP地址
跳数: 前往某网络需要穿越几个路由器
下面我们来看一个需要穿越路由器的数据报是如何被传输的。
如果主机200.4.1.7要将报文发送到本网段上的其它主机的话,源主机通过ARP程序可获得目标主机的MAC地址,由链路层程序为报文封装帧报头,然后发送出去。
当200.4.1.7主机要把报文要发向200.4.3.0子网上的200.4.3.71主机时,源主机在自己机器的ARP表中查不到对方的MAC,则发ARP广播请求200.4.3.71主机应答,以获得它的MAC地址。但是,这个查询200.4.3.71主机MAC地址的广播被路由器A隔离了,因为路由器不转发广播报文。所以,200.4.1.7主机是无法直接与其它子网上的主机直接通讯。
路由器A会分析这条ARP请求广播中的目标IP地址。经过掩码运算,得到目标网络的网络地址是200.4.3.0。路由器查路由表,得知自己能提供到达目的网络的路由,便向源主机发ARP应答。
请注意200.4.1.7主机的ARP表中,200.4.3.71是与路由器A的MAC地址00-3B-96-75-1C-02捆绑在一起,而不是真正的目标主机200.4.3.71的MAC地址。事实上,200.4.1.7主机并不需要关心是否是真实的目标主机的MAC地址,现在它只需要将报文发向路由器。
路由器A收到这个数据报后,将拆除帧报头,从里面的IP报头中取出目标IP地址。然后,路由器A将目标IP地址200.4.3.71同子网掩码255.255.255.0做“与”运算,得到目标网络地址是200.4.3.0。下面,路由器将查路由表(见图7.6路由器A的路由表),得知该数据报需要从自己的e1端口转发出去,且下一跳路由器的IP地址是200.4.2.34。
路由器A需要重新封装在下一个子网的新数据帧。通过ARP表,取得下一跳路由器200.4.2.34的MAC地址。封装好新的数据帧后,路由器A将数据通过e1端口发给路由器B。
现在,路由器B收到了路由器A转发过来的数据帧。在路由器B中发生的操作与在路由器A中的完全一样。只是,路由器B通过路由表得知目标主机与自己是直接相连接的,而不需要下一跳路由了。在这里,数据报的帧报头将最终封装上目标主机200.4.3.71的MAC地址发往目标主机。
图 7.2 路由器的工作流程
通过上面的例子,我们了解了路由器是如何转发数据报,将报文转发到目标网络的。路由器使用路由表将报文转发给目标主机,或交给下一级路由器转发。总之,发往其它网络的报文将通过路由器,传送给目标主机。 7.1.2 穿越路由器的数据帧
数据报穿越路由器前往目标网络的过程中的报头变化是非常有趣的:它的帧报头每穿越一次路由器,就会被更新一次。这是因为MAC地址只在网段内有效,它是在网段内完成寻址功能的。为了在新的网段内完成物理地址寻址,路由器就必须重新为数据报封装新的帧报头。
图 7.3 报头的变化
在图7.3中,200.4.1.7主机发出的数据帧,目标MAC地址指向200.4.1.1路由器,数据帧发往路由器。路由器收到这个数据帧后,会拆除这个帧的帧报头,更换成下一个网段的帧报头。新的帧报头中,目标MAC地址是下一跳路由器的,源MAC地址则换上了200.4.1.1路由器200.4.2.53端口的MAC地址00-38-96-08-7c-11。当数据到达目标网络时,最后一个路由器发出的帧,目标MAC地址是最终的目标主机的物理地址,数据被转发到了目标主机。
数据包在传送过程中,帧报头不断被更换,目标MAC地址和源MAC地址穿越路由器后都要改变。但是,IP报头中的IP地址始终不变,目标IP地址永远指向目标主机,源IP地址永远是源主机。(事实上,IP报头中的IP地址不能变化,否则,路由器们将失去数据报转发的方向了。)
可见,数据报在穿越路由器前往目标网络的过程中,帧报头不断改变,IP报头保持不变。
7.1.3 路由器工作在网络层
路由器在接收数据报、处理数据报和转发数据报的一系列工作中,完成了OSI模型中物理层、链路层和网络层的所有工作。
在物理层中,路由器提供物理上的线路接口,将线路上比特数据位流移入自己接口中的接收移位寄存器,供链路层程序读取到内存中。对于转发的数据,路由器的物理层完成相反的任务,将发送移位寄存器中的数据帧以比特数据位流的形式串行发送到线路上。
路由器在链路层中完成数据的校验,为转发的数据报封装帧报头,控制内存与接收移位寄存器和发送移位寄存器之间的数据传输。在链路层中,路由器会拒绝转发广播数据报和损坏了的数据帧。
路由器的网间互联能力集中在它在网络层完成的工作。在这一层中,路由器要分析IP报头中的目标IP地址,维护自己的路由表,选择前往目标网络的最佳路径。正是由于路由器的网间互联能力集中在它的网络层表现,所以人们习惯于称它是一个网络层设备,工作在网络层。
图 7.4 路由器涉及OSI模型最下面三层的操作
在图7.4中我们可以看见,数据报到达路由器后,数据报会经过物理层、链路层、网络层、链路层、物理层的一系列数据处理过程,体现了数据在路由器中的非线性。
(非线性这个术语在厂商介绍自己的网络产品中经常见到。网络设备厂商经常声明自己的交换机、三层路由交换机能够实现线性传输,以宣传其设备在转发数据报中有最小的延迟。所谓线性状态,是指数据报在如图所示的传输过程中,在网络设备上经历的凸起折线小到近似直线。Hub只需要在物理层再生数据信号,因此它的凸起折线最小,线性化程度最高。交换机需要分析目标MAC地址,并完成链路层的校验等其它功能,它的凸起折线略大。但是与路由器比较起来,仍然称它是工作在线性状态的。)
路由器工作在网络层,因此它对数据传输产生了明显的延迟。
各省软考办 | ||||||||||