我们之前已经看到,当 erdos 收到发往 quark 的数据报时,会检查目标地址,并发现它不在本地网络上。 因此,它会将数据报发送到默认网关 sophus,而 sophus 现在基本上也面临着相同的任务。 sophus 识别出 quark 不在它直接连接的任何网络上,因此它必须找到另一个网关来转发。 正确的选择应该是 niels,即通往物理系的网关。 因此,sophus 需要一些信息,将目标网络与合适的网关关联起来。
IP 为此使用的路由信息基本上是一个将网络链接到可到达这些网络的网关的表。 通常也必须提供一个全能条目(默认路由); 这是与网络 0.0.0.0 关联的网关。 所有发往未知网络的数据包都通过默认路由发送。 在 sophus 上,此表可能如下所示
----------------------------------------- +-----------+-------------+------------+ |Network | Gateway | Interface | +------------+-------------+------------+ +------------+-------------+------------+ |149.76.1.0 | - | fddi0 | |149.76.2.0 | 149.76.1.2 | fddi0 | |149.76.3.0 | 149.76.1.3 | fddi0 | |149.76.4.0 | - | eth0 | |149.76.5.0 | 149.76.1.5 | fddi0 | |... | ... | ... | |0.0.0.0 | 149.76.1.2 | fddi0 | +------------+-------------+------------+ +------------+-------------+------------+到 sophus 直接连接的网络的路由不需要网关; 因此,它们的网关条目显示为 ``-''。
路由表可以通过各种方式构建。 对于小型 LAN,通常最有效的方法是手动构建它们,并在启动时使用 route 命令将它们提供给 IP(请参阅 chapter-)。 对于较大的网络,它们由路由守护程序在运行时构建和调整; 这些守护程序在网络的中央主机上运行,并交换路由信息以计算成员网络之间“最佳”路由。
根据网络的大小,将使用不同的路由协议。 对于自治系统(例如 Groucho Marx 校园)内部的路由,将使用内部路由协议。 最突出的是 RIP,即路由信息协议,它由 BSD routed 守护程序实现。 对于自治系统之间的路由,必须使用外部路由协议,如 EGP(外部网关协议)或 BGP(边界网关协议); 这些协议(以及 RIP)已在康奈尔大学的 gated 守护程序中实现。