通过通信链路和分组交换机来传输数据有两种基本方法:电路交换( circuit switching)和分组交换( packet switching)。

电路交换

电路交换比较官方的定义是:当两台主机要通信时,该网络在两台主机之间创建一条专用的端到端连接,这条连接是一条“名副其实”的真正的连接,这条连接路径上的交换机都要为该连接维护连接状态。比如,A和E的通信:
image.png
当路由器A发送通信数据之后,那么要做的第一件事就是根据E的电话号码找到E在哪里,由于A通往E的路径有多条,因此需要根据某种算法找到E之后,建立一条通路(假设是A->D->E),然后进行数据的传输。其中找到一条通往E的路径并建立会话的过程是电路交换的第一阶段:建立连接。之后A和E的会话过程会一直占用这条路线,这是电路交换的第二阶段:数据传达。当A和E结束会话,那么它们占用的路线就要释放,这是电路交换的第三阶段:释放连接。
image.png
通过电路交换这种方式来实现网络通信的数据是不需要进行分组的,每一份数据都会被实时获取,不会存在太大的延迟,因此这种方式是高效、实时的。但是这种方式建立连接阶段是比较耗时间的,可能比数据传达阶段还要久。而且假如A和E建立了连接,但是没有进行会话或会话时间很短,这样就导致资源利用率比较低。总的来说,电路交换的优点是:传输速度快、效率高、实时,缺点是:资源利用率低、建立连接需要花费较多时间成本。
image.png

分组交换

分组

分组就是将一个数据包分成一个个更小的数据包,例如对于一个10GB的数据包,不是一次性发送过去,而是把它分成若干个小的数据包发送过去,每个分组数据块的结构图:
image.png
文件头一般是一些说明性数据,例如源地址和目标地址,数据类型等,数据部分就是真正要传达给对象的内容。

分组交换介绍

分组交换就是以分组后的数据包形式进行传输,分组交换和电路交换不太一样,分组交换采用的是存储转发机制,下面会详细介绍这个机制。
image.png
如上图所示,假设路由器A要给E传输数据,这时不再需要花时间建立A和E直接连接,而是A直接把分组后的小数据包直接丢给附近的分组交换机(路由器或链路层交换机),之后A就不用去管这些数据包了。比如A把数据包p1丢给了B,当B接收到完整的p1后,再丢给其它的分组交换机,直到到达E。但是A不一定会把剩下的数据包都丢给B,可能会把数据包p2丢给C,p3丢给其它交换机,这些都是不确定的,会根据算法来选择。前面提到分组交换机必须接收完整的数据包,因此如果数据包不完整,比如数据包p1的文件头包含了一些地址,如果文件头丢失,B也不知道把p1丢给谁。
image.png
下面介绍存储转发机制,比较官方的定义:是指在交换机能够开始向输岀链路传输该分组的第一个比特之前,必须接收到整个分组。对于每条相连的链路,该分组交换机都会具有一个输出缓存( output buffer,也称为输出队列output queue),它用于存储路由器准备发往那条链路的分组,该输出缓存在分组交换中起着重要的作用。如果到达的分组需要跨越链路传输,但发现该链路正忙于传输其他分组,该到达分组必须在输出缓存中等待。因此,除了存储转发时延以外,分组还要承受输出缓存的排队时延( queue delay)。这些时延是变化的,变化的程度取决于网络中的拥塞水平。因为缓存空间的大小是有限的,所以一个到达的分组可能发现该缓存被等待传输的分组完全充满了。在此情况下,将出现分组丢失或丢包( packet lost),可能会导致到达的分组也可能是已经排队的分组之一将被丢弃。
image.png
除了上面说的延时、丢包缺点外,分组交换还有一个缺点就是会重复无用数据,因为每个分组后的数据包的文件头包含很多的重复数据。当然,分组交换的优点是设计简单、资源利用率高了。总的来说,分组交换的缺点是:不具实时性(因为时延)、可能出现丢包情况、存在无用的重复数据,优点是:设计简单、资源利用率高。

分组交换中的时延、丢包、吞吐量

在分组交换的模式下,时延、丢包、吞吐量这三者是决定网络性能的关键因素。

时延

分组由源出发,通过一系列路由器传输,在目的地结束,在这一过程中,经受着各种各样的时延,端到端时延(即源向目的地传输分组的总时延)由众多节点时延组成。
image.png
IMG_0042.PNG

处理时延

  • 检查分组首部和决定分组导向需要的时间
  • 检查比特级别的差错需要的时间

    排队时延

  • 分组在链路上等待传输的时间

  • 取决于先期到达、正在排队等待向链路传输分组的数量

    传输时延

  • 是将所有分组的比特推向链路的时间

  • 是分组长度和链路传输速率之间的函数,与路由器之间距离无关。假设一条传输速率为 R Mbps的以太网链路,L表示传输的分组的长度,则传输时延=L/R。这是将所有分组的比特推向链路所需要的时间,单位一般是微秒级

    传播时延

  • 比特上路后,在起点到路由器之间传播需要的时间

  • 是两台路由器之间距离的函数

image.png

丢包

由于排队时延(分组交换机的输出缓存已满),后面的分组数据包无处可去,从而导致可能会被路由器丢弃,也就是丢包现象。

吞吐量

吞吐量指的是瓶颈链路的传输速率,下面举一个一个服务器通过两条链路和一个路由器和客户相连的例子来理解:
image.png
其中Rs表示服务器与路由器之间的链路速率,Rc表示路由器与客户之间的链路速率。对于简单的两链路网络,吞吐量就是min{Rs,Rc},即两者的最小值,也就是瓶颈链路的传输速率。吞吐量有点类似与短板效应,即传输数据的速率取决与各链路上的最小的速率。以此推广,可以知道,N条链路的情况类似,吞吐量为min{R1,R2…Rn},还是所有链路的最小速率:
image.png

生活中的通信选择

在不同情况下会选择不同的网络通信方式,这取决于二者的优缺点。

比如一些需要实时性的通信:微信视频和语音、以及最原始的电话通信、视频转播……就适合选用电路交换的网络通信模式。

而像微信聊天、发送电子邮件、文件下载……这些通信对时效性要求都不是那么高的通信一般都会采用分组交换的网络通信模式,而生活中大部分通信都是分组交换。