在源到目的的通信会话期间,预留了沿途路径所需的所有资源。
例如传统的电话网络,当通话进行之前,必须建立一条发送方与接收方的连接,这条连接即为电路:
phone1 <---------> phone2
| |
| |
| |
| |
phone3 <---------> phone4
```
假设 phone1 与 phone2 进行通话,若采用频分复用的方式构建链路,则二者占用了链路中的某个频段,在二者通话期间,其他人无法使用这段频率。
因此,与随后的分组交换相比,电路交换效率低下且成本高昂,因此在网络通信过程中,这种方式很少用到。
## 报文交换
不同于电路交换中构建一条真实的物理链路,报文交换以**存储转发**的方式进行传输。
- 存储转发:交换机向下一条链路传输数据时,必须接收到之前的所有数据。
假设有下述网络:
```txt
源 ----> 路由器1 -----> 目的
源将报文(即所有数据)传输到路由器1, 路由器1 接收完后,才将数据传给 2.
由于报文长度没有限制,对于数据较大的分组,时延可能较大,因此多数采用分组交换。
为了将源系统向目的系统发送一个报文,源将长报文分割为较小的数据块,称为分组。
每个分组通过通信链路和分组交换机(路由器和链路层交换机)传输。
考虑两个端系统经过一台路由器构成的简单网络,即:
源 -------> 路由器 -------> 目的
假设源发出的报文分割成了两个分组,每个分组的长度为
- 时刻 0, 源开始传输;
- 时刻
$L/R$ s, 路由器接受完第一个分组,并向目的地传输该分组; - 时刻
$2L/R$ s, 目的地接受完第一个分组;路由器接受完第二个分组,并向目的地传输该分组; - 时刻
$3L/R$ s, 目的地接受完所有分组。
扩展到一般情形:由
数据在链路上的传播是需要消耗时间的,但由于速率为光速,因此传播时延一般在毫秒量级。
思考:若有多个分组同时到达某台交换机,则交换机该如何处理?
其实,每台交换机都会与多个链路相连,对于每条相连的链路,交换机内有一个输出队列,它存储了发往各个链路的分组。
若某条链路中已经传输分组,则交换机中准备向这条链路发出的分组必须在输出队列中等待,因此,分组还具有排队时延,该事件由网络环境的拥挤程度决定的。
对于每个到达路由器的分组而言,都需要知道它之后的传输路径,因此,每个路由器中存储了转发表,它用于将目的地址映射为输出链路。
再思考:若交换机内的输出队列已满,而又有新的分组到达该交换机,如何处理?
一般情况下,交换机会按照约定的策略丢掉某个分组,这就是丢包。