1.1数据交换——电路、报文、分组交换

本文主要总结一下数据交换涉及的三个主要技术——电路、报文、分组交换。“交换”,从通信资源分配角度来看,就是按照某种方式动态地分配传输线路的资源

1、电路交换

电路交换是通信网中最早出现的一种交换方式,在进行数据传输前,两个结点之间必须先建立一条专用(双方独占)的物理通信链路。该线路在整个数据传输期间一直被独占,用户始终占用端到端的固定传输带宽,直到通信结束后才释放。最典型的的电路交换网络:电话网络。电路交换技术分为三个阶段建立连接(呼叫/电路建立)、通信(数据传输)和释放连接(拆除电路)

线路独占,是优点也是缺点。

电路交换的优点:

1)通信时延小。因为通信线路双方独占,所以传输时延非常小,在传输数据量大时优点非常明显。但时延小不代表整个网络通信效率高。

2)有序传输。通信数据按发送顺序传送,不存在乱序问题。

3)没有冲突。不同的通信双方拥有不同的信道,不存在争用物理信道的问题。

4)适用范围广。既适用于传输模拟信号又适用于传输数字信号。

5)实时性强。想像一下打电话,电话接通(物理通路建立),双方可以随时通信。

6)控制简单。早起电话人工就可以转接线路,可见控制非常容易。现在电话虽然数量庞大,但交换设备(交换机等)及控制均较简单。

电路交换的缺点:

1)建立连接时间长。平均建立连接时间对于计算机来说太长了。

2)使用效率低。线路独占,即使线路空闲,其他人也不能用,信道利用率低。比如你打电话中间去干别的了,你俩电话没有挂断其他人就用不了。

3)灵活性差。只要在双方建立的通路中的任何一点出了故障,就必须重新拨号建立新的连接,对于十分紧急和重要的通信不利。

4)难以规格化。电路交换时,数据是直达的,所以不同类型、不同规格、不同速率的终端很难进行通信,也很难在通信过程中进行差错控制。如果中间有个结点存储转发的话,这个结点就可以进行不同类型、规格、速率的信息进行处理适应。

2、多路复用

电路交换网络如何实现共享中继线(链路如何共享)?答:多路复用(Multiplexing)。计算机网络系统中,传输媒介的带宽或容量往往会大于传输单一信号的需求,为了有效地利用通信线路,希望一个信道同时传输多路信号,这就是所谓的多路复用技术(Multiplexing)。将链路/网络资源(如带宽)划分为“资源片”,将资源片分配给各路“呼叫”(calls),每路呼叫独占分配到的资源片进行通信资,源片可能“闲置”(idle)(无共享)。

典型的多路复用方法:频分多路复用( frequency division multiplexing-FDM )、 时分多路复用( time division multiplexing-TDM )、 波分多路复用(Wavelength division multiplexing-WDM)、码分多路复用( Code division multiplexing-CDM )。频分多路复用的各用户占用不同的带宽资源(注意,这里的“带宽”是频率带宽(单位:Hz)而不是数据的发送速率)。如图1.1 ,用户在分配到一定的频带后,在通信过程中自始至终都占用这个频带。时分复用则是将时间划分为一段段等长的时分复用帧(TDM 帧),每个用户在每个 TDM 帧中占用固定序号的时隙。如图1.2,每用户所占用的时隙是周期性出现(其周期就是TDM 帧的长度)。时分复用的所有用户是在不同的时间占用相同的频带宽度。波分复用就是光的频分复用,如图1.3。码分多路复用就是每个用户分配一个唯一的 m bit 码片序列 (chipping sequence),各用户使用相同频率载波,利用各自码片序列编码数据。

图1.1 频分多路复用
图1.2 时分多路复用
图1.3 波分多路复用

分组交换也可以看做是一个统计多路复用(Statistical Multiplexing),分组交换是怎样共享链路的呢?分组交换在发送分组时,比如有A、B两个主机,不管分组是哪个主机的,只要接收过来就会进行排队等待传输,并不是像电路交换那样事先把链路带宽分配给主机A一部分、主机B一部分。分组交换在每个主机在传输数据时都是使用全部带宽进行传输的。有时主机A在传输数据,主机B没有传输数据,那么这时链路就被主机A独自占用。主机A & B分组序列不确定,所以是按需共享链路,我们叫它Statistical Multiplexing。

3、报文交换

报文交换的单位是报文,报文携带有目标地址、源地址等信息。报文交换结点采用的是存储转发的传输方式。

报文交换的优点:

1)无建立时延:报文交换相对电路交换来说不需要为通信双方预先建立一条专用的通信线路,不存在建立连接时延,用户可以随时发送报文。

2)动态分配线路:当发送方把报文交给交换设备时,交换设备先存储整个报文,然后选择一条合适的空闲线路,将报文发送出去。

3)提高线路可靠性:如果某条传输路径发生故障,可重新选择另一条路径传输数据,所以提高了传输的可靠性。

4)提高线路利用率:通信双方不是固定占有一 条通信线路,而是在不同的时间段段地部分占有这条物理通道,因而大大提高了通信线路的利用率。

5)提供多目标服务:一个报文可以同时发送往多个目的地址,这在电路交换中是很难实现的。

报文交换的缺点:

1)由于数据进入交换结点后要经历存储、转发这一过程,从而引起转发时延(包括接收报文、检验正确性、排队、发送时间等)。

2) 报文交换对报文的大小没有限制,这就要求网络结点(如路由器、交换机)需要有较大的缓存空间。

注:报文交换主要使用在早期的电报通信网中,现在较少使用,通常被较先进的分组交换方式所取代。

3、分组交换

同报文交换一样, 分组交换也采用了存储转发方式,但解决了报文交换中大报文传输的问题。分组交换限制了每次传送的数据块大小的上限,把大的数据块划分为合理的小数据块,再加上一些必要的控制信息(如源地址、目的地址和编号信息等),构成分组(Packet). 网络结点根据控制信息把分组送到下一结点,下一结点接收到分组后,(如果前边有分组未发送,则暂时保存下来并排队等待传输),根据分组控制信息选择它的下一个结点, 直到到达日的结点。

分组交换的优点:

1)无建立时延。(同报文交换优点1)相对电路交换来说。

2)线路利用率高。(同报文交换优点4)相对电路交换来说。

3)简化了存储管理(相对于报文交换)。因为分组的长度固定,相应的缓冲区的大小也固定,在交换结点中存储器的管理通常被简化为对缓冲区的管理,相对比较容易。

4)加速传输:  分组是逐个传输,可以使后一个分组的存储操作与前一“ 个分组的转发操作并行,这种流水线方式减少了报文的传输时间。此外,传输一个分组所需的缓冲区比传输一次报文所需的缓冲区小得多,这样因缓冲区不足而等待发送的几率及时间也必然少得多。

5)减少了出错几率和重发数据量:因为分组较短,其出错几率必然减少,所以每次重发的数据量也就大大减小,这样不仅提高了可靠性,  也减少了传输时延。

      分组交换的缺点:

1)存在传输时延。尽管分组交换比报文交换的传输时延少,但相对于电路交换仍存在存储转发时延,而且其结点交换机必须具有更强的处理能力。

 2)需要传输额外的信息量。每个小数据块都要加上源、目的地址和分组编号等信息,从而构成分组,使传送的信息量大约增大5%~ 10%,一定程度上降低了通信效率,增加了处理的时间,使控制复杂,  时延增加。

 3)当分组交换采用数据报服务时,可能出现失序、丢失或重复分组,分组到达目的结点时,要对分组按编号进行排序等工作,控制变得复杂。若采用虚电路服务,虽无失序问题,但有呼叫建立、数据传输和虚电路释放三个过程。

那么哪种交换好呢?图1.4给出了三种数据交换方式的比较。若要传送的数据量很大,且其传送时间远大于呼叫时间,则采用电路交换较为合适;当端到端的通路由很多段的链路组成时,采用分组交换传送数据较为合适。从提高整个网络的信道利用率上看,报文交换和分组交换优于电路交换,其中分组交换比报文交换的时延小,尤其适合于计算机之间的突发式的数据通信。
 

图1.4 电路、报文、分组交换比较图

分组交换报文交付时间:T=M/R+(h-1)L/R
                                          =M/R+nL/R

其中:报文: M bits,链路带宽(数据传输速率): R bps,分组长度(大小): L bits  ,跳步数: h ,路由器数:n

例题:在下图所示的采用“存储-转发”方式的分组交换网络中,所有链路的数据传输速率为100 Mbps,分组大小为1 000 B,其中分组头大小为20 B。若主机H1向主机H2发送一个大小为980 000 B的文件,则在不考虑分组拆装时间和传播延迟的情况下,从H1发送开始到H2接收完为止,需要的时间至少是多少?

解:方法一、980 000 B大小的文件需要分1000个分组,每个分组1 000 B。H1发送整个文件需要的传输延迟为(980 000+20*1000)*8/100 000 000=80ms;根据路由选择基本原理,所有数据分组应该经过两个路由器的转发,所以再加上最后一个分组的两次转发的传输延迟,即2*1000*8/100 000 000=0.16ms。所以,H2收完整个文件至少需要80+0.16=80.16ms。

方法二、套用公式:T=M/R+nL/R,其中M=(980 000+20*1000)*8b,R=100 000 000bps,n=2,L=1 000B。

                                 T=(980 000+20*1000)*8/100 000 000+2*1000*8/100 000 000=80.16ms.