一、概述
在之前的文章中,我们已经介绍了计算机网络的边缘,本文我们将继续介绍网络核心部分,即由互联因特网系统的分组交换机和链路构成的网状网络。
二、分组交换
在各种网络应用中,端系统彼此交换报文(message)。报文能够包含协议设计者需要的任何东西。报文可以执行一种控制功能,也可以包含数据,例如电子邮件数据、JPEG图像或MP3 音频文件。为了从源端系统向目的端系统发送一个报文,源将长报文划分为较小的数据块,称之为分组(packet)。在源和目的地之间,每个分组都通过通信链路和分组交换机(packet switch)传送。(交换机主要有两类:路由器(router) 和链路层交换机 (link-layer switch)。)分组以等于该链路最大传输速率的速度传输通过通信链路。因此,如果某源端系统或分组交换机经过一条链路发送一个L比特的分组,链路的传输速率为R比特/秒,则传输该分组的时间为L/R秒。
2.1 存储转发传输
多数分组交换机在链路的输入端使用存储转发传输(store-and-forward transmission)机制。存储转发传输是指在交换机能够开始向输出链路传输该分组的第一个比特之前,必须接收到整个分组。
在这种机制下,当路由器接收到一个分组的前沿比特时,不会立刻进行转发,而是必须先缓存(即“存储”)该分组的比特,只有当路由器已经接受完该分组的所有比特后,它才能开始向出链路传输(即“转发”)该分组。
2.2 排队时延和分组丢失
每台分组交换机有多条链路与之相连。对于每条相连的链路,该分组交换机具有一个输出缓存(output buffer,也称为输出队列(output queue)),它用于存储路由器准备发往那条链路的分组。该输出缓存在分组交换中起着重要的作用。如果到达的分组需要传输到某条链路,但发现该链路正忙于传输其他分组,该到达分组必须在输出缓存中等待。因此,除了存储转发时延以外,分组还要承受输出缓存的排队时延(queuing delay)。这些时延是变化的,变化的程度取决于网络的拥塞程度。因为缓存空间的大小是有限的,一个到达的分组可能发现该缓存已被其他等待传输的分组完全充满了。在此情况下,将出现分组丢失(丢包)(packet loss),到达的分组或已经排队的分组之一将被丢弃。
2.3 转发表和路由选择协议
前面我们说过,路由器从与它相连的一条通信链路得到分组,然后向与它相连的另一条通信链路转发该分组。但是路由器怎样决定它应当向哪条链路进行转发呢?不同的计算机网络实际上是以不同的方式完成分组转发的。这里,我们简要介绍在因特网中所采用的方法。
在因特网中,每个端系统具有一个称为IP地址的地址。当源主机要向目的端系统发送一个分组时,源在该分组的首部包含了目的地的IP地址。如同邮政地址那样,该地址具有一种等级结构。当一个分组到达网络中的路由器时,路由器检查该分组的目的地址的一部分,并向一台相邻路由器转发该分组。更特别的是,每台路由器具有一个转发表(forwarding table),用于将目的地址(或目的地址的一部分) 映射成为输出链路。当某分组到达一台路由器时,路由器检查该地址,并用这个目的地址搜索其转发表,以发现适当的出链路。路由器则将分组导向该出链路。
我们刚刚学习了路由器使用分组的目的地址来索引转发表并决定适当的出链路。但是这个叙述还要求回答另一个问题:转发表是如何进行设置的?是通过人工对每台路由器逐台进行配置,还是因特网使用更为自动的过程进行配置呢?这部分的内容我们会在后面的文章中详细讨论,这里先进行一个简单的说明:因特网具有以下特殊的路由选择协议(routing protocol),用于自动设置这些转发表。
三、电路交换
通过网络链路和交换机移动数据有两种基本方法:电路交换(circuit switching)和分组交换(packet switching)。上一节我们已经讨论过分组交换网络,现在我们将注意力转向电路交换网络。
在电路交换网络中,在端系统间通信会话期间,预留了端系统间沿路径通信所需要的资源(缓存,链路传输速率)。在分组交换网络中,这些资源则不是预留的;会话的报文按需使用这些资源,其后果可能是不得不等待(即排队)接入通信线路。一个简单的类比是,考虑两家餐馆,一家需要顾客预订,而另一家不需要预订,但不保证能安排顾客。对该餐馆时,原则上我们能够立即入座并点菜。对于不需要预订的那家餐馆,我们不必麻烦于需要预订的那家餐馆,我们在离开家之前必须承受先打电话预订的麻烦,但当我们到达地预订餐桌,但当我们到达该餐馆时,也许不得不先等待一张餐桌空闲后才能入座。
传统的电话网络是电路交换网络的例子。考虑当一个人通过电话网向另一个人发送信息(语音或传真)时所发生的情况。在发送方能够发送信息之前,该网络必须在发送方和接收方之间建立一条连接。这是一个名副其实的连接,因为此时沿着发送方和接收方之间路径上的交换机都将为该连接维护连接状态。用电话的术语来说,该连接被称为一条电路(circuit)。当网络创建这种电路时,它也在连接期间在该网络链路上预留了恒定的传输速率(表示为每条链路传输容量的一部分)。既然已经为该发送方—接收方连接预留了带宽,则发送方能够以确保的恒定速率向接收方传送数据。
四、小结
在网络核心中,通过网络链路和交换机移动数据有两种基本方法:电路交换(circuit switching)和分组交换(packet switching)。这里我们着重介绍了分组交换的方式,主要是因为笔者在实际应用中更多需要接触到的是这一部分的内容,因此对于电路交换的内容只是简单提及,并未展开。