路由器是实现分组交换(packet switching)的关键构件,其任务是转发收到的分组,这是网络核心部分最重要的功能。
分组交换是用存储转发技术实现的。通常我们把要发送的整块数据称为一个报文(message),发送报文之前,先把较长的报文划分为一个个更小的等长数据段,在每一个数据段前面加上一些必要的控制信息组成的首部(header)后,就构成了一个分组(packet),分组又称为包,而分组的首部也成为包头。包是在因特网中传送的数据单元。
因特网的核心部分是由许多网络和把它们互连起来的路由器组成,而主机处在因特网的边缘部分。主机和路由器都是计算机,但它们的作用很不一样。主机是为用户进行信息处理的,并且可以和其它主机通过网络交换信息。路由器则是用来转发分组的,即进行分组交换的。
路由器收到一个分组,先暂时存储下来,再检查其首部,查找转发表,按照首部中的目的地址,找到合适的接口转发出去,把分组交给下一个路由器。这样一步一步地以存储转发的方式,把分组交付到最终的目的主机。
上图中,假如主机H1向主机H5发送数据,主机H1先将分组逐个地发往与它直接相连的路由器A,路由器A把主机H1发送的分组放入缓存,假定从路由器A的转发表中查出应把分组转发到链路A-C,于是分组就传送到路由器C,路由器继续按照上述方式查找转发表,假定查出应转发到路由器E,当分组到达路由器E后,路由器E就把分组直接交给主机H5。
假定在某一个分组的传送过程中,链路A-C的通信量太大,那么路由器A可以把分组沿另一个路由转发到路由器B,再转发到路由器E,最后把分组送到主机H5。
需要注意的是,路由器暂时存储的是一个个短分组,而不是整个的长报文,短分组是暂存在路由器的内存中而不是硬盘中,这就保证了较高的交换速率。
因特网采用了专门的措施,保证了数据的传送具有非常高的可靠性,当网络中的某些站点或链路突然发生故障时,在各路由器中运行的路由选择协议能够自动找到其他路径转发分组。
从上述可知,采用存储转发的分组交换,实质上是采用了在数据通信的过程中断续分配传输带宽的策略,这对于传送突发式的计算机数据非常合适,使得通信线路的利用率大大提高了。
上图中有四个A类网络通过三个路由器连接在一起。每一个网络上都可能有成千上万个主机。可以想象,若按目的主机号来制作路由表,则所得出的路由表就会过于庞大(如果每个网络有一万台主机,路由表就有4万个记录)。但若按照主机所在的网络地址来制作路由表,那么每一个路由器中的路由表只包含4条记录就够了,每一条记录对应一个网络。
以路由器R2为例,由于R2同时连接在网络2和网络3上,因此只要目的站在这两个网络上,都可通过接口0或1有路由器R2直接交付。若目的主机在网络1中,则下一跳路由器应为R1,若目的主机在网络4中,则下一跳路由器应为R3。
再次重申,路由器是按照IP地址的网络号来转发分组的,就是说按照目的主机所在的网络转发分组。但是大多情况下都允许有这样的特例:对特定的目的主机指明一个路由,这种路由叫做特定主机路由。
采用特定主机路由可使网络管理人员能更方便地控制网络和测试网络,同时也可在需要考虑某种安全问题时采用这种特定主机路由。
分组转发算法如下:
(1) 从数据报的首部提取目的主机的 IP 地址 D, 得出目的网络地址为 N。
(2) 若网络 N 与此路由器直接相连,则把数据报直接交付目的主机 D;否则是间接交付,执行(3)。
(3) 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行(4)。
(4) 若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行(5)。
(5) 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行(6)。
(6) 报告转发分组出错。
版权声明:本文为博主原创文章,未经博主允许不得转载。