转发和路由选择
网络层的作用从表面上看极为简单,即将分组从一台发送主机移动到台接收主机。
为此,需要两种重要的网络功能:
转发。当一个分组到达路由器的一条输入链路时,路由器必须将该分组移动到适当的输出链路。
路由选择。当分组从发送方流向接收方时,网络层必须决定这些分组所采用的路由或路径。计算这些路径的算法被称为路由选择算法(routing algorthm)。
在讨论网络层时,许多作者经常互换地使用转发和路由选择这两个术语。
转发是指将分组从一个输入链路接口转移到适当的输出链路接口的路由器本地动作。
路由选择是指网络范围的过程,以决定分组从源到目的地所采取的端到端路径。
每台路由器具有一张转发表 (forwarding table)。
路由器通过检查到达分组首部字段的值来转发分组,然后使用该值在该路由器的转发表中索引查询。
存储在转发表项中的该首部的值指出了该分组将被转发的路由器的输出链路接口。
分组首部中的该值可能是该分组的目的地址或该分组所属连接的指示,这取决于网络层协议。
你也许现在想知道路由器中的转发表是如何配置的,它揭示了路由选择和转发间的重要相互作用关系。
路由选择算法决定了插入路由器的转发表中的值。
路由选择算法可能是集中式的 (例如,算法在某个中心场点执行,并向每台路由器下载路由选择信息), 或是分布式的 (即使用运行在每台路由器上的分布式每选择算法的一部分)。
在任何一种情况下,都是路由器接收路由选择协议报文,该信息用于配置其转发表。
通过考虑网络中的一种假想情况 (不真实的,但技术上是可行的),其中所有的转发表是由一个网络操作员直接配置在路由器中,转发和路由选择功能的区别和不同能被进一步说明。在这种情况下,不需要任何路由选择协议。
当然,该人类操作员将需要彼此交互,以确保该转发表配置得能使分组到达它们想要到达目的地。
也很可能出现下列现象:人工配置更容易出错,并且对于网络拓扑的变化,响出起来比路由选择协议慢。
因此,我们庆幸所有网络具有自动进行转发和路由选择功能。
我们将约定术语分组交换机是指台通用分组交换设备, 它根据分组首部字段中的值,从输入链路接口到输出链路接口转移分组。
某些分组交换机称为链路层交换机 (Link-layer switches),基于链路层宝段中的值做转发决定。
其他分组交换机称为路由器 (router), 基于网络层字段中的值做转发决定。
市场销售资料经常将具有以太网接口的路由器称为“三层交换机”,但它们实际上是第三层设备。
连接建立
网络层有两个重要的功能,转发和路由选择。
但实际上在某些计算机网络中,有第三种重要的网络功能,即连接建立(connection setup)。
学习TCP时,当数据能从发送方流向接收方之前,需要三次握手。
这允许发送方和接收方建立所需的状态信息 (例如,序号和初始流控制窗口长度)。
以类似的方式,某些网络层体系结构如ATM、帧中继、MPLS,要求从源到目的地沿着所选择的路径彼此握手,以便在给定源到目的地连接中的网络层数据分组能够开始流动之前建立起状态。
在网络层,该过程被称为连接建立。
网络服务模型
在钻研网络层之前,我们将以开阔的视野来考虑网络层可能提供的不同类型的服务。
当位于发送主机的传输层向网络传输分组时 (即在发送主机中将分组向下交给网络层),传输层能够指望网络层将该分组交付给目的地吗?
当发送多个分组时,它们会按发送顺序按序交付给接收主机的运输层吗?
发送两个连续分组的时间间隔与接收到这两个分组的时间间隔相同吗?
网络层会提供关于网络中拥塞的反馈信息吗?
在发送主机与接收主机中连接运输层的通道的抽象视图(特性)是什么?
对这些问题和其他问题的答案由网络层提供的服务模型所确定。
网络服务模型( network service model)定义了分组在发送与接收端系统之间的端到端运输特性。
我们现在考虑网络层能够提供的某些可能的服务。
在发送主机中,当运输层向网络层传递一个分组时,能由网络层提供的特定服务包括;
- 确保交付。该服务确保分组将最终到达其目的地。
- 具有时延上界的确保交付。该服务不仅确保分组的交付,而且在特定的主机到机时延上界内交付。
此外,能够为给定的源和目的地之间的分组流提供下列服务:
- 有序分组交付。该服务确保分组以它们发送的顺序到达目的地。
- 确保最小带宽。这种网络层服务模仿在发送和接收主机之间的一条特定比特为 (例如1Mbps) 的传输链路的行为。只要发送主机以低于特定比特率的速率传输比特(作为分组的组成部分),则分组不会丢失,且每个分组会在预定的主机到主机时延内到达(例如在40ms内)。
- 确保最大时延抖动。该服务确保位于发送方的两个相继分组之间的时间量等于在目的地接收到它们之间的时间量(或这种间隔的变化不超过某些特定的值)。
- 安全性服务。使用仅由源和目的主机所知晓的一个秘密会话密钥,在源主机中的网络层能够加密向目的主机发送的所有数据报负载。在目的主机中的网络层则能够负责解密该负载。使用这种服务,能够向源和目的主机之间的所有运输层报文段 (TCP和UDP) 提供机密性。除了机密性以外,网络层能够提供数据完整性和源监别服务。
这只是网络层能够提供的部分服务的列表,有无数种可能的服务变种。
因特网的网络层提供了单一的服务,称为尽力而为服务 (best- effort service)。