路由

翻译:Li Yong

    Copyright (C) 1987, Charles L. Hedrick. Traslator Coly li Beijing university of Posts and Telecommunications

    任何人都可以复制这个文件的整体或局部,如果:

(1)任何对整篇文章的拷贝或者复制必须 显示Rutgers大学作文这篇文档的出处,并且一定要包括这份“注意”;

(2)任何他人使用这份材料作为参考文献时,一定要指明引用了这篇出自Rutgers的手册,并且要指明这样的一个 事实,即这篇材料的版权是属于Charles Hedrick的,并且是授权使用的。

    以上的描述指出IP的执行就是通过指出目的地的地址来确保目的地得到数据包的(译者注: 这里的数据包是datagram,指的是自带寻址信息的,能够独立的从数据源走到终点的数据包) ,但是关于这个过程如何去做却所述不多。这个如何使目的端发现怎样去得到数据包的任务我 们称之为“路由”。实际上这些细节中的大多数是依靠在特定的实现上的。但是还是有很多普 遍意义上的东西可以说的。

    首先,理解IP基于什么模式是非常必要的。设想到一个系统是隶属于一些本地网络的。我们 可是设想一个系统可以给在它自己的本地网上的其他系统发送数据包(例如在以太网中,发现 某个目的系统的地址,并把数据包放到以太网上是非常简单的。)当一个系统被要求送一个数 据包到不同网络的另一个系统上去的时候,问题就来了。 这个问题是通过网关(gateway)来解决的。 网关就是将一个网络连接到一个或多个其它网络的系统。网关通常是正好具有一个以上网络 接口(译者注:network interface就是我们通常说的网卡)的普通计算机。例如,我们就有 一个有两个不同的以太网接口的UNIX机器。因此它连接着128.6.4和128.6.3这两个网络。在这 两个网络之间,这台机器就扮演着网关的角色。在这台机器上的软件一定要设置成为能够从一 个网络向另一个网络转发数据包。那就是说,如果在网络128.6.4上的一台机器发送了一个数 据包到路由器上,并且这个数据包被赋予了一台在网络128.6.3上的机器的地址,这个网关就 会将数据包转发到目的地去。

    主要的通信中心常常由连接着很多不同网络的网关。(在很多情况下,基于特定目的的网关 系统能够提供比基于普遍目的的网关系统更好的性能和可靠性。有很多的卖主就是销售这样的 系统(译者注:即基于特定目的的网关))在IP中的路由完全的基于目的地址的网络号。每一 个计算机都有一个网络号码表。对每一个网络号,都会列举出一个网关。这个网关就是用来到 达那个网络的。
 
    要注意的是网关并不一定要直接的连接到这个网络上,它只需要放置在能够到达网络的最好 的位置上。例如在Rutgers大学,我们连接到NSFnet(译者注:国家科学基金网)的接口就放置 在John von Neuman 超级计算机中心(JvNC)。我们到JvNC的连接是通过高速串行线路连接到 一个地址是128.6.3.12的网关来实现的。在网络128.6.3上的系统对于大学以外的网络都会把 128.6.3.12列为他们的网关。但是在网络128.6.4上的系统将会对那些大学外的相同的网络列 出128.6.4.1作为他们的网关。128.6.4.1是介于网络126.6.4和128.6.3之间的网关,所以他是 到达JvNC的第一步。

    当一个计算机想要发一个数据报时,他首先要看看是否在这个系统自己的本地网上有目的地 的地址。如果有,这个数据包将会被直接发送。否则,系统会期望着去发现这个目的地地址所 在的网络的入口。这个数据包将会被发送到那个入口所列出的网关上去。这个表(译者注:指 的是含有路由信息的数据标)会很快的变大。例如,Internet上面现在包含有好几百个独立的 网络。所以,已经有一系列的策略被采用以精简路由表的大小。 一种策略就是依靠“缺省路由”。一般来说,一个网络常常只有一个网关。这个网关能够将 一个本地的以太网连接到校园网的骨干网上去。在那种情况下,我们不需要去获得整个世界上 每一个网络的入口。我们只需要简单的将那个网关设置为“缺省”就可以了。对于一个数据包 如果没有发现特定的路由时,这个数据包就会把发送到缺省网关去。当一个网络上有多个网关 时,缺省网关也是可以使用的。还有一些网关是预备着来发送“我不是最好的网关——使用这 个代替吧!”(这个信息是通过网间控制报文协议ICMP发送的,参看Internet标准草案请求注 解RFC792)。

    大多数的网络软件倍设计为能够使用这些消息向他们的路由表里添加入口项。假设网络128. 6.4有两个网关,分别是128.6.4.59和128.6.4.1。128.6.4.59连接到Rutgers大学内部的其他 网络。128.6.4.1直接连接到NSFnet。假设我们将128.6.4.59设置成为缺省网关,并且没有其 它的路由表入口。如果我们现在需要给MIT(麻省理工学院)发送一个数据包那会发生什么事? MIT是在网络18上(译者加:一个大学就能够拥有一个A类网络地址,太惊人了)。由于我们还 没有网络18的入口,所以数据包将会被发送到缺省网关128.6.4.59。当以上这些发生时,这个 网关是不正确的。因为这个数据包应该被转发到128.6.4.1。但是它将仍然返回一个有效的报 错信息:“到达网络18,使用128.6.4.1”。我们的软件然后将会把一个入口项加到路由表中 去。此后任何发往MIT的数据报都会直接的去128.6.4.1。(这个报错信息将使用ICMP协议发送 。这个信息类型称为“ICMP redirect”)

    多数的IP专家劝告,单独的计算机最好不要去试着明了整个网络。他们应该以缺省网关作为 起点,然后让网关告诉他们路由,就像刚刚描述的那样。但是,这里并没有说网关是怎么样发 现这些路由的。网关是不能够依赖上面这种策略(译者注:这种策略应该是指“缺省网关”) ,他们不得不拥有完全清晰的路由表。正因为如此,我们就需要一些类型的路由协议。 路由协议是一种能够使得网关们能够发现彼此的简单技术,并且能够持续的使数据包经过最 优的路径到达每一个网络。RFC1009中包含着关于网关设计和路由的评论。但是rip.doc可能是 对这个主题更好的介绍性文档。它包含了一些指南材料,和多数最常用的路由协议的细节描述