概述
# 电路交换、分组交换和报文交换
# 电路交换
在早期专为电话通信服务的电信网络中,需要使用很多相互连接起来的电话交换机来完成全网的交换任务。电话交换机接通电话线的方式就是电路交换(Circuit Switching)。
使用电路交换进行通信的三个步骤如下:
- 建立连接:分配通信资源
- 通话:一直占用通信资源
- 释放连接:归还通信资源
计算机之间的数据传送是突发式的,当使用电路交换来传送计算机数据时,其线路的传输效率一般都会很低,线路上真正用来传送数据的时间往往不到10%甚至1%。
# 分组交换
源主机将待发送的整块数据构造成若干个分组并发送出去,分组传送中的各交换节点(也就是路由器)对分组进行存储转发,目的主机收到这些分组后将它们组合还原成原始数据块。待发送的整块数据通常被称为报文(Message)。
将较长的报文划分为若干个较小的等长数据段,在每个数据段前添加一些必要的控制信息自称的首部(Header),这样就构成了一个个分组(Packet)。


发送方:构造分组,发送分组
交换节点:缓存分组,转发分组
接收方:接收分组,还原报文
优点:
- 没有建立连接和释放连接的过程。
- 分组传输过程中逐段占用通信链路,有较高的通信线路利用率。
- 交换节点可以为每一个分组独立选择转发路由,使得网络有很好的生存性。
缺点:
- 分组首部带来了额外的传输开销。
- 交换节点存储转发分组会造成一定的时延。
- 无法确保通信时端到端通信资源全部可用,在通信量较大时可能造成网络拥塞。
- 分组可能会出现失序和丢失等问题。
# 报文交换
报文交换是分组交换的前身。
在报文交换中,报文被整个地发送,而不是拆分成若干个分组进行发送。
交换节点将报文整体接收完成后才能查找转发表,将整个报文转发到下一个节点。
因此,报文交换比分组交换带来的转发时延要长很多,需要交换节点具有的缓存空间也大很多。
# 三种交换方式对比
若要连续传送大量的数据,并且数据传送时间远大于建立连接的时间,则使用电路交换可以有较高的传输效率。然而计算机的数据传送往往是突发式的,采用电路交换时通信线路的利用率会很低。
报文交换和分组交换都不需要建立连接(即预先分配通信资源),在传送计算机的突发数据时可以提高通信线路的利用率。
将报文构造成若干个更小的分组进行分组交换,比将整个报文进行报文交换的时延要小,并且还可以避免太长的报文长时间占用链路,有利于差错控制,同时具有更好的灵活性。
# 计算机网络的定义和分类
# 定义
计算机网络主要是由一些通用的、可编程的硬件互连而成的,而这些硬件并非专门用来实现某一特定目的(例如,传送数据或视频信号)。这些可编程的硬件能够用来传送多种不同类型的数据,并能支持广泛的和日益增长的应用。
# 分类
- 交换方式:电路交换、报文交换、分组交换
- 使用者:公用网(因特网)、专用网(军队、铁路、电力、银行)
- 传输介质:无线网络、有线网络
- 覆盖范围:广域网、城域网、局域网、个域网
- 拓扑结构:总线型、星型、环形、网状型
# 计算机网路的性能指标
常用八个性能指标:速率、带宽、吞吐量、时延、时延带宽积、往返时间、利用率、丢包率
# 速率
比特(bit,记为小写 b)是计算机中数据量的基本单位,一个比特就是二进制数字中的一个1或0。
数据量的常用单位有字节(byte,记为大写B)、千字节(KB)、兆字节(MB)、吉字节(GB)以及太字节(TB)。
数据量的单位 | 换算关系 |
---|---|
比特 bit(b) | 基本单位 |
字节 byte(B) | |
千字节(KB) | |
兆字节(MB) | |
吉字节(GB) | |
太字节(TB) |
速率是指数据的传送速率(即每秒传送多少个比特),也称为数据率(Data Rate)或比特率(Bit Rate)。
速率的基本单位是比特/秒(bit/s,可简记为b/s,有时也记为bps,即bit per second)。速率的常用单位有千比特/秒(kb/s或kbps)、兆比特/秒(Mb/s或Mbps)、吉比特/秒(Gb/s或Gbps)以及太比特/秒(Tb/s或Tbps)。
速率的单位 | 换算关系 |
---|---|
比特/秒 bps(b/s) | 基本单位 |
千比特/秒 kilobits per second(kb/s) | |
兆比特/秒 megabits per second(Mb/s) | |
吉比特/秒 gigabits per second(Gb/s) | |
太比特/秒 terabits per second(Tb/s) |
练习:有一个待发送的数据块,大小为100MB,网卡的发送速率为100Mbps,则网卡发送完该数据块需要多长时间?

为什么单位换算关系不同?
为什么数据量的单位以 2^10=1024 为换算关系,而传输速率以 10^3=1000 为换算关系?
概念/单位 | 换算关系 | 驱动因素 | 常见应用场景 |
---|---|---|---|
存储容量 | 1 KB = 1024 Bytes | 计算机二进制底层特性 (2^10 = 1024) | 内存大小、文件大小、操作系统报告的硬盘空间 |
传输速率 | 1 kbps = 1000 bps | 电信行业历史、国际单位制 (SI) 的严格定义 (10^3=1000) | 网络带宽(宽带、WiFi)、调制解调器速度 |
为什么 KB、MB、GB 在实际上换算关系不统一?
在计算机领域,KB、MB、GB 这些单位在实际使用中存在两种常见的换算标准:
- 基于 1024 的换算(二进制换算)
- 基于 1000 的换算(十进制换算)
到底什么时候用1024,什么时候用1000,取决于上下文和使用方。这才是问题的核心。
- 十进制前缀(SI标准):
- K (kilo) = 10^3 = 1000
- M (mega) = 10^6 = 1,000,000
- G (giga) = 10^9 = 1,000,000,000
- 如果严格按照SI标准,那么:
- 1 KB (Kilobyte) = 1000 Bytes
- 1 MB (Megabyte) = 1000 KB = 1,000,000 Bytes
- 1 GB (Gigabyte) = 1000 MB = 1,000,000,000 Bytes
- 二进制前缀(IEC标准):
- Ki (kibi) = 2^10 = 1024
- Mi (mebi) = 2^20 = 1024 * 1024 = 1,048,576
- Gi (gibi) = 2^30 = 1024 * 1024 * 1024 = 1,073,741,824
- 按照IEC标准:
- 1 KiB (Kibibyte) = 1024 Bytes
- 1 MiB (Mebibyte) = 1024 KiB = 1,048,576 Bytes
- 1 GiB (Gibibyte) = 1024 MiB = 1,073,741,824 Bytes
尽管IEC推出了更规范的二进制前缀(GiB, MiB),但业界和用户并没有完全采纳这些新名称。因此,旧的KB、MB、GB等单位在不同语境下,可能代表着1000的换算,也可能代表着1024的换算。
- 硬盘制造商、U盘制造商、SD卡制造商等:
- 他们使用十进制的1000换算。
- 1 GB = 1,000,000,000 Bytes
- 目的: 让产品容量看起来更大,对消费者更有吸引力。
- 操作系统(Windows, macOS, Linux):
- 他们使用二进制的1024换算,但仍然习惯性地用KB、MB、GB这些旧的符号来表示。
- 1 GB (实际上是 GiB) = 1024 MB (实际上是 MiB) = 1024 * 1024 * 1024 Bytes
- 目的: 这是因为计算机内部寻址和处理数据都是基于2的幂次,1024 对计算机来说是“自然”的进制。
- 网络传输速率(bps, kbps, Mbps, Gbps):
- 始终使用十进制的1000换算。
# 带宽
带宽在模拟信号系统中的意义
某个信号所包含的各种不同频率成分所占据的频率范围。
单位:Hz(kHz,MHz,GHz)。
带宽在计算机网络中的意义
用来表示网络的通信线路所能传送数据的能力,即在单位时间内从网络中的某一点到另一点所能通过的最高数据率。
单位:b/s(kb/s,Mb/s,Gb/s,Tb/s)。
数据传送速率 = min [ 主机接口速率,线路带宽,交换机或路由器的接口速率 ]

# 吞吐量
- 吞吐量是指在单位时间内通过某个网络或接口的实际数据量。吞吐量常被用于对实际网络的测量,以便获知到底有多少数据量通过了网络。
- 吞吐量受网络带宽的限制。

# 时延
时延是指数据从网络的一端传送到另一端所耗费的时间,也称为延迟或迟延。 数据可由一个或多个分组、甚至是一个比特构成。
网络中的时延由发送时延、传播时延、排队时延以及处理时延组成。
发送时延:主机或路由器发送分组所耗费的时间
发送速率 = min [主机接口速率,线路带宽,交换机或路由器的接口速率]
传播时延:电磁波在传输介质上传播一定的距离所消耗的时间
- 自由空间:3.0 × 10^8 m/s
- 铜线:2.3 × 10^8 m/s
- 光纤:2.0 × 10^8 m/s
排队时延:分组在路由器的输入队列和输出队列中排队缓存所消耗的时间就是排队时延
不方便计算
处理时延:路由器对分组进行一系列处理工作所耗费的时间就是处理时延
不方便计算


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


需要的最小时长 = 所有分组的发送时延 + 1个分组的发送时延×2(忽略掉传播时延)

练习2
练习2:数据块长度为100MB,信道带宽为1Mb/s,传送距离为1000KM,传输介质为光纤,计算发送时延和传播时延。
练习 3
练习 3:数据块长度为1B,信道带宽为1Mb/s,传送距离为1000KM,传输介质为光纤,计算发送时延和传播时延。
# 时延带宽积
时延带宽积是传播时延和带宽的乘积。

【举例】主机A和B之间采用光纤链路,链路长1km,链路带宽为1Gb/s,请计算该链路的时延带宽积。
因此,链路的时延带宽积也称为以比特为单位的链路长度,这对我们以后理解以太网的最短帧长是非常有帮助的。
# 往返时间
往返时间(Round-Trip Time,RTT)是指从发送端发送数据分组开始,到发送端收到接收端发来的相应确认分组为止,总共耗费的时间。


# 利用率
- 链路利用率
- 链路利用率是指某条链路有百分之几的时间是被利用的(即有数据通过)。
- 完全空闲的链路的利用率为零。
- 网络利用率
- 网络利用率是指网络中所有链路的链路利用率的加权平均。
- 根据排队论可知,当某链路的利用率增大时,该链路引起的时延就会迅速增加。
- 当网络的通信量较少时,产生的时延并不大,但在网络通信量不断增大时,分组在交换节点(路由器或交换机)中的排队时延会随之增大,因此网络引起的时延就会增大。
- 令D0表示网络空闲时的时延,D表示网络当前的时延,那么在理想的假定条件下,可用下式来表示D、D0和网络利用率U之间的关系。

一些大型ISP往往会控制信道利用率不超过50%。如果超过了就要进行扩容,增大线路的带宽。
# 丢包率
丢包率是指在一定的时间范围内,传输过程中丢失的分组数量与总分组数量的比率。

分组丢失主要有两种情况:
- 分组在传输过程中出现误码,被传输路径中的节点交换机(例如路由器)或目的主机检测出误码而丢弃。
- 节点交换机根据丢弃策略主动丢弃分组。
丢包率可以反映网络的拥塞情况:
- 无拥塞时路径丢包率为0。
- 轻度拥塞时路径丢包率为1%~4%。
- 严重拥塞时路径丢包率为5%~15%。
# 计算机网络体系结构
# 常见的三种计算机网络体系结构
# 分层的必要性
计算机网络是个非常复杂的系统,“分层”可将庞大复杂的问题转化为若干较小的局部问题
- 物理层需要考虑的主要问题
- 采用什么传输媒体(介质)
- 采用什么物理接口
- 采用什么信号表示比特 0 和 1
- 数据链路层考虑的主要问题
- 如何标识网络各主机(主机编址,例如 MAC 地址)
- 从比特流中区分出地址和数据(数据封装格式)
- 协调各主机争用总线(碰撞问题,媒体介入控制)(总线型网络早已淘汰,现在常用的是交换式以太网)
- 以太网交换机的实现(自学习和转发帧)
- 检测数据是否误码(差错检测)
- 出现传输差错如何处理(可靠传输和不可靠传输)
- 接收方控制发送方注入网络的数据量(流量控制)
- 网络层主要考虑的问题
- 标识网络和网络中的各主机(网络和主机共同编址,例如IP地址)
- 路由器如何转发分组和进行路由选择(路由选择协议、路由表和转发表)
- 传输层主要考虑的问题
- 进程之间基于网络的通信(进程的标识,例如端口号)
- 出现传输差错如何处理(可靠传输和不可靠传输)
- 应用层主要考虑的问题
- 通过应用进程间的交互来完成特定的网络应用
- 进行会话管理和数据表示(何种编码、是否加密和压缩数据)

# 计算机网络体系分层思想举例
如图所示,主机属于网络 N1,Web 服务器数据网络 N2,N1 和 N2 通过路由器互联。用户在主机中使用浏览器访问 Web 服务器的过程如下:
- 用户在浏览器地址栏中输入 Web 服务器的域名。
- 主机向 Web 服务器发送一个请求报文。
- Web 服务器收到请求报文后,执行相应的操作,然后给主机发送响应报文。
- 主机收到响应报文后,由浏览器负责解析和渲染显示。
主机和 Web 服务器之间基于网络的通信,实际上是主机中的浏览器应用进程与 Web 服务器应用进程之间基于网络的通信。
主机对数据包的处理过程
- 应用层:构建 HTTP 请求报文。应用层将构建好的 HTTP 请求报文向下交付给运输层。
- 运输层:给 HTTP请求报文添加一个 TCP 首部,将其封装成 TCP 报文段。TCP 首部的作用主要是区分应用进程和实现可靠传输。运输层将封装好的 TCP 报文段向下交付给网络层。
- 网络层:为 TCP 报文段添加一个 IP 首部,将其封装成 IP 数据报。IP 首部的主要作用主要是 IP 寻址和路由。网络层将封装好的 IP 数据包向下交付给数据链路层。
- 数据链路层:为 IP 数据包添加一个首部和一个尾部,将其封装成帧。帧首部和尾部的主要作用是 MAC 寻址和帧校验。数据链路层将封装好的帧向下交付给物理层。
- 物理层:并不认识帧的结构,仅仅将其看作比特流,以便将比特流转换成相应的电信号进行发送。对于以太网,物理层还会在比特流前添加前导码,目的是使接收方的时钟同步,并做好接收准备。
路由器对数据包的处理过程
路由器收到数据包后对其进行处理和转发过程如下
- 接收口的物理层:将收到的电信号转换为比特流,并去掉前导码,然后将帧向上交付给数据链路层。
- 接收口的数据链路层:去掉帧的首部和尾部后,将 IP 数据报向上交付给网络层。
- 网络层:网络层从 IP 数据报的首部中提取出目的IP 地址,根据目的的 IP 地址查找自己的转发表,以便决定从那个接口转发该 IP 数据报。与此同时,还要对首部中的某些字段值进行相应的修改,然后将该 IP 数据包向下交付给数据链路层。
- 转发口的数据链路层:为 IP 数据报添加一个首部和一个尾部,将其封装成帧,向下交付给物理层。
- 转发口的物理层:将帧看作比特流,给其添加前导码后转变成相应的电信号发送出去。
Web 服务器对数据包的处理
Web 服务器收到数据包后,按网络体系结构自下而上的顺序对其进行逐层解封,解封出的 HTTP 报文,如图所示:
Web 服务器给主机发送 HTTP 响应报文的过程
Web 服务器收到 HTTP 请求后,需要给主机发送HTTP响应报文。也是在逐层封装、逐层解封。
# 计算机网络体系结构中的专业术语
实体
实体是指任何可发送或接收信息的硬件或软件进程。
对等实体是指通信双方相同层次中的实体。
协议
协议是控制两个对等实体在“水平方向” 进行“逻辑通信”的规则的集合。
协议三要素:
- 语法:定义所交换信息的格式
- 语义:定义通信双方所要完成的操作
- 同步:定义通信双方的时序关系
服务
在协议的控制下,两个对等实体在水平方向的逻辑通信使得本层能够向上一层提供服务。
要实现本层协议,还需要使用下面一层所提供的服务。
协议是“水平”的,而服务是“垂直”的。
实体看得见下层提供的服务,但并不知道实现该服务的具体协议。下层的协议对上层的实体是“透明”的。
在同一系统中相邻两层的实体交换信息的逻辑接口称为服务访问点SAP,它被用于区分不同的服务类型。
帧的“类型”字段、IP数据报的“协议”字段,TCP报文段或UDP用户数据报的“端口号”字段都是SAP。
上层要使用下层所提供的服务,必须通过与下层交换一些命令,这些命令称为服务原语。
对等层次之间传送的数据包称为该层的协议数据单元(Protocol Data Unit,PDU)。例如:物理层对等实体间逻辑通信的数据包成为比特流(bit stream);数据链路层称为帧(frame)、网络层称为分组(packet),如果使用 IP 协议,也称为 IP 数据报、运输层通常为 TCP 报文段或 UDP 用户数据报、应用层一般称为应用报文(message)。
同一系统内层与层之间交换的数据包称为服务数据单元(Service Data Unit,SDU)。