交换方式

交换就是动态分配通信资源。计算机网络中常见三种交换方式:电路交换、报文交换、分组交换。

900

电路交换

电路交换的过程分三步:

  1. 建立连接:通信双方之间建立一条专用物理通路。
  2. 通信:通信双方独占这条通路上的通信资源。
  3. 释放连接:通信结束后释放资源。

电路交换适合持续、稳定的数据传输。若数据传送时间远长于建立连接时间,它可以有较高效率。但计算机数据常常是突发式的,长时间独占链路会降低线路利用率。

报文交换

报文交换把整个报文作为一个单位进行存储转发。中间结点收到完整报文后,再决定下一跳并继续转发。

它不需要预先建立专用连接,但整个报文可能很长,会长时间占用结点缓存和链路,时延也较大。

分组交换

分组交换把较长报文拆成较小的分组。每个分组带有首部,中间路由器根据首部中的地址信息查表转发。

分组交换的核心动作是存储转发

  1. 路由器收到分组。
  2. 把分组暂存下来。
  3. 读取分组首部。
  4. 查转发表,确定转发接口或下一跳。
  5. 将分组发往下一段链路。

分组交换的优点:

  • 不需要建立和释放连接。
  • 分组在哪段链路上传输,才占用哪段链路资源。
  • 每个分组可以独立选择转发路径。
  • 对突发式计算机数据更合适。

分组交换的代价:

  • 分组首部带来额外开销。
  • 路由器存储转发会产生时延。
  • 网络拥塞时可能排队、丢包。
  • 不同分组可能失序到达。
对比 电路交换 报文交换 分组交换
是否建立连接 需要 不需要 不需要
传输单位 连续比特流 整个报文 分组
中间结点处理 建立并维持通路 存储整个报文后转发 存储分组后转发
线路利用率 突发数据下较低 较高 较高
时延特点 有建立连接时延 报文长时时延大 适合流水线式转发

性能指标总览

指标 关注的问题
速率 数据传送有多快
带宽 链路理论上能传多快
吞吐量 实际通过了多少数据
时延 一个分组从发送到到达要多久
时延带宽积 链路中能同时“容纳”多少比特
RTT 一次往返交互要多久
利用率 链路或网络有多少时间处于忙碌状态
丢包率 有多少分组丢失

速率

速率是数据的传送速率,也称数据率或比特率,基本单位是 bit/s

常见单位:

单位 含义
kb/s $10^3$ bit/s
Mb/s $10^6$ bit/s
Gb/s $10^9$ bit/s
Tb/s $10^{12}$ bit/s
速率单位通常按 10 进制换算

计算机组成原理、操作系统里讨论存储容量时,KBMBGB 常按 $2^{10}$ 进位理解;计算机网络里讨论速率时,kb/sMb/sGb/s 通常按 $10^3$ 进位理解。例如 $1Mb/s = 10^6 bit/s$,不是 $2^{20} bit/s$。

b 和 B 不能混

b 是 bit,比特;B 是 Byte,字节。$1B = 8b$。网络速率通常用 bit/s,文件大小和存储容量常用 BKBMBGB

# 带宽

带宽在不同语境下有不同含义:

  • 在模拟信号系统中,带宽表示信号占据的频率范围,单位是 Hz。
  • 在计算机网络中,带宽表示通信线路传送数据的能力,单位通常是 bit/s。

网络中一次传输的实际速率会受到链路、接口、交换机、路由器等多个环节限制。瓶颈环节决定上限,也就是常说的“木桶效应”。

带宽不是吞吐量

带宽像“道路最大通行能力”,吞吐量像“实际通过的车辆数”。带宽高不代表某一时刻实际数据量一定高。

# 吞吐量

吞吐量是在单位时间内通过某个网络、链路或接口的实际数据量。

如果某用户同时有:

  • 视频下载:20 Mb/s
  • 网页下载:600 kb/s,即 0.6 Mb/s
  • 文件上传:1 Mb/s

则该用户此时的吞吐量为:

1
20 Mb/s + 0.6 Mb/s + 1 Mb/s = 21.6 Mb/s

吞吐量通常不超过瓶颈带宽,但会受到协议开销、拥塞、设备性能、应用行为等影响。

时延

一个分组从源主机到目的主机,通常经历四类时延。

时延 含义 常用公式
发送时延 把分组所有比特推上链路所需时间 $\dfrac{\text{分组长度}}{\text{发送速率}}$
传播时延 信号在链路上传播所需时间 $\dfrac{\text{链路长度}}{\text{传播速率}}$
排队时延 在路由器队列中等待处理或转发的时间 通常无法用固定公式计算
处理时延 检查首部、查表、差错检测等处理时间 通常无法用固定公式计算

900

发送时延和传播时延是两个维度

发送时延看“分组有多长、接口发得多快”;传播时延看“链路有多长、信号跑得多快”。把 1 bit 送上链路也需要传播时延,把 1 MB 数据推上链路也需要发送时延。

## 多跳存储转发时延

分组交换采用存储转发。路由器通常要收到一个完整分组后,才能继续把该分组转发到下一段链路。

在不考虑排队时延和处理时延,且每段链路发送速率相同、传播时延相同的简化情况下:

  • 发送 $m$ 个分组。
  • 经过 $n$ 个路由器。
  • 每个分组的发送时延为 $d_t$。
  • 每段链路传播时延为 $d_p$。

总时间可理解为:

1
2
3
m 个分组从源主机连续发送:m * d_t
n 个路由器各补上一段转发发送时延:n * d_t
n + 1 段链路传播时延:(n + 1) * d_p

所以:

$$
D = (m+n)d_t + (n+1)d_p
$$

这里的关键是不要把每个路由器转发 $m$ 个分组的发送时延都重复相加。流水线形成后,中间路由器转发前一个分组时,源主机可能已经在发送后一个分组。

时延带宽积

时延带宽积是传播时延与带宽的乘积:

$$
\text{时延带宽积} = \text{传播时延} \times \text{带宽}
$$

它表示链路中正在传播、尚未到达接收端的比特数,也可以理解为第一个比特即将到达终点时,链路上正在传播的比特数。

900

例如链路长度为 1 km,带宽为 1 Gb/s,光在光纤中的传播速率约为 $2\times 10^8$ m/s:

$$
\text{传播时延} = \frac{1000}{2\times 10^8}=5\times 10^{-6}s
$$

$$
\text{时延带宽积}=5\times 10^{-6}\times 10^9=5000b
$$

这表示第一个比特即将到达终点时,链路上大约已经有 5000 个比特正在传播。

RTT

RTT,Round-Trip Time,往返时间,是从发送端发送数据开始,到收到接收端确认所经历的时间。

许多网络应用都不是单向传输,而是请求-响应式交互。RTT 越大,用户感受到的响应越慢。ping 测量的就是一类往返时间。

850

利用率

利用率分为链路利用率和网络利用率:

  • 链路利用率:某条链路有多少比例的时间正在传送数据。
  • 网络利用率:网络中各链路利用率的加权平均。

利用率不是越高越好。利用率升高后,排队时延会迅速增大;当利用率接近 1 时,时延可能趋近无穷大。

利用率高不等于性能好

一条链路长期接近满载,说明资源被充分使用,但也说明几乎没有余量吸收突发流量。此时稍有流量增加,就会排队、时延暴涨甚至丢包。

# 丢包率

丢包率是在一定时间范围内,丢失分组数占总分组数的比例:

$$
\text{丢包率} = \frac{\text{丢失分组数}}{\text{总分组数}}
$$

分组丢失常见原因:

  • 传输过程中出现误码,被中间结点或目的主机检测后丢弃。
  • 路由器、交换机队列溢出,根据丢弃策略主动丢弃分组。

丢包会影响吞吐量、时延和应用体验。实时音视频、网络游戏、交互式远程操作尤其敏感。