老马怎样识途

——路由器是怎样判断网络地址和路径

 刘志勇

《韩非子.说林上》记载,管仲、隰朋从桓公伐孤竹,春往冬返,迷惑失道。管仲曰:老马之智可用也。乃放老马而随之,遂得道。这就是成语老马识途的由来。

你可知道,在互联网中,我们发出的每一个比特的数据包,究竟是怎样寻找到最近的路径,直抵目标地,堪比识途的老马?

路由器的起源

40多年以前,当互联网还是美国军方专用的阿帕网,仅有少数大学和研究机构能够接入,而这却成为人们解决信息孤岛问题的希望。当时, 斯坦福大学校园内有 5000多台来自不同厂家的计算机,由于采用了不同的编码方式和计算机语言,除了相同厂家的计算机勉强能够相互交流外,在校园的绝大多数地方,学生在一台计算机上完成的作业,拿到另一台计算机上就成了乱码。而同样的信息孤岛问题则困扰着全美每一所大学和研究机构。

专门设计一种设备来解决异种计算机之间的互联问题,一些计算机科学家不约而同地想到了这一点。构想与实践之间存在着巨大的鸿沟,思科创始人——伦纳德·博萨卡、姗蒂·雷纳、克尔克·劳希德 (Kirk Lougheed)、克里格·萨茨(Greg Satz)、杰夫·莫卧尔(Jeff Mogul)、史蒂夫·诺维克(Steve Nowicki)、贝尼弗·列维(Benjy Levy——的与众不同之处,在于他们通过无数次实验,找到了一种经得起时间考验的解决方案。

但过了20年以后,也就是1984年,思科的创始人、斯坦福大学的两名员工——伦纳德·博萨卡(Leonard Bosack)和姗蒂·雷纳(Sandy Lerner)夫妇创办思科公司,开始了路由器的研发,路由技术才逐渐进入商业化的应用。20多年以后的今天,当年美国军方的专用网变成了拥有6亿用户、改变人类文明进程的无所不在的互联网,路由器则成为人们搭建网络时必不可少的重要设备。

路由技术之所以在问世之初没有被广泛使用主要是因为80年代之前的网络结构都非常简单,路由技术没有用武之地。直到最近十几年,大规模的互联网络才逐渐流行起来,为路由技术的发展提供了良好的基础和平台。 

路由器的概念

蜘蛛网够复杂了吧?可是互联网的结构远比蜘蛛网来得要复杂,但在网络上,却可以做到条条大路通北京,这到底是怎么实现的呢?答案就是:路由器。将路由器称为互联网络的枢纽, 丝毫不为过。没有路由器,不同的网络便无法相互连接。如今,路由器已经成为实现各种骨干网内部连接、骨干网间互联和骨干网与互联网互联互通业务的主力军。

路由是什么意思?是指通过相互连接的网络把信息从源地点移动到目标地点的行为或者动作。而路由器就是执行这种行为和动作的机器,它决定网络通信能够通过的最佳路径。路由器依据网络层信息将数据包从一个网络前向转发到另一个网络。

通常情况下,在路由过程中,信息至少会经过一个或多个中间节点。也许有人将路由和交换混为一谈,因为这两者看起来功能完全一样,但你要这么想,就是大错特错了。路由和交换的区别就是交换发生在OSI参考模型的第二层(数据链路层),而路由发生在第三层,即网络层。这一区别决定了路由和交换在移动信息的过程中需要使用不同的控制信息,所以两者实现各自功能的方式是不同的。

路由器被发明用来解决信息孤岛问题,而且如果是由交换机来构建整个网络,那么整个网络将会有中心节点,这样也不符合阿帕网的初衷,所以我们有了这一层。这一层的基本单元是包,所有的包都有一个IP头,IP就是用来在这层上面标识包的来源和目的地址的。这层的一个主要概念就是路由,也就是和交换机一样,把包转发到其他的地方,差异之处在于,交换机只有知道具体的MAC在哪里的情况下才能够发送给指定的计算机,而路由则不需要知道最终IP所在的计算机在哪个位置,只要知道那个途径可以过去就可以工作。

路由器有两大典型功能,即数据通道功能和控制功能。数据通道功能包括转发决定、背板转发以及输出链路调度等,一般由特定的硬件来完成;控制功能一般用软件来实现,包括与相邻路由器之间的信息交换、系统配置、系统管理等。

路由器的工作方式

我们已经知道,路由器的主要工作就是为经过路由器的每个数据帧寻找一条最佳传输路径,并将该数据有效地传送到目的站点。由此可见,选择最佳路径的策略即路由算法是路由器的关键所在。为了完成这项工作,在路由器中保存着各种传输路径的相关数据——路由表,供路由选择时使用。路径表中保存着子网的标志信息、网上路由器的个数和下一个路由器的名字等内容。路径表可以是由系统管理员固定设置好的,也可以由系统动态修改,可以由路由器自动调整,也可以由主机控制。

1.静态路由表

由系统管理员事先设置好固定的路径表称之为静态路由表,一般是在系统安装时就根据网络的配置情况预先设定的,它不会随未来网络结构的改变而改变。

2.动态路由表

动态路由表是路由根据网络系统的运行情况而自动调整的路由表。路由器根据路由选择协议提供的功能,自动学习和记忆网络运行情况,在需要时自动计算数据传输的最佳路径。

关于静态路径表和动态路径表的区别和优劣,请参考本期的《动与静的艺术──比较静态路由表和动态路由表》一文。

路由器的原理

由前文我们已经知道,路由器是用来连接不同网段或网络的,在一个局域网中,如果不需与外界网络进行通信的话,内网的各工作站都能识别其它各节点,完全可以仅通过交换机就可以实现发送到目的地,无需路由器来记忆局域网的各节点MAC地址。识别不同网络的网络ID号是路由器识别不同网络的关键秘密,每个网络都必须有一个唯一的网络编号才能保证网络路由成功。路由器要识别另一个网络,首先要识别的就是对方网络的路由器IP地址的网络ID,判断与目的节点地址中的网络ID号是否相一致。若是就向该网络的路由器发送,接收网络的路由器在接收到源网络发来的报文后,根据报文中所包括的目的节点IP地址中的主机 ID号来识别是发给哪一个节点,然后再直接发送。

为了清晰的解释路由器的工作原理,现在假设一个简单的网络为例予以说明。其中一个网段网络ID号为"A",在同一网段中有4台终端设备连接在一起,该网段的每个设备的IP地址分别为:A1A2A3A4。连接在该网段上的一台路由器是用来连接其它网段的,路由器连接于A网段的那个端口IP地址为A5。该路由器连接另一网段为B网段,该网段的网络ID号为"B",那连接在B网段的另几台工作站设备设的IP地址为:B1、 B2B3B4,同样连接与B网段的路由器端口的IP地址设为B5

在这样的简易网络模型中,同时存在着两个不同的网段,现在假设A网段中的A1用户想发送一个数据给B网段的B2用户,让我们看看网络路由是怎样实现的。

首先A1用户准备好要发送的数据及报文,以数据帧的形式通过集线器或交换机广播发给同一网段的所有节点(之所以采用广播方式是因为交换机不能识别这个地址;而集线器本来就是使用广播方式的),路由器在侦听到A1发送的数据帧后,分析目的节点的IP地址信息,判断出非本网段的数据帧,便立即接收,随后根据其路由表分析得知接收节点的网络ID号与B5端口的网络ID号相同,这时路由器的A5端口就直接把数据帧发给路由器B5端口。B5端口再根据数据帧中的目的节点IP地址信息中的主机ID号来确定最终目的节点为B2,然后再发送数据到节点B2。即完成一个完整的数据帧的路由转发过程,数据也正确、顺利地到达目的节点。

在实际情景中,一般一个网络都会同时连接其它多个网段或网络,现在我们假设一个稍微复杂的网络模型:有ABCD四个网络通过路由器连接在一起组成了一个网络,每个网段有4个终端设备,IP地址的设置类同前面一个模型网络的设置。现在网络A中的A1要向C网络中的C3发送一个请求信号时,信号传递的步骤如下:

A1将目的节点C3的地址C3,连同数据信息以数据帧的形式通过集线器或交换机以广播的形式发送给同一网络中的所有节点,当路由器A5端口侦听到这个地址后,分析得知所发目的节点不是本网段的,需要路由转发,就把数据帧接收下来。然后路由器A5端口接收到用户A1的数据帧后,先从报头中取出目的用户C3IP地址,并根据路由表计算出发往用户C3的最佳路径。因为从分析得知到C3的网络ID号与路由器的C5网络ID号相同,所以由路由器的A5端口直接发向路由器的C5端口应是信号传递的最佳途经。接着,路由器的C5端口再次取出目的用户C3IP地址,找出C3IP地址中的主机ID号,如果在网络中有交换机则可先发给交换机,由交换机根据MAC地址表找出具体的网络节点位置;如果没有交换机设备则根据其IP地址中的主机ID直接把数据帧发送给用户C3,这样一个完整的数据通信转发过程也完成了。

由此可知,无论网络结构是如何的复杂,路由器所作的工作无谓就这几个步骤。当然在实际的网络中还远比上述假设的两个网络模型要复杂许多,实际的步骤也不会像上述那么简单,但万变不离其宗,路由器的工作原理都一样。

通过本文,我们知晓了路由器是如何判断网路地址和选择路径的,但要详细深入的了解路由器的原理,还需要了解更多的知识:TCP/IP协议、路由协议、以及路由算法等等,而要理解路由算法,又要求懂得离散数学和算法设计等计算机基础学科。

路由器已经诞生20多年了,展望未来的20年,将是宽带网的时代,可以预见的是,在网络技术日新月异的发展的今天,路由器技术特别是核心路由器技术也正在经历着巨大的变化,路由器早已非当年吴下阿蒙,借用比尔.盖茨的话说,我们离不懂路由器只有18个月。