这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

计算机网络

computer_network

计算机网络在 408 试卷中占据 25 分,是分数占比最小的一门科目,包含 8 道选择题以及 1 道大题。但是复习难度其实并不小,因为知识点庞杂且琐碎,记忆性内容较多,理解性内容较少,并且在选择题中常常考察冷门知识点,所以想在 25 分中得到 20 分以上其实并不容易。

建议大家在复习计算机网络时要抓住主干知识,确保大题和基本的选择题题型可以准确无误地做出来。对于一些冷门知识点,可以选择性放弃,只保留一个基本的印象即可,不需要深入理解,如果真地考察到,可以根据自己的印象大致蒙一个答案。


计算机网络的考察目标包含如下内容(来自 408 考研大纲):

  1. 掌握计算机网络的基本概念、基本原理和基本方法。
  2. 掌握典型计算机网络的结构、协议、应用以及典型网络设备的工作原理。
  3. 能够运用计算机网络的基本概念、基本原理和基本方法进行网络系统的分析、设计和应用。

1 - 计算机网络体系结构

可能在选择题中考察,需要掌握 TCP/IO 模型和 ISO/OSI 模型的不同,并且能够从一个宏观的角度看待网络不同层次之间的联系。

学习思维导图:

# 计算机网络概述

## 基本概念

- 定义、组成和功能
- 分类
- 主要性能指标

## 体系结构

- 分层结构
- 网络协议、接口、服务等概念
- ISO/OSI参考模型和TCP/IP模型

1.1 - 分层结构

🔥 高优先级
真题练习
OSI 模型是选择题的高频考点,需要理解每一层的功能。此外,还需要了解 TCP/IP 协议栈和 OSI 协议栈的不同 以及 协议数据单元的概念。

ISO/OSI 模型

OSI 参考模型7 层,自下而上依次为【物理层、数据链路层、网络层、传输层、会话层、表示层、应用层】(记忆:物链网输会示用)。低三层统称为 通信子网,它是为了联网而附加的通信设备,完成数据的传输功能;高三层统称为 资源子网,它相当于计算机系统,完成数据的处理等功能。传输层 承上启下。

OSI 参考模型的层次结构如下图所示:

应用层
表示层
会话层
传输层
网络层
数据链路层
物理层
网络层
数据链路层
物理层
网络层
数据链路层
物理层
网络层
数据链路层
物理层
应用层
表示层
会话层
传输层
网络层
数据链路层
物理层
应用层协议
表示层协议
会话层协议
传输层协议
端系统
中继系统
中继系统
中继系统
端系统

物理层

物理层的传输单位是 比特,功能是在物理媒体上为数据端设备透明地传输原始比特流,不用参与数据封装工作。为了实现该功能,物理层需要定义 硬件设备标准,如电缆类型、接口类型、电压标准等。

数据链路层

数据链路层的传输单位是 ,两台主机之间的数据传输总是在一段一段的链路上传送的,这就需要使用专门的链路层协议。

数据链路层将网络层交来的 IP 分组封装成帧,并且可靠地传输到相邻结点的网络层。主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造为尽可能可靠的 数据链路。数据链路层的功能可以概括为:物理寻址组帧差错控制、点对点流量控制、数据重发和传输管理等。

网络层

网络层(Netweork Layer)的传输单位是 数据报,它关心的是通信子网的运行控制,主要任务是把网络层的 协议数据单元(分组)从源端传到目的端,为分组交换网上的不同主机提供通信服务。关键问题是对分组进行 路由选择,并实现整个网络的流量控制。

传输层

传输层(Transport Layer)的传输单位是报文段或用户数据报,传输层负责主机中两个进程之间的通信,功能是为 端到端 连接提供可靠的传输服务,为 端到端 连接提供流量控制(端到端)、差错控制、服务质量、数据传输管理等服务。

数据链路层提供的是 点到点 的通信,传输层提供的是 端到端 的通信,两者不同。点到点 可以理解为主机到主机之间的通信;端到端的通信是指运行在 不同主机内的两个进程之间的通信,只有传输层及以上各层的通信才能称为端到端。

会话层

会话层(Session Layer)允许不同主机上的各个进程之间进行会话。这 会话 这种服务主要为用户进程建立连接,并在连接上有序地传输数据,这就是 会话。

会话层负责管理主机间的会话进程,包括建立、管理及终止进程间的 检查点 机制来维持可靠会话,使通信会话在通信失效时从检查点继续恢复通信,即断点下载的原理。

表示层

表示层 主要处理在两个通信系统中交换信息的表示方式。不同机器采用的 编码 和表示方法不同,使用的数据结构也不同。为了使不同表示方法的数据和信息之间能互相交换,表示层采用抽象的标准方法定义数据结构,并采用标准的 编码 形式。此外,数据压缩、加密和解密 也是表示层的功能。

应用层

应用层是 OSI 参考模型的最高层,是用户与网络的接口。应用层为特定类型的网络应用提供访问 OSI 参考模型环境的手段。因为用户的实际应用多种多样,这就要求 应用层 采用不同的应用 协议 来解决不同类型的应用要求,因此 应用层 是最复杂的一层,使用的 协议 也最多

TCP/IP 模型

TCP/IP 模型 从低到高依次为【网络接口层(对应 OSI 参考模型 中的物理层和数据链路层)、网际层传输层应用层(对应 OSI 参考模型 中的会话层、表示层和应用层)】。TCP/IP 由于得到广泛应用而成为事实上的国际标准。TCP/IP 模型 的层次结构如下图所示:

网络接口层
网络层
传输层
应用层
网络接口层
网络层
主机 A
路由器
网络接口层
网络层
传输层
应用层
主机 B
网络 1
网络 2

TCP/IP 模型OSI 模型 的不同点在于 网络接口层应用层,可以理解为 TCP/IP 模型 中这两层涵盖了 OSI 协议 中多层的功能:

物理层
数据链路层
网络层
传输层
会话层
表示层
应用层
OSI 的体系结构
物理层
网际层 IP
传输层 (TCP 或 UDP)
应用层

(各种应用层协议
比如 TELNET, FTP,
SMTP 等)
TCP/IP 体系结构
物理层
数据链路层
网络层
传输层
应用层

(各种应用层协议
比如 TELNET, FTP,
SMTP 等)
五层协议的体系结构

学习计算机网络时,我们往往采取折中的办法,即综合 OSI 参考模型TCP/IP 模型 的优点,采用一种如下图所示的只有 5 层协议 的体系结构,即我们所熟知的【物理层、数据链路层、网络层、传输层和应用层】。

协议数据单元

在网络中,协议数据单元PDU,Protocol Data Unit)是指在某一层协议中传输的数据单元。每一层在接收来自上一层的数据时,都会在其头部添加控制信息(称为首部 Header),然后将其当作一个新的 PDU 交给下一层处理。这就是所谓的 封装 过程。

1
2
3
4
5
AP
10100 ..... 比特流 ..... 110100
数据
H2
H3
数据
H4
数据
H5
数据
数据
电信号和光信号
物理传输媒体
1
1
电信号和光信号
物理传输媒体
10100 ..... 比特流 ..... 110100
数据
H2
H3
数据
H4
数据
H5
数据
数据
1
2
3
4
5
AP
2
1
主机1
主机2
OSI 层级PDU 名称
7 应用层Data(数据)
6 表示层Data(数据)
5 会话层Data(数据)
4 传输层UDP Datagram(UDP 数据报)
TCP Segment(TCP 数据段、TCP 分段)
3 网络层IP Packet(IP 分组,IP 数据包,IP 报文)
2 数据链路层帧(Frame)
1 物理层比特(Bit)
注意

对于上表,首要的是掌握英文的名词表述,相比中文,这些表述更加统一和精准,中文翻译良莠不齐,常常有多种表述方式,但是表述的都是一个概念,能见词闻义即可。

1.2 - 网络设备总结

中优先级
需要掌握不同层次网络设备的功能,哪些能够隔离冲突域,哪些能够隔离广播域,在解答题中常间接考察该知识。

冲突域

冲突域 是指在以太网中,当两个设备同时发送数据时,可能发生冲突的一组网络设备所组成的区域。在这个区域内,如果两个或多个设备同时发送帧,由于 共享介质 ,就会产生数据冲突,导致通信失败,需要重新发送。

📌 冲突发生的根本原因:

以太网(尤其是早期使用 共享总线集线器 的方式)采用了 CSMA/CD 协议(载波监听多路访问/冲突检测) 协议:

  1. 每个设备发送前先监听是否有信号;
  2. 如果发现没人发,就开始发;
  3. 如果两个设备几乎同时监听到空闲并发送,就会发生 冲突

冲突域的边界由 二层设备(如集线器和交换机) 决定:

  • 集线器(Hub):所有端口共享同一个冲突域。连接在集线器上的设备同时发送数据会发生碰撞,因此无法隔离冲突域。
  • 交换机(Switch):每个端口形成独立冲突域,设备之间的发送不会互相干扰,从而有效隔离冲突。
CollisionDomaincluster_hub集线器 (Hub)cluster_switch交换机 (Switch)H1电脑 AHub集线器H1->HubH2电脑 BH2->HubH3电脑 CH3->HubHub->H1Hub->H2Hub->H3S1电脑 DSW交换机S1->SWS2电脑 ES2->SWS3电脑 FS3->SWSW->S1SW->S2SW->S3hub_note所有设备共享同一冲突域hub_note->Hubswitch_note每个端口独立冲突域switch_note->SW

广播域

广播域 指通过广播方式发送的数据包能够到达的所有主机组成的网络范围。通常,我们讨论的是 IP 层的广播域(ARP 广播也属于此类)。

在同一个 IP 广播域内,设备可以相互接收广播消息。举例来说:如果电脑 A 发送一个广播报文(例如 192.168.1.255),同一广播域内的电脑 B 和电脑 C 都能够接收到该消息。

广播域的边界由 三层设备(如路由器) 决定:

  • 交换机(Switch):仅在二层转发帧,不会阻止广播,广播帧会发送到除来源端口以外的所有端口。
  • 路由器(Router):在三层划分网络,会阻止广播,因此每个路由器接口形成一个独立的广播域。
BroadcastDomaincluster_A广播域 1cluster_B广播域 2cluster_C广播域 3A电脑 ASW1交换机A->SW1B电脑 BB->SW1C电脑 CC->SW1SW1->ASW1->BSW1->CR路由器SW1->R接口 1D电脑 DSW2交换机D->SW2E电脑 EE->SW2SW2->DSW2->ESW2->R接口 2F电脑 FSW3交换机F->SW3G电脑 GG->SW3SW3->FSW3->GSW3->R接口 3

设备功能

下表给出了不同设备的层次以及是否能够隔离冲突域和广播域:

设备功能描述设备位于哪一层隔离 冲突域隔离 广播域
中继器放大或再生数字信号物理层
集线器多个设备的连接,广播所有传入的数据物理层
网桥连接并分隔局域网的段落,减少冲突数据链路层
交换机连接多个设备,仅向目标设备转发数据数据链路层
路由器连接不同的网络并路由数据网络层

1.3 - 各层协议总结

💡 低优先级
这节还是作为计算机网络各层协议的一个概览,具体协议细节还是到相应章节去看。在本节中关注以下几点:1. 应用层协议的端口和下层传输层协议是什么。2. 每一层具体有哪些协议。

网络协议要素

网络协议规定了通信双方交互的规则,主要包括以下三要素:

  • 语法 :定义信息的格式和结构(如报文结构、编码方式等)
  • 语义 :规定控制信息的含义和需要完成的操作
  • 时序 :定义事件的发生顺序和通信双方的协同工作方式(如请求与响应的先后顺序)

DetailedVerticalProtocolStackARPARP地址解析PPPPPP点对点传输HDLCHDLC同步链路控制IPIP无连接、不可靠IP->ARPIP->PPPIP->HDLCICMPICMP网络诊断ICMP->IPNATNAT地址转换NAT->IPRIPRIP路由选择UDPUDP无连接、不可靠RIP->UDPOSPFOSPF路由选择OSPF->IPBGPBGP路由选择TCPTCP面向连接、可靠BGP->TCPTCP->IPUDP->IPHTTPHTTP/HTTPS80/443, TCPHTTP->TCPFTPFTP20/21, TCPFTP->TCPSMTPSMTP25, TCPSMTP->TCPPOP3POP3110/995, TCPPOP3->TCPDNSDNS53, UDP/TCPDNS->TCPDNS->UDPDHCPDHCP67/68, UDPDHCP->UDP

应用层协议

应用层协议直接面向用户,为应用程序之间的通信提供服务:

协议端口号依赖协议简要说明
HTTP/HTTPS80 / 443TCP超文本传输协议,用于网页浏览。HTTPS 是加密版本,基于 TLS/SSL。
FTP20 / 21TCP文件传输协议,用于文件上传与下载。20 为数据通道,21 为控制通道。
SMTP25TCP简单邮件传输协议,用于邮件的发送。
POP3110 / 995TCP邮局协议,用于从邮件服务器接收邮件。995 是加密版本(POP3S)。
DNS53UDP(部分 TCP域名系统,将域名解析为 IP 地址。较大响应或区域传输时使用 TCP
DHCP67(服务器)/ 68(客户端)UDP动态主机配置协议,用于自动分配 IP 地址及其他网络参数。

传输层协议

传输层为应用进程间提供可靠或不可靠的数据传输服务:

  • TCP (Transmission Control Protocol) :面向连接,提供可靠的字节流服务,适用于要求高可靠性的应用(如 HTTPFTP)。
  • UDP (User Datagram Protocol) :无连接,不保证可靠性,但开销小、速度快,适用于实时性要求高的场景(如 DNS、视频流)。

网络层协议

网络层负责实现数据包从源主机到目标主机的传输:

  • IP (Internet Protocol) :不可靠的无连接协议,提供数据报服务,是整个互联网的核心协议。
  • ICMP (Internet Control Message Protocol) :用于发送错误报告与网络诊断信息(如 ping 命令使用的就是 ICMP 回显请求)。
  • RIP / OSPF / BGP :路由选择协议,主要用于自治系统内部(RIP、OSPF)或之间(BGP)的路由计算
  • NAT (Network Address ):网络地址转换,在私网和公网之间转换 IP 地址

数据链路层协议

数据链路层负责将网络层传来的数据组装成帧,在链路上传输并进行差错控制:

  • ARP (Address Resolution Protocol) :地址解析协议,用于将 IP 地址解析为对应的 MAC 地址。
  • PPP (Point-to-Point Protocol) :点对点协议,用于点对点链路的数据传输,常用于拨号上网。
  • HDLC (High-Level Data Link Control) :高级数据链路控制协议,用于同步链路的帧传输,支持面向比特流的通信。

2 - 物理层

在选择题中考察,掌握相关概念即可。

学习思维导图:

# 物理层

## 通信基础

- 信道、信号、带宽、码元、波特、速率、信源与信宿等基本概念
- 奈奎斯特定理和香农定理
- 编码和调制
- 电路交换、报文交换与分组交换
- 数据报和虚电路

## 传输介质

- 双绞线、同轴电缆、光纤与无线传输介质
- 物理层接口的特性

## 物理层设备

- 中继器
- 集线器

2.1 - 通信概念

🔥 高优先级
真题练习
本节的几个知识点选择题常考:奈奎斯特定理、香农定理、通信指标和接口特性,需要掌握计算方法。

接口特性

物理层接口特性机械特性RJ45USB光纤• 接口形状和规范• 引脚数量和排列• 电缆类型选择外部物理形态定义功能特性TxRxGNDRTSCTSVCC发送接收• 数据发送引脚 (Tx)• 数据接收引脚 (Rx)• 控制信号引脚各引脚功能定义过程特性时间START数据位STOP时钟同步• 传输起始与终止• 信号同步机制• 比特间隔定义数据传输过程控制电气特性+5V0V电压波形100Mbps• 电压幅值范围• 电流大小限制• 传输速率和距离信号电气属性规范

物理层定义了设备之间如何通过电缆、无线等物理媒介进行通信。物理层具有以下四种 接口特性

  • 机械特性:描述物理连接设备的 外部物理形态和接口规范,主要包括:
    • 接口的形状(如RJ45、USB等)
    • 接口的引脚数量和排列顺序
    • 电缆的类型(双绞线、光纤、同轴电缆等)
  • 功能特性:说明各个 接口引脚具体的功能,例如:
    • 哪个引脚负责发送数据(Tx)
    • 哪个引脚负责接收数据(Rx)
    • 哪些引脚用于控制信号,如握手(RTS/CTS)
  • 过程特性:定义了在数据传输过程中,各种物理信号是 如何协作完成数据通信的过程,例如:
    • 传输起始与终止的方式
    • 信号同步的机制
    • 比特之间如何区分(串行或并行)
  • 电气特性:规定了物理层信号的 电气属性,包括:
    • 电压的幅值(高电平/低电平)
    • 电流大小
    • 信号的传输速率和传输距离
    • 信号的上升沿、下降沿

通信指标

信道

信道 相关的概念有四个,需要能够辨别这几个名词:

  • 信道 (Channel):是指进行信息传输的媒介或路径。这可能是一个物理的媒介,例如电缆,或者是无线的,如无线电波。
  • 信号 (Signal):是载有信息的物理现象。例如,电信号、光信号或无线电波。
  • 信源 (Source):产生或发送信息的设备或实体。
  • 信宿 (Sink or Destination):是指接收信息的设备或实体。
graph LR
    subgraph "信息传输过程"
        信源 -- 发送信号 --> 信道
        信道 -- 传输信号 --> 信宿
    end

    style 信源 fill:#f9f,stroke:#333,stroke-width:2px
    style 信道 fill:#bbf,stroke:#333,stroke-width:2px
    style 信宿 fill:#f9f,stroke:#333,stroke-width:2px

    信源(信源<br>发送信息的设备)
    信宿(信宿<br>接收信息的设备)
    信道(信道<br>信息传输的媒介)
    信号(信号<br>载有信息的物理现象)

    subgraph "概念解释"
        信源 -- "产生" --> 信号
        信号 -- "通过" --> 信道
        信道 -- "传输" --> 信号
        信号 -- "被接收" --> 信宿
    end

码元

一个 码元(symbol)就是一个脉冲信号,一个脉冲信号有可能携带 1bit 数据,也有可能携带 2bit 数据、4bit 数据。

那么怎么实现一个脉冲信号就能携带多个 bit 数据呢?我们可以通过 调制技术 来实现,比如设置模拟信号中信号的频率、相位、振幅 等。

举个例子:把 振幅 分成四种,低(00)、中(01)、高(10)、很高(11),这样我发一个脉冲信号,它的振幅是低,那就说明发送的是 00(也就是 2bit),它的振幅是中(01),发送的就是 01(也就是 2bit)… 以此类推

graph LR
    A["脉冲信号(码元)"] --> B["振幅 = 低"] --> C["比特 00"]
    A --> D["振幅 = 中"] --> E["比特 01"]
    A --> F["振幅 = 高"] --> G["比特 10"]
    A --> H["振幅 = 很高"] --> I["比特 11"]

    style A fill:#f9f,stroke:#333,stroke-width:2px
    style C,E,G,I fill:#bbf,stroke:#333,stroke-width:2px

波特

波特(Baud)是数据通信中的一个术语,用来表示符号(或码元)传输速率。具体来说,波特率(Baud rate)指的是每秒钟传输的码元(symbol)的数量。

码元和 波特率:一个码元可以携带一个或多个比特的信息。波特率是指每秒钟传输多少个这样的码元。例如,如果 波特率 为 1000 波特,这意味着每秒可以传输 1000 个码元。

波特率比特率波特率比特率的关系取决于每个码元携带的比特数。

  • 一个码元能携带 1bit 数据,那么 比特率 = 波特率
  • 一个码元能携带 2bit 数据,那么 比特率 = 2 倍的 波特率
  • 一个码元能携带 4bit 数据,那么 比特率 = 4 倍的 波特率
0
1
1
0
1
0
1
1
1
1
0
1
0
1
0
0
1
S
S
S
比特率 = 5s
波特率 = s

速率

速率(Rate)是指连接到计算机网络上的节点在数字信道上传送数据的速率,也称数据传输速率、数据率或比特率,单位为 b/s(比特/秒)或 bit/s(有时也写为 bps )。

当数据率较高时,可用 kb/s(k = )、Mb/s(M = )或 Gb/s(G = )表示。通常把最高数据传输速率称为 带宽

速率可以用两种指标来衡量:

  • 比特率:每秒传输的比特数量
  • 波特率:每秒传输的波特数量

一个码元可以包含多个比特,如果一个码元携带 比特的信息量,则 波特率 M 对应的 比特率 bit/s

带宽

带宽(Bandwidth)在通信领域中,指通信线路能够通过的信号频率范围,单位为赫兹(Hz)。 在计算机网络中,带宽通常被引申为通信线路的数据传输能力,即数字信道所能达到的 最大数据传输速率,其单位为比特每秒(b/s)。

例子:如果家里的宽带带宽是 100Mb/s,表示网络在理想情况下,每秒最多可以传输 100兆比特 的数据,相当于大约 12.5MB/s 的下载速度。

带宽吞吐量区别

在考题中偶尔涉及到带宽和吞吐量的区别:

  • 带宽:理论上的最大传输速率,就像是一条高速公路的最大车道数。
  • 吞吐量:实际传输速率,受到网络拥塞、协议开销、设备性能等因素影响,往往低于带宽。

举例:虽然网络带宽是 100Mb/s,但在高峰时段可能只能达到 70Mb/s,这 70Mb/s 就是实际的吞吐量。

时延

时延(Delay)指数据(一个报文或分组)从网络(或链路)的一端传送到另一端所需要的总时间,它由 4 个部分构成,分别为:发送时延、传播时延、处理时延和排队时延。

结点 A
结点 B
在这里产生传播时延
在这里产生发送时延(即传输时延)
发送器
链路
  1. 发送时延 :也称 传输时延。节点将分组的所有比特推向(传输)链路所需的时间,即从发送分组的第一个比特算起,到该分组的最后一个比特发送完毕所需的时间。

    • 发送时延 = 分组长度 (bit) / 发送速率 (bit/s)
  2. 传播时延 :电磁波在信道(传输介质)中传播一定的距离需要花费的时间,即一个比特从链路的一端传播到另一端所需的时间。

    • 传播时延 = 信道长度 (m) / 电磁波在信道上的传播速率 (m/s)
注意

需要区分 传输时延传播时延传输时延是路由器将分组推出所需的时间,是分组长度和链路传输速率的函数。传播时延是一个比特从一台路由器传播至另一台路由器所需的时间,是两台路由器之间距离的函数,而与分组长度或链路传输速率无关。

  1. 处理时延:数据在交换结点为存储转发而进行的一些必要的处理所花费的时间。例如,分析分组的首部、从分组中提取数据部分、进行差错检验或查找适当的路由等。

  2. 排队时延:分组在进入路由器后要先在输入队列中排队等待处理。路由器确定转发端口后,还要在输出队列中排队等待转发,这就产生了 排队时延

因此,数据在网络中经历的总时延就是以上 4 部分时延之和:总时延=发送时延+传播时延+处理时延+排队时延。


时延带宽积

时延带宽积(Bandwidth-Delay Product,简称 BDP)指发送端发送的第一个比特即将到达终点时,发送端已经发出了多少个比特,因此又称以比特为单位的链路长度,即

如下图所示,考虑一个代表链路的圆柱形管道,其长度表示链路的传播时延,横截面积表示链路带宽,则 时延带宽积 表示该管道可以容纳的比特数量。

传播时延
链路
链路带宽

奈奎斯特定理

奈奎斯特定理无噪声理想信道的极限传输速率C = 2W × log₂V信道容量 = 2×带宽 × 每码元比特数C信道容量最大传输速率(bps)W信道带宽频率范围(Hz)V离散电平数每码元状态数2W波特率每秒码元数(Baud)信号电平示例二进制 (V=2)log₂2 = 1 bit/码元0101四进制 (V=4)log₂4 = 2 bits/码元00011011八进制 (V=8)log₂8 = 3 bits/码元000111101110定理要点理想条件:无噪声干扰、带宽有限的低通信道避免码间串扰:相邻码元不互相干扰的最大传输速率带宽限制:即使无噪声,带宽仍限制传输能力优化策略:增加带宽(W)或提高调制电平数(V)可提升传输速率奈奎斯特定理为无噪声信道提供了理论极限,实际应用中还需考虑香农定理(有噪声情况)

奈奎斯特定理 说明了在 无噪声干扰、带宽有限 的理想低通信道中的数据极限传输速率。当实际传输速率小于等于该速率时,可以实现无码间串扰的数据传输。

奈奎斯特定理的 核心思想 是: 即使在没有噪声的理想信道中,信道的带宽仍然限制了其数据传输能力。为了避免相邻码元之间的干扰(即码间串扰),每秒钟最多只能传输有限数量的码元,这个数量与带宽直接相关。

奈奎斯特用一个公式精确地描述了信道的极限传输速率:

其中:

  • 是信道容量,单位是比特每秒 (bps),表示无噪声条件下的最大传输速率;
  • 是信道带宽,单位是赫兹 (Hz),表示信道允许通过的最高频率范围;
  • 是每个码元可采用的不同离散电平数量;
  • 表示每个码元可以携带的比特数(因为 \(V\) 种电平可以表示 \(\log_2 V\) 比特信息);
  • 表示每秒最多传输的码元数(波特率,baud/s)。

公式中的含义:

  1. 带宽 (\(W\)) 越大,单位时间内可传输的码元数越多;
  2. 每个码元的电平数 (\(V\)) 越多,所携带的信息量越大。

因此,在理想无噪声信道中,极限传输速率取决于带宽和码元的离散电平数

香农定理

香农定理C = B × log₂(1 + S/N)信道容量 = 带宽 × log₂(1 + 信噪比)参数说明:C - 信道容量 (bps)理论最大传输速率B - 带宽 (Hz)可用频率范围S/N - 信噪比信号功率 / 噪声功率发送端信号 S有噪信道带宽: B噪声 N接收端S + N核心思想:当传输速率 ≤ 信道容量 C 时,通过适当的编码技术可以实现几乎无差错的数据传输,即使存在噪声干扰!影响因素:带宽 B ↗信道容量 C ↗信噪比 S/N ↗信道容量 C ↗实际应用:WiFi、4G/5G、光纤通信等都基于此定理优化传输性能

香农定理 说明了在 有噪音干扰、带宽有限 的信道中的数据极限传输速率,当实际传输速率小于等于改速率时,可以做到不产生误差。

香农定理的 核心思想 是: 即使信道中存在噪声,只要信息传输速率低于某个极限值(即信道容量),就一定可以通过某种编码方式实现几乎无差错的传输。这个极限值取决于信道的带宽和 信噪比

香农用一个公式精确地描述了信道极限传输速率:

其中:

  • 是信道容量,单位是比特每秒 (bps),表示信道理论上的最大传输速率。
  • 是信道带宽,单位是赫兹 (Hz),表示信道可用的频率范围。
  • 是信号功率,表示信号的强度。
  • 是噪声功率,表示信道中噪声的强度。
  • 信噪比(Signal-to-Noise Ratio, SNR),通常以线性形式表示(不是分贝 dB)。

公式中的含义:

  1. 带宽 ( ) 越大,信道容量 ( ) 越大:这意味着更宽的信道可以传输更多的数据。
  2. 信噪比 ( ) 越大,信道容量 ( ) 越大:这意味着信号相对于噪声越强,传输速率就越高。
注意

信噪比线性比值分贝(dB) 两种形式

  1. 线性比值:
  1. 分贝形式(dB):

反过来,从分贝值换算为线性比值:

出现在香农公式 中的 线性比值,不是分贝!

2.2 - 编码和调制

中优先级
真题练习
常在选择题中考查编码类型和调制概念,需要熟悉几种编码方式的电平特征和调制的思想。

在计算机网络中,编码调制 是数据传输的两个关键过程,它们的目标都是为了让 数字信息(如二进制的 0 和 1)能够有效、准确地在 物理介质(如双绞线、光纤、无线电波等)上传输。

编码类型

编码(encoding)指的是把 数字信号(0 和 1)转换成适合在 传输介质 上传输的电信号或光信号。常见的编码方式有以下几种:

0
1
0
1
1
0
1
0
二进制数据
归零编码
非归零编码
反向非归零编码
曼彻斯特编码
差分曼彻斯特编码
编码方法1 的表示0 的表示
归零编码(RZ)在时钟周期内由高电平跳到低电平在时钟周期中保持低电平
非归零编码(NRZ)时钟周期内保持高电平时钟周期内保持低电平
反向不归零编码(NRZI)电平与上一个时钟周期保持一致电平相比上一个时钟周期发生跳变
曼彻斯特编码(Manchester Encoding)在时钟周期内由高电平跳到低电平在时钟周期中由低电平跳到高电平
差分曼彻斯特编码(Differential Manchester Encoding)电平变化与上一个时钟周期相反电平变化相比上一个时钟周期一致

可以通过通过以下口诀记忆以上编码方法:

提示
  • RZ:一高归零,零全程低
  • NRZ:一高零低
  • NRZI:零变一不变
  • 曼彻斯特:一高到低,零低到高
  • 差分曼彻斯特:一反零随
注意

差分曼彻斯特编码的第一个电平如何确定?

标准定义中,差分曼彻斯特的第一个半周期电平没有固定要求,可以为高或低,实际编码只依赖相邻比特间的“是否跳变”关系。

但在考试与教材中,为便于绘图与判定,一般会按照曼彻斯特编码的方向规则来确定第一个比特的波形: 例如,若题目给出的第一个比特是 1,则绘制为“高 → 低”;若是 0,则绘制为“低 → 高”。 在确定了初始半周期后,后续比特再严格遵循差分曼彻斯特的规则进行编码即可。

调制方法

调制方法 指的是把 编码后数字信号 转换为 模拟信号(如正弦波),以适应 物理信道(如无线电波)的传输。

0
0
1
1
0
0
0
0
1
1
1
1
1
1
0
0
0
0
基带信号
基带信号
2ASK
2ASK
2FSK
2FSK
2PSK
2PSK
Text is not SVG - cannot display

调制方法主要了解以下四种:

  1. ASK (幅度偏移键控 - Amplitude Shift Keying)
  2. FSK (频率偏移键控 - Frequency Shift Keying)
  3. PSK (相位偏移键控 - Phase Shift Keying)
  4. QAM (象限幅度调制 - Quadrature Amplitude Modulation)
调制技术基本思想表示方法例子常见应用
ASK通过改变载波的 幅度 表示数据0: 无信号;1: 最大幅度的信号光纤通信
FSK通过改变载波的 频率 表示数据0: 900 Hz;1: 901 Hz低速无线通信、电话系统
PSK通过改变载波的 相位 表示数据0: 0°相位;1: 180°相位高速无线通信,例如 Wi-Fi
QAM同时改变载波的 幅度和相位 表示数据16 种不同的幅度和相位组合数字电视、Wi-Fi、有线和无线通信系统

2.3 - 交换方式

中优先级
真题练习
历年真题选择题经常围绕三种交换方式的传输时间进行考查,当然也不排除未来在大题考查的可能性。这一节为理解性内容,需要理解基于比特流和存储转发方案的传输时间计算。

交换

交换方式 是指在通信网络中,数据从发送方传输到接收方时,网络节点(如交换机、路由器)处理和转发数据的方式。它决定了数据传输的路径、资源分配和效率。交换方式是通信网络设计的核心,直接影响网络的性能、时延和资源利用率。

电路交换报文交换分组交换 是三种主要方式,其中分组交换又可以进一步分为 数据报和虚电路 两种方式:

交换方法
电路交换
报文交换
分组交换
数据报
虚电路

电路交换

电路交换(Circuit Switching)是一种传统的通信方法,其中在发送方和接收方之间建立一个专用的通信路径(电路),该路径在整个通信过程中保持不变,其过程如下:

  1. 连接建立:发送方发起请求,通过交换设备(如电话交换机)在网络中为通信双方寻找并分配一条固定路径,建立端到端的专用电路。这需要信令系统协调。
  2. 数据传输:电路建立后,数据(语音、视频等)通过这条固定路径连续传输。整个通信期间,路径保持独占,即使没有数据传输,资源也不会释放。
  3. 连接释放:通信结束后,发送方或接收方发出终止信号,交换设备拆除电路,释放占用的资源(如带宽、端口)供其他用户使用。
CircuitSwitchingSender发送方发起连接请求Switch1交换设备 1建立专用路径端到端电路分配Sender->Switch1建立连接Receiver接收方接收数据通信结束后释放电路Sender->Receiver数据传输Switch2交换设备 2转发信号保持专用电路Switch1->Switch2建立连接Switch2->Receiver建立连接

电路交换的典型应用是 传统电话网络(PSTN)。其优缺点如下:

  • 优点:
    • 稳定性:一旦建立连接,通信是连续且稳定的。
    • 低延迟:由于路径是专用的,数据传输没有竞争,延迟较低。
  • 缺点:
    • 资源浪费:路径在整个通信过程中被独占,即使没有数据传输时,资源仍然占用。
    • 建立时延:建立连接需要时间,初始延迟较高。

报文交换

MessageSwitchingSender发送方产生完整报文NodeA节点 A[缓冲区]接收 → 存储 → 转发Sender->NodeA发送完整报文NodeB节点 B[缓冲区]接收 → 存储 → 转发NodeA->NodeB存储并转发Receiver接收方收到完整报文并处理NodeB->Receiver存储并转发

报文交换(Message Switching)不需要建立专用路径,整个报文作为一个单元传输,节点存储并转发整个报文。其过程如下:

  1. 报文发送:发送方将完整的数据消息(大小可变,可能包含文本、文件等)发送到网络中的第一个节点(通常是交换机或路由器)。
  2. 存储转发:每个节点接收整个报文,存储在缓冲区,检查目标地址后,选择下一跳节点转发。报文在网络中逐跳传输,直到到达接收方。
  3. 接收与处理:接收方收到完整报文后,进行处理或存储。

报文交换主要用于早期的电报和一些数据网络中。报文交换的优缺点如下:

  • 优点:
    • 灵活性:不需要建立专用线路,可以动态选择路径。
    • 适应性:适合于突发性的数据传输。
  • 缺点:
    • 高延迟:每个节点都需要存储和转发整个报文,增加了延迟。
    • 资源占用:大报文可能占用较多的存储资源。

分组交换

PacketSwitchingSender发送方将消息拆分为分组每个分组附带头部信息Node1节点 1接收分组快速存储并转发Sender->Node1分组 1Node2节点 2接收分组快速存储并转发Sender->Node2分组 2Node3节点 3接收分组快速存储并转发Sender->Node3分组 3Receiver接收方收到所有分组根据序列号重组消息Node1->Receiver分组 1Node2->Receiver分组 2Node3->Receiver分组 3

分组交换(Packet Switching)将数据分成小的分组(或数据包),每个分组独立传输,并可能通过不同路径到达目的地。其过程如下:

  1. 数据分割:发送方将消息拆分为多个分组,每个分组附带头部信息(如源地址、目标地址、序列号)。
  2. 分组传输:每个分组独立在网络中传输,节点(路由器)根据头部信息选择最佳路径,分组可能走不同路径到达目的地(动态路由)。
  3. 存储转发:每个节点接收分组,存储后快速转发到下一跳,分组大小小,处理速度快。
  4. 重组与接收:接收方收到所有分组后,根据序列号重新组装成原始消息。如果有分组丢失,可请求重传。

分组交换已经广泛应用于互联网,比如当前的 IP 协议就是分组交换的一种实现。

注意

报文(Message)和分组(Packet)的区别?

报文是一个完整的、不可再分的数据单元,通常包含一个完整的信息或者文件。

分组是将数据分割成较小的、固定大小的单位,每个单位可以独立传输。

如今互联网已经很少见到报文交换了,报文和分组是一种概念。IP 分组(Packet)就是分组的一种实现,如果没有网络层的话,UDP 的 Datagram 直接进入数据链路层,UDP 的 Datagram 就是一个报文(Message)。

分组交换是对报文交换的一种改进,它具备如下优点:

  • 高效性:网络资源按需分配,多个通信可以共享同一物理路径。
  • 鲁棒性:分组可以通过不同路径传输,网络故障时能自动选择替代路径。
  • 适应性强:适合于多种类型的数据传输(语音、视频、数据等)。

其缺点与报文交换类似,由于分组可能通过不同路径到达,可能导致抖动和延迟。

对比

  • 电路交换 通过建立专用物理电路实现连续数据传输,资源独占但效率低,适合实时通信如电话;
  • 报文交换 以整个消息为单位存储转发,无需预连接但时延高,适合低频大数据传输;
  • 分组交换 将数据拆分为小分组独立传输,资源共享且效率高,适合现代互联网,但需处理分组丢失或乱序问题。

下图包含三种交换方式传输的时空图,横向表示距离,纵向表示时间:

连接建立
A
B
C
D
数据传送
连接释放
电路交换
A
B
C
D
报文交换
A
B
C
D
分组交换
报文
报文
报文
报文
P
P
P
P
P
P
P
P
P
比特流直达终点
报文
报文
报文
分组
分组
分组
存储转发
存储转发

需要能够图中的那一部分是 传播时间,哪一部分是 传输时间,这一部分内容可以和 数据链路层信道利用率 对比学习。

传输时间计算

电路交换 的传输时间包含 连接建立 和 数据传输的时间:

  1. 建立时间:在进行数据传输之前,需要建立一个专用的电路连接,这个过程会产生一定的延迟。设立连接时间为

  2. 传输时间:一旦电路建立,数据传输时间主要取决于数据量和带宽。传输时间 可以用公式表示为:

  3. 总传输时间:总传输时间包括建立时间和传输时间:


报文交换分组交换 的场景更加复杂一些,我们需考虑多种时延 以及 不同链路之间的带宽差异。 但是两者的思路类似,不同点在于报文和分组的大小不同,这里以分组交换来进行说明。

下面举一个比较全面的例子来说明一下,网络中有 A、B、C、D 四个结点,其中链路的带宽分别为 。 在从结点 A 发送分组至结点 D 的过程中,总时间主要包含三种时延:传播时延、传输时间 和 排队时间。

首先,假设信号传播速度为 ,A 到 D 之间的距离为 ,则:

假设每个分组的大小为 ,则 A → B 的传输时间为 ,B → C 的传输时间为 ,C → D 的传输时间为 。由下图可知,不同链路间的分组传输存在流水线的 overlap 现象,A 向 B 发送完第一个分组后即可发送第二个分组。 在这种情况下,如果 A 向 D 传输 个分组的话,则总传输时间受限于带宽最低的链路,若 为链路最低的带宽的话,则:

上述公式是一种特殊的情况,如果 的话则

一般排队时间在试题中都不需要考虑,所以 总时间 为传输时间和传播时延之和:

数据报和虚电路

分组交换 中,根据分组的路由和连接方式,分组交换分为数据报(Datagram)和虚电路(Virutal Circiut)两种模式:

  • 数据报 :一种 无连接 的分组交换方式,每个分组(数据报)独立传输,包含完整的源地址和目标地址,网络根据每个分组的头部信息动态选择路由路径。
  • 虚电路 :一种 面向连接 的分组交换方式,在通信开始前建立一条逻辑路径(虚电路),所有分组沿此路径传输,模拟电路交换的稳定连接。
注意

电路交换和虚电路的区别

  • 电路交换:在通信开始前,为发送方和接收方建立一条 专用物理电路,整个通信期间独占该路径。数据通过固定路径连续传输,资源不共享。
  • 虚电路:在 分组交换 网络中,模拟电路交换 的行为,通过逻辑路径(虚电路)传输数据。虚电路并非物理独占,而是通过协议在分组交换网络中建立的逻辑连接。

下表对比了数据报和虚电路的特性:

特性数据报虚电路
连接性无连接,每个分组独立处理有连接,建立虚电路后传输分组
路由每个分组独立路由虚电路建立后,沿着相同路径路由
通信开销较低,不需要建立和维护连接较高,建立连接需要额外开销
分组到达顺序不保证分组到达的顺序保证分组按照发送顺序到达
分组丢失可能出现分组丢失,需要上层协议处理较低的丢包率,可靠传输
带宽利用率不需要预留带宽,按需使用预留带宽,可能造成资源浪费
适用场景Internet 中的 IP 数据包电路交换、ATM 等有连接通信
例子Internet 中的 IP 分组早期电话网络、ATM 网络

数据报和虚电路是两种不同的通信服务模型,适用于不同的通信需求和网络类型。数据报适合于互联网等不保证可靠传输的环境,而虚电路适合于对可靠性要求较高的电路交换和 ATM 等网络。选择合适的通信模型取决于应用需求和网络设计。

2.4 - 物理层设备

中优先级
了解物理层设备类型和功能,常和其他层次设备进行综合性考查。

集线器

定义:集线器(Hub)是一个 物理层设备,用于将多台计算机或其他网络设备连接在一起,从而形成一个单一的网络段。

工作方式:当一个设备通过集线器发送数据时,数据会被 广播到 集线器的所有其他端口。每个连接到集线器的设备都会收到这些数据,但只有目标设备才会处理它。集线器本身不会分析或查看传输的数据。

局限性: 由于集线器将数据广播到所有设备,所以它可能导致 网络拥塞。因此,在大型或流量较大的网络中,集线器已经被交换机所取代,交换机能够智能地将数据转发到目标设备。

中继器

定义:中继器是一个 物理层设备,用于 放大再生 数字 信号

工作方式:在以太网或其他类型的网络中,数据在电缆上只能传输一定的距离,超过这个距离,信号会减弱或退化。中继器放置在这种距离的两端,用于接收退化的信号,放大或再生它,然后将它传输到下一段电缆。

应用:中继器被用于 扩展网络 的物理范围,超出了单一段 电缆物理媒体 的限制。

网络适配器

定义:网络适配器 (Network Adapter),也称为网络接口卡(NIC)或简称 网卡,是一种硬件组件,用于 连接计算机到一个网络

工作方式:网络适配器为计算机提供了一个或多个网络连接端口,它将计算机的 数字数据 转换为可以在物理媒体(例如双绞线、光纤或无线电波)上传输的 信号。同样,当信号从网络到达网络适配器时,它会将这些信号转换回计算机可以理解的数字数据。

物理地址:每个网络适配器都有一个唯一的 物理地址,称为 MAC 地址。这个地址在生产时被烧录到设备中,用于在局域网内唯一地识别设备。

电缆

  • 双绞线 (Twisted Pair):双绞线由一对绝缘的铜线组成,两线之间呈螺旋形地绞在一起。
  • 光纤 (Fiber Optic):光纤是由极细的玻璃或塑料纤维制成的,用于传输光信号。
  • 同轴电缆 (Coaxial Cable):同轴电缆由一个中心铜导线、一个绝缘层、一个金属屏蔽和一个外部的塑料或橡胶覆盖层组成。

双绞线(twisted pair cable)的结构如上图所示,“双绞线”之所以叫“双绞线”,是因为它的结构真的就是两根 绝缘铜线 按照一定方式互相“绞”在一起。 这种“绞合”结构是为了 抗干扰,让数据传输更加 稳定可靠


光纤(fiber optic)的结构如上图所示,光纤利用光在里面的 反射 来传输数据。相比电信号,它的 抗干扰能力 更强、传输速度 更快、距离 也更远,非常适合 高速 的数据通信。


同轴电缆(coaxial cable)的结构如上图所示,它由 中心铜导体绝缘层金属屏蔽层外护套 组成。 其中,金属屏蔽层可以有效减少外界电磁干扰,同时也防止信号向外泄漏。

同轴电缆常用于有线电视、宽带接入和一些局域网连接,具有抗干扰能力强、传输稳定的特点。

3 - 数据链路层

在选择题中考察,个别年份也在大题中考察过,需熟练掌握介质访问控制的相关方法。

学习思维导图:

# 数据链路层

## 数据链路层的功能

## 组帧

## 差错控制

- 检错编码
- 纠错编码

## 流量控制和可靠传输机制

- 流量控制、可靠传输和滑动窗口
- 停等协议
- 回退N帧
- 选择性重传协议

## 介质访问控制

- 信道划分
- 随机访问:ALOHA, CSMA, CSMA/CD, CSMA/CA
- 轮询访问

## 局域网

- 基本概念和体系结构
- 以太网和IEEE 802.3
- 无限局域网和IEEE 802.11
- VLAN

## 广域网

- 基本概念
- PPP协议

## 数据链路层设备

- 以太网交换机和工作原理

数据链路层功能

  1. 封装数据帧(Frame Encapsulation):
    • 数据链路层将来自网络层的数据包封装成数据帧,这包括将源和目标地址添加到帧头部,以便在物理介质上的传输。
  2. 数据帧传输(Frame Transmission):
    • 数据链路层负责将数据帧从一个物理节点传输到另一个物理节点。这可能涉及到点对点的传输(例如,以太网)或多点广播传输(例如,Wi-Fi)。
  3. 物理地址寻址(Physical Addressing):
    • 数据链路层使用物理地址(通常是 MAC 地址)来标识设备。这些地址用于确定数据帧的目标设备。
  4. 帧同步和定界(Frame Synchronization and Framing):
    • 数据链路层确保接收端可以正确识别和分离不同的数据帧。这通常通过在帧的起始和结束位置使用特殊的比特模式来实现。
  5. 流量控制(Flow Control):
    • 数据链路层可以控制发送端的数据传输速率,以防止接收端不堪重负而丢失数据。这确保了适当的数据流量管理。
  6. 差错检测和纠正(Error Detection and Correction):
    • 数据链路层使用差错检测技术(如 CRC 校验)来检测帧在传输过程中是否受到损坏。一些数据链路层协议还可以进行错误纠正,尝试修复损坏的数据。

3.1 - 组帧

💡 低优先级
较少考查,了解下几种组帧方法的原理即可。

数据链路层的主要功能之一就是 组帧

帧(frame)代表数据链路层的数据发送单位,在接收到来自于网络层的报文(packet)时如何为其添加帧头和帧尾,并且以何种方式进行 帧定界(接收方区别连续不同的帧)。

组帧的关键就在于 帧定界,也就是对于接收方来说,它能够以某种方式区分连续收到的不同帧。
从这个角度出发,组帧 方式可以被分为以下几种:

字符计数法

字符计数法 是在帧的首部设置一个计数字段,用来指示该帧中包含的字符(或字节)数量。

当接收方开始读取一帧时,首先读取位于 帧首部的计数字段。通过该字段的数值,接收方即可知道该 帧的总长度(即后续应读取的字符数)。随后,接收方按照得到的长度继续读取剩余的数据,直至完整地接收完本帧。

5
6
7
8
9
8
0
1
2
3
4
5
6
5
4
5
6
7
5
1
2
3
4
字符计数法
Frame 1
5 Characters
Frame 2
5 Characters
Frame 3
8 Characters
Frame 4
5 Characters
字符数量

首位定界字符法

首位定界字符法即 使用特殊控制字符标志帧的开始和结束

但是使用这种方式可能出现如下问题:就是 首位定界字符 可能会在帧内部出现,这个时候就会造成歧义。

所以当特殊字符出现在帧的数据部分时,需要用 转义字符 ESC 来对特殊字符进行转义,同样,ESC 出现在数据部分同样需要转义。

Payload Field
Trailer
FLAG
FLAG
Header
A
FLAG
B
A
FLAG
B
ESC
A
ESC
B
A
ESC
B
ESC
A
ESC
B
FLAG
A
ESC
B
ESC
FLAG
ESC
首尾定界字符法
定界字符
帧的格式
定界字符
帧的原始数据
经过转义之后的数据

以上图为例,假设我们使用 FLAG 作为 首位定界字符 的话(注意这里 FLAG 只是字符名称,不是表示字符是 FLAG),那么当 FLAG 出现在数据部分时,我们需要对 FLAG 进行转义,需要注意的是,因为我们使用 ESC 作为转义字符,所以当数据中出现 ESC 时,我们也需要对转义字符自己进行转义。

零比特填充法

零比特填充法(Bit Stuffing)与首位定界字符法思路类似。

01111110 作为一个新的数据帧的开头,这里的关键在于要对数据帧内容中与 01111110 相同的部分进行转义,转义的方式如下:

  • 发送方
    • 每当数据中出现 连续 5 个 '1' 时,
    • 就自动插入一个 '0',避免形成 6 个连续的 '1'(即避免形成 01111110)。
  • 接收方
    • 每当检测到 连续 5 个 '1' 后跟着一个 '0',就去掉这个 '0',还原原始数据。
    • 在传送的比特流中可以传送任意比特组合,而不会引起对帧边界的判断错误。零比特填充法 很容易由硬件来实现,性能优于字符填充法

对于 零比特填充法,需要记住 01111110 这种开头的比特填充方式以及具体如何进行转义。

Frame
0111 1110
Frame
0111 1110
0111101111110001
01111011111010001
零比特填充法
Frame 1
Frame 2
帧的原始数据
转义后数据
发送方在连续5个1之后填充一个0
接收方进行反向处理,得到原始数据

违规编码法

违规编码法(Physcial Layer Coding Violations)使用特殊电平进行定界。比如,曼彻斯特编码 将数据比特“1”编码为“高 - 低”电平,将比特“0”编码为 “低-高” 电平对,而 “高-高” 电平对和 “低-低” 电平对是没有被使用的,所以可以用这两个电平进行帧定界。

违规编码法 - 曼彻斯特编码帧定界时钟数据位1010正常编码1: 高→低0: 低→高1: 高→低0: 低→高违规编码(帧定界)高-高(帧开始)低-低(帧结束)正常数据: 0 1 0 1违规编码法原理• 正常编码:- 数据"1": 高→低电平- 数据"0": 低→高电平• 违规编码(帧定界):- 高→高: 帧开始标记- 低→低: 帧结束标记利用未使用的电平组合进行帧定界,避免了额外开销

3.2 - 差错控制

💡 低优先级
真题练习
说实话本节细节极多但是考查频率很低,考的话一般是在选择题考一题,这一节的几个知识点说实话只能硬背了,大家可以根据自身精力决定要不要搏一搏这可能出现的两分。

分类

  • 检错编码:奇偶校验码、循环冗余码
  • 纠错编码:海明码

奇偶校验码

奇偶校验码(Parity Check Code)是一种 简单高效 的错误检测机制,广泛应用于数据传输和存储系统中,用于发现 单比特错误。其核心思想是通过添加一个 校验比特(parity bit),确保数据中“1”的总数符合特定的奇偶规则。

奇偶校验码有两种常见的类型:奇校验偶校验

  1. 奇校验(Odd Parity):
    • 校验比特的值使数据(包括校验比特)中“1”的总数为 奇数
    • 例如,若原始数据“1”的个数为 偶数,校验比特设为 1;若为 奇数,设为 0
    • 若接收端检测到“1”的总数为 偶数,则说明传输中存在错误。
  2. 偶校验(Even Parity):
    • 校验比特确保数据中“1”的总数为 偶数
    • 例如,若原始数据“1”的个数为 奇数,校验比特设为 1;若为 偶数,设为 0
    • 若接收端检测到“1”的总数为 奇数,则表明数据出错。

奇偶校验码的 工作原理 如下:

  • 发送端:根据奇校验或偶校验规则,计算原始数据中 “1” 的个数,设置校验比特,并将数据连同校验比特一起发送。
  • 接收端:检查接收到的数据(包括校验比特)中 “1” 的总数是否符合预设的奇偶规则。若不符合,说明传输过程中可能发生了单比特错误。

奇偶校验的工作原理是发送端计算数据中所有比特的总数,并根据所选的奇偶性规则设置校验比特的值。接收端在接收数据后再次计算所有比特的总数,包括校验比特,然后检查总数是否满足所选的奇偶性规则。如果总数不符合规则,接收端将检测到错误。

循环冗余码

循环冗余校验(CRC, Cyclic Redundancy Check)是一种常用的数据完整性校验方法,广泛应用于数据传输和存储系统中,用于检测数据在传输过程中是否发生了错误。其核心思想是将数据视为一个二进制多项式,并使用特定的 生成多项式 对其进行 模 2 除法,最终所得的余数即为 CRC 校验值。

校验流程

CRC 的基本校验过程包括以下几个步骤:

  • 生成多项式
    CRC 的关键是一个预先定义好的 生成多项式,通常用二进制数表示。该多项式必须在发送端和接收端之间事先达成一致。

  • 计算校验码(发送端)
    发送端将待发送的数据帧看作一个二进制多项式,然后在数据末尾附加 k-1 个 0(其中 k 是生成多项式的位数),得到 扩展数据。将这组数据用 模 2 除法 除以生成多项式,得到的余数即为 CRC 校验码

  • 附加并发送
    将上述余数作为 CRC 校验码,附加在原始数据帧之后,组成完整的传输数据帧并发送。

  • 校验(接收端)
    接收端收到数据后,以相同方式使用 生成多项式 进行 模 2 除法。如果计算结果的余数为 ,则说明数据在传输过程中未发生错误;否则表示数据已损坏。

Data
Divisor
000....0
CRC
Sender
Data
CRC
Data
CRC
Divisor
Remainder
Receiver
n bits
n-1 bits
zero accept
non-zero reject

发送方

假设原始数据为:1010001101,选用的生成多项式为:110101,则对应多项式形式为:\(x^5 + x^4 + x^2 + 1\)。

发送方计算 CRC 校验码的操作流程如下:

  1. 扩展数据:生成多项式是 6 位,因此我们在数据尾部补上 6-1 = 5 个零,得到扩展数据:101000110100000
  2. 模 2 除法计算 CRC(使用异或操作)
              110101011
       ------------------
110101 | 101000110100000
         110101
         ------
          111011
          110101
          ------
            111010
            110101
            ------
              111110
              110101
              ------
                101100
                110101
                ------
                 110010
                 110101
                 ------
                   01110

最终余数为:01110,所以完整的数据帧为:1010001101 01110

接收方

继续以上述例子进行说明,接收方收到的数据为:101000110101110

同样使用生成多项式 110101 进行 模 2 除法

              110101011
       --------------------------------------
110101 | 101000110101110
         110101
         ------
          111011
          110101
          ------
            111010
            110101
            ------
              111110
              110101
              ------
                101111
                110101
                ------
                 110101
                 110101
                 ------
                      0

余数为 0,表示数据帧未被破坏,校验通过

注意

使用异或进行 CRC 计算

在 CRC 运算中,模 2 除法的“减法”实际上就是按位 异或 操作(XOR)。这是因为在二进制中,加法和减法在无进位的情况下是等价的。比如:

  • 1 ⊕ 1 = 0(相当于 1 - 1 或 1 + 1(不进位))
  • 0 ⊕ 0 = 0
  • 1 ⊕ 0 = 1
  • 0 ⊕ 1 = 1

因此,CRC 的除法过程实际上是不断地将当前被除数高位与 生成多项式 对齐后进行 异或 操作,然后向右滑动继续处理,直到处理完所有位。

海明码

海明码(Hamming Code)是一种用于 错误检测纠正 的编码方案,通常用于数据传输和存储系统中。它的主要目标是检测和纠正数据中的 单比特错误

海明码的核心思想是在 数据位 之间插入一定数量的 校验位(也称为奇偶校验位),使得每个校验位都负责检查一组特定的位。校验位的数量取决于数据位的数量,并且它们的位置通常是 2 的幂次(即第 1 位、第 2 位、第 4 位……)。

生成过程

以一个 实例 说明海明码的 生成和纠正 过程:

  • 步骤 1:确定校验位数量

假如我们的数据是 ,也就是 位。根据海明码的原则,我们需要确定足够的校验位 来满足以下条件:

对于 (数据位),我们找到最小的 3

注意

对于 位数据,应该有多少位校验位

假设我们有 位数据,我们需要添加 位校验位,那么校验位的总数必须满足以下条件:

所有数据位和校验位的总数加起来可以由校验位来表示。也就是说,每一位数据位和校验位在位模式中都有一个唯一的表示。这意味着 必须至少等于 ,其中加 是因为校验位模式全为零(即没有错误)的情况也必须被考虑在内,即

  • 步骤 2:放置校验位和数据位

首先将校验位( )插入到数据位中的适当位置。校验位下标是 2 的幂( )。

  • 位:校验位
  • 位:校验位
  • 位:校验位

然后再放置剩余的 数据位

  • 位:数据位
  • 位:数据位
  • 位:数据位
  • 位:数据位
位置7654321
海明码
数据110-1--
注意

注意到上述我们提到的关于校验位和数据位的第 位,下标是从 1 开始 而不是 0 开始的。

  • 步骤 3:计算校验位

首先给出位置下标的二进制表示:

位置7654321
二进制111110101100011010001
  • 检查位置 的位(最低位为 1) 。所以 ,所以
  • 检查位置 的位(次低位为 1)。这些位的异或值为 ,所以
  • 检查位置 的位(最高位为 1) 。这些位的异或值为 ,所以
  • 步骤 4:生成海明码
位置7654321
海明码
数据1100110

所以, 海明码是 0110011 。任何一位的单一错误都可以通过分析 校验位 来检测并纠正。

检测和纠错

还是以 上文的例子 来说明海明码检测和纠错的过程。

假设在传输过程中第二位出现了错误,接收的码变为

首先,接收者现在要 重新计算校验位

  • (位置 1):检查二进制最低位为 1 的位置(1, 3, 5, 7),即
    • 接收到的 ,所以 ,无错误
  • (位置 2):检查二进制第二位为 1 的位置(2, 3, 6, 7),即
    • 接收到的 ,所以 ,有错误
  • (位置 4):检查二进制第三位为 1 的位置(4, 5, 6, 7),即
    • 接收到的 ,所以 ,无错误

可以看到有错误发生,接下来需要 生成错误模式

错误模式为二进制 010,十进制值为 2,表示错误在位置 2(即 )。

最后一步是 纠正错误:位置 2 的值 从 0 翻转为 1,得到纠正后的码字:

位置7654321
海明码
修改前1100100
修改后1100110

现在,海明码回到了正确的 0110011 状态。

海明距离

海明距离是指两个等长的比特序列(也称为码字)在对应位置上不相同的比特个数。它是衡量两个码字之间差异程度的重要指标,广泛应用于 编码理论 中,用于分析 错误检测错误纠正 能力。

1
0
0
1
0
1
1
0
1
1
0
1
1
0
1
0
A
B
0
1
0
0
1
1
0
0
XOR Bit Operations

编码集

在通信或存储系统中,编码集是指用于表示信息的一组码字。每个码字通常是一个固定长度的比特串,通过引入冗余位,编码集可以在传输过程中检测或纠正一定数量的错误。

编码集的关键属性之一是其最小海明距离(记作 \(d\))——即任意两个不同码字之间海明距离的最小值。它直接决定了该编码集的 容错能力

  • 检错能力:最多可以检测 位错误。
  • 纠错能力:最多可以纠正 位错误。

最小海明距离越大,意味着码字之间越“分散”,在信道中被干扰后仍然能区分开来,因此检测和纠错能力更强。


举个实际例子,设有一个编码集,其中包含以下三个 4 位码字:

0000, 0110, 1011

我们计算这三组码字之间的海明距离:

  • 00000110 的海明距离为 2(第2、3位不同);
  • 00001011 的海明距离为 3
  • 01101011 的海明距离为 3

因此,该编码集的最小海明距离

根据公式,该编码集最多可以:

  • 检测 1 位错误 );
  • 不能纠错 )。

如果我们想要具备1 位纠错能力,最小海明距离至少要达到 3

海明码示例

海明码(Hamming Code) 是一种经典的线性分组码,其最小海明距离为 。这意味着:

  • 可以 检测最多 2 位错误
  • 可以 纠正 1 位错误

接收端在解码过程中,会计算出一个称为 伴随式(syndrome) 的比特序列,用于判断是否发生了错误,以及错误的位置:

  • 若伴随式为全零,说明数据未被破坏;
  • 若伴随式为非零,且对应某个位的错误模式,则可准确定位并纠正该位;
  • 若发生 2 位错误,伴随式可能不唯一,可检测但不可纠正,因为错误位置无法唯一确定。

3.3 - 流量控制

🔥 高优先级
真题练习

选择题和解答题都经常考查 ARQ 协议,三个重点不能忽略:1. 三种 ARQ 协议的 实现原理。 2. 窗口大小的限制。3. 信道利用率 的计算方法。

这一节都是理解性内容,需要理清背后的原理。

ARQ 协议

ARQ 协议是一类 可靠数据传输协议,用于在 不可靠的信道(比如可能出错或丢包的网络链路)上实现 可靠通信

ARQ 协议的 核心思想 是:

  • 发送方在发送数据后,必须等待接收方的确认(ACK)。
  • 如果在规定时间内没有收到确认,就认为数据丢失或出错,需要重传。

ARQ 协议主要包括三种形式:停等(Stop‑and‑Wait)、回退 N 帧(Go‑Back‑N)以及 选择性重传(Selective Repeat)。其中,回退 N 帧和选择性重传统称为 连续 ARQ 协议

ARQ 协议 (Automatic Repeat reQuest)可靠数据传输协议核心思想:• 发送方发送数据后,必须等待接收方的确认(ACK)• 超时未收到确认,认为数据丢失或出错,进行重传• 在不可靠信道上实现可靠通信三种主要ARQ协议停等ARQ(Stop-and-Wait)发送方接收方数据1ACK1数据2特点:发送一帧等待确认效率低,适合简单场景回退N帧ARQ(Go-Back-N)发送方接收方1,2,34丢失ACK3重传4,5,6...特点:连续发送,出错回退效率中等,实现相对简单选择性重传ARQ(Selective Repeat)发送方接收方1,23丢失4ACK1,2,4只重传3特点:只重传出错帧效率最高,实现最复杂连续ARQ协议
注意

ARQ 在哪一层使用

考研模型里默认:

  • 链路层:可能用 ARQ(作为差错控制手段之一),适用于误码率较高的链路
    • 以太网不使用
    • 无线链路、卫星通信会用
  • 传输层:一定用 ARQ(TCP)

但要记住一句本质话:

ARQ 不是某一层专属,而是一种“机制”,可以出现在不同层。

如果 TCP 是保证可靠传输,那么链路层为什么还需要使用 ARQ?

如果链路层不大可靠的话,链路层 ARQ 可以在底层迅速修补了大多数偶发的比特错误,让上面的 TCP 以为链路几乎从不丢包,从而避免了频繁进入“拥塞控制”状态,大幅提升了吞吐量。

停等协议

停等(Stop‑and‑Wait)是一种最基本的 自动重传请求(ARQ)协议。其核心思想是:发送方在发送完每一个数据帧后立即停止发送,并 等待 接收方的 确认(ACK)。只有在收到确认后,发送方才会继续发送下一个帧。由于任意时刻网络中只会有一个帧在传输,所以该协议也被称为“停等”。

sequenceDiagram
    participant S as 发送方(Sender)
    participant R as 接收方(Receiver)

    S->>R: 发送数据帧 Frame[0]
    Note over S: 启动计时器

    R--xS: ACK[0] 丢失
    Note over S: 计时器超时,未收到 ACK

    S->>R: 重传数据帧 Frame[0]
    Note over S: 重新启动计时器

    R-->>S: 发送确认帧 ACK[0]
    Note over S: 收到 ACK[0],停止计时器

    S->>R: 发送数据帧 Frame[1]
    Note over S: 启动计时器

    R-->>S: 发送确认帧 ACK[1]
    Note over S: 收到 ACK[1],停止计时器

停等协议的 工作过程 如下:

  1. 发送数据
    • 发送方将一个数据帧发送给接收方。
    • 同时启动 计时器,用于监控该帧的确认是否在规定时间内到达。
  2. 等待确认
    • 在计时器超时之前,发送方保持在“等待”状态。
    • 此期间若收到 确认帧(ACK),则说明该帧已成功到达并被正确接收。
  3. 确认的接收
    • 接收方收到数据帧后,首先检验其完整性(如校验和、序号等)。
    • 若数据帧无误,接收方立即发送 确认帧(ACK)回给发送方;若检测到错误,则不发送 ACK,导致发送方超时后重传。
  4. 计时器到期
    • 若计时器在收到确认之前到期,发送方认为该帧或其确认已丢失。
    • 发送方随后 重新发送 同一数据帧,并重新启动计时器,重复上述过程直至收到有效的确认。
StopAndWaitcluster_sender发送方cluster_receiver接收方start开始send_frame发送数据帧启动计时器start->send_framewait_ack等待确认(等待状态)send_frame->wait_ackrecv_check接收方检验数据帧完整性send_frame->recv_check数据帧传输timeout_check计时器超时?wait_ack->timeout_check等待超时recv_ack收到确认帧(ACK)wait_ack->recv_ack收到ACKsend_ack发送确认帧(ACK)recv_check->send_ack数据正确no_ack不发送ACK(检测到错误)recv_check->no_ack数据错误send_ack->recv_ackACK传输no_ack->timeout_check无ACKtimeout_check->recv_ack(收到ACK)retransmit重新发送同一数据帧重启计时器timeout_check->retransmit(超时)success传输成功准备下一帧recv_ack->successretransmit->wait_ack重新等待success->start下一帧

通过上述四个步骤,停等协议实现了可靠的点对点数据传输,尽管其效率受限于 “每次只能发送一个帧” 的特性。

回退 N 帧

回退 N 帧(GBN,Go‑Back‑N)协议中,发送窗口 指的是发送方在未收到确认的情况下,最多可以连续发送的数据帧数量。它像一个滑动窗口,控制着数据的发送节奏。

发送方可以在等待确认的过程中,连续发送多个帧,但总数不能超出发送窗口的大小。当窗口被填满时,发送方必须停下来等待确认,收到确认后窗口才能向后滑动,从而腾出空间发送新的帧。

补充

回退 N 帧的语义如何理解?

当发送方检测到某个数据帧超时(或收到重复的 ACK / NAK)时,它不会只重传那一帧,而是“回退”到该丢失帧的序号,并重新发送从该序号开始的所有后续帧 —— 即使这些帧之前已经发送过。

sequenceDiagram
    participant S as 发送方 (Sender)
    participant R as 接收方 (Receiver)

    Note over S,R: 窗口大小 W = 4,序号空间 0-3

    S->>R: Frame[0]
    R->>S: ACK0 (确认帧0)
    
    S->>R: Frame[1] (丢失)
    S->>R: Frame[2]
    R->>S: ACK0 (仍期望帧1,丢弃帧2)
    
    S->>R: Frame[3]
    R->>S: ACK0 (丢弃帧3,仍期望帧1)

    Note over S: 定时器超时,回退到Frame[1]

    S->>R: Frame[1] (重传)
    R->>S: ACK1 (确认帧1)
    
    S->>R: Frame[2] (重传)
    R->>S: ACK2 (确认帧2)
    
    S->>R: Frame[3] (重传)
    R->>S: ACK3 (确认帧3)

    Note over S,R: 全部确认完毕,窗口前移

回退 N 帧的 核心要点 如下:

  1. 窗口大小
    • 若帧序号使用 位二进制,则序号空间大小为
    • 为保证不产生歧义,GBN 的发送窗口大小 必须满足 ,因此 最大窗口大小
    • 接收窗口的大小固定为 1,即接收方只能一次接受并确认期望的序号。
  2. 发送过程
    • 只要发送窗口未满,发送方就可以把窗口内的帧依次发送出去。
    • 对于 最早发送且尚未被确认的帧(即窗口中的第一个未确认帧),发送方启动 单一的超时计时器
    • 其余已发送但尚未确认的帧不再单独维护计时器,而是共享这一个计时器。
  3. 接收过程
    • 接收方维护一个 期望序号(expected sequence number)。
    • 当收到的帧序号等于期望序号时,接收方接受该帧并发送 累计确认 ACK(确认该帧及其之前的所有帧)。随后期望序号加 1。
    • 若收到的帧序号不是期望序号(说明前面的某帧丢失),接收方直接 丢弃该帧,并 重新发送最近一次正确接收的帧的 ACK。由于接收窗口为 1,后续已到达但序号不连续的帧都会被丢弃。
  4. 超时与重传
    • 超时计时器 触发时,发送方认为窗口中最早的未确认帧已丢失。按照 GBN 的工作原理,发送方会 从该帧开始,把窗口内的所有帧全部 重新发送
    • 这样做的原因是:即使后面的帧已经到达接收方,由于接收窗口仅能接受连续的序号,这些帧会在接收方被丢弃,只有最早丢失的帧被重新发送后,后续帧才能被顺利接收。
GBN_Protocolcluster_sender发送方 (Sender)cluster_send_window发送窗口 (W ≤ 2^n - 1)cluster_receiver接收方 (Receiver)cluster_seq_space序号空间 (n位二进制)frame0帧0(已发送)channel传输信道frame0->channel发送帧0frame1帧1(已发送)frame1->channel发送帧1frame2帧2(已发送)frame2->channel发送帧2frame3帧3(可发送)frame4帧4(可发送)timer单一超时计时器(针对帧0)timeout_action超时触发:从最早未确认帧开始重传窗口内所有帧timer->timeout_action超时触发send_action发送动作:• 依次发送窗口内帧• 为最早未确认帧启动计时器channel->frame0ACK确认recv_window接收窗口 = 1期望序号: 0channel->recv_window接收帧recv_window->channel发送ACK(累计确认)sliding_action收到累计ACK:窗口向前滑动释放已确认帧位置recv_window->sliding_action正确接收recv_action接收动作:• 序号 = 期望序号 → 接受+ACK• 序号 ≠ 期望序号 → 丢弃+重发ACKseq_space序号范围: 0 到 2^n - 1最大窗口: W ≤ 2^n - 1seq_space->frame0序号约束timeout_action->frame0重传所有未确认帧sliding_action->frame0窗口滑动featuresGBN关键特性:1. 发送窗口: W ≤ 2^n - 12. 接收窗口: 固定为13. 累计确认机制4. 超时重传所有未确认帧5. 序号不连续则丢弃

通过 GBN、SR 交互演示 可以直观地了解 Go‑Back‑N 与 Selective Repeat 的工作流程,加深对上述概念的理解。

选择性重传

选择性重传(SR,Selective Repeat)是一种 自动重传请求ARQ)协议,专门用于克服回退 N 帧(Go‑Back‑N)在高误码率环境下的效率低下。与 Go‑Back‑N 不同,SR 只 重传 那些真正丢失或出错的帧,而不必重新发送随后所有的帧,从而在误码率较高的链路上表现得更为高效。

sequenceDiagram
    participant S as 发送方 (Sender)
    participant R as 接收方 (Receiver)

    Note over S,R: 窗口大小 W = 4,序号空间 0-7

    S->>R: Frame[0]
    R->>S: ACK0 (确认帧0,交付上层)

    S->>R: Frame[1] (丢失)
    S->>R: Frame[2]
    R->>S: ACK2 (缓存帧2,等待帧1)

    S->>R: Frame[3]
    R->>S: ACK3 (缓存帧3,等待帧1)

    Note over R: 已缓存 {2,3},但因缺少1不能交付

    Note over S: 定时器1超时,仅重传帧1

    S->>R: Frame[1] (重传)
    R->>S: ACK1 (确认帧1,立即交付 {1,2,3})

    Note over R: 交付顺序为 1,2,3,接收窗口滑动

    Note over S,R: 窗口继续前移,可发送后续帧4,5...

选择性重传的 核心要点 如下:

  1. 窗口大小
    • 在 SR 中,发送窗口和接收窗口的大小保持一致。
    • 若帧序号采用 位二进制表示,则窗口的最大取值为 (即序号空间的半数),以避免发送方和接收方窗口的重叠产生歧义。
  2. 发送过程
    • 发送方在其发送窗口范围内连续发帧。
    • 每发送一帧,就为该帧启动一个 计时器;计时器独立于其他帧,超时后仅针对该帧进行重传。
  3. 接收过程
    • 接收方接受所有落在接收窗口中的帧,即使这些帧顺序错乱。
    • 对于每一正确收到的帧,接收方立即发送 确认(ACK)。
    • 乱序到达的帧会被 缓存,待窗口前面的缺失帧补齐后,按正确顺序交付给上层。
  4. 超时与重传
    • 当某帧的计时器到期,发送方只 重传 该帧,而不是窗口内的全部帧。这一点是 SR 与 GBN 的根本区别,也是 SR 在高误码率下保持高吞吐量的关键。
  5. 滑动窗口机制
    • 发送方:收到帧的确认后,窗口左边界向前移动,释放已确认的帧槽位,随后可以发送新的帧。
    • 接收方:当缓存的帧已能够连续组成一个完整序列并交付给上层后,接收窗口也向前滑动,腾出空间接收后续帧。
  6. 冲突确认的处理
    • 由于网络延迟,发送方可能在重传帧后才收到该帧的早期确认。
    • 为避免误判,SR 协议必须具备 识别并丢弃重复确认(duplicate ACK)的机制,只对最新、有效的确认作出响应。
SR_Protocolcluster_window1. 窗口大小设计cluster_sender2. 发送方流程cluster_receiver3. 接收方流程cluster_features4. SR协议关键特性title选择性重传(SR)协议核心概念window_size窗口大小 = 2^(n-1)(序号空间的一半)title->window_sizewindow_reason防止发送窗口与接收窗口重叠歧义window_size->window_reason设计原因send_frames在窗口内连续发帧window_reason->send_framesstart_timer为每帧启动独立计时器send_frames->start_timertimeout_retrans超时仅重传该帧(非全部帧)start_timer->timeout_retrans超时receive_ack收到ACK后窗口滑动start_timer->receive_ack收到确认receive_frame接收窗口内的帧(允许乱序)timeout_retrans->receive_frame重传帧selective选择性重传只重传丢失帧timeout_retrans->selectivereceive_ack->send_frames继续发送send_ack立即发送ACKreceive_frame->send_ackbuffer_frame乱序帧缓存等待receive_frame->buffer_frame乱序send_ack->receive_ackACK传输deliver_ordered按序交付上层buffer_frame->deliver_ordered补齐high_throughput高误码率下保持高吞吐量buffer_frame->high_throughputslide_window接收窗口滑动deliver_ordered->slide_windowselective->high_throughputindependent_timer独立计时器机制independent_timer->selectiveduplicate_ack处理重复ACK避免误判duplicate_ack->selectivecomparisonSR vs GBNSR: 选择性重传单帧GBN: 重传所有后续帧

协议对比

几种 ARQ 协议的主要区别是通过发送和接收窗口体现的:

发送窗口
  • 定义:发送方在未收到对方确认(ACK)的情况下,允许连续发送的最大帧数量(或数据单元数量)。
  • 作用:控制发送方的数据发送速率,避免因发送过快导致网络拥塞或接收方处理不过来。
接收窗口
  • 定义:接收方允许接收并缓存(或直接交付)的帧的最大数量,通常决定了接收方可以接受乱序或非连续帧的能力。
  • 作用:明确接收方能够处理的数据范围(包括按序和乱序数据),超出窗口的数据会被丢弃。
补充
  • 发送窗口:决定发送方能“同时发多少”。
  • 接收窗口:决定接收方能“同时收多少”以及“是否支持乱序接受”。
ARQ 发送窗口与接收窗口示意图展示发送方和接收方的滑动窗口机制,包括已发送未确认、可发送、不可发送等状态分区发送方01发送窗口(W=4)23456789已确认发出 / 待ACK可发送超出窗口发送基下一待发窗口边界ACK 2← 收到ACK后,窗口向右滑动接收方01接收窗口(W=4)23?45?6789已交付上层已接收等待中乱序缓存丢弃(窗口外)丢弃已确认/已交付发出待ACK可发送 / 已按序接收乱序缓存等待帧

三个 ARQ 协议的具体区别如下:

特性停等协议GBN(Go‑Back‑N)协议SR(Selective‑Repeat)协议
发送方窗口大小(序号位数为 n)1(一次只能发送一帧)最多 (可并发发送多帧)最多 (可并发发送多帧)
接收方窗口大小(序号位数为 n)1(只接受一帧)1(只能接受按序的下一帧)与发送方窗口大小相同(可接受乱序帧)
超时重传单位单个数据帧即整个发送窗口整个发送窗口单个数据帧
发送方效率低——每发送一帧必须等待确认高——在确认到达前可连续发送多帧高——仅对出错帧进行重传,其他帧不受影响
接收方效率高——无需缓存,按序直接交付低——必须按照顺序接收高——可以缓存并按序交付已收到的乱序帧
错误处理方式只重传丢失的那一帧从第一个出错帧起,全部帧都要重传只重传出错或乱序的那一帧(或若干孤立的帧)
带宽利用率低——大量空闲时间高——大多数时间都在利用链路带宽高——仅在必要时占用带宽进行重传

窗口大小限制

在说明窗口大小限制之前,必须先区分三种不同的“编号”概念:

0
1
2
3
4
5
6
7
8
9
10
11
0
1
2
3
4
5
6
7
8
9
10
11
绝对编号
绝对编号
发送方
接收方
发送窗口
接收窗口
3
4
5
3
4
5
假设序列号位数为 3,那么序列号范围为 [0, 7]
序列号
0
1
2
3
4
5
6
7
0
1
2
3
0
1
2
3
4
5
6
7
0
1
2
3
序列号
  • 绝对编号:指帧在整个逻辑发送流中的真实顺序编号。 该编号会随着发送不断递增:

    绝对编号本身通常认为是无限增长的,仅用于逻辑分析。

  • 序列号(循环编号):协议首部中的编号字段长度有限。 若序列号字段使用 位,则序列号范围为:

    超过后重新从 0 开始循环。

    例如当 (n=3) 时:

  • 窗口内编号:是序列号范围的一个子集
补充

协议真正传输的是 序列号(循环编号)

发送窗口与接收窗口本质上是在“循环序列号空间”上滑动。 这可以与 TCP 中的 绝对下标和序列号 进行类比。

假设协议中的序列号字段使用 位,则序列号空间大小为:

发送窗口大小( )与接收窗口大小( )必须满足:

为什么有这个限制?

根本原因是防止 序列号回绕(wrap around)带来的歧义

当发送窗口和接收窗口的大小之和超过 时,可能出现以下情况:

  • 一个新帧使用了与之前某个仍在网络中滞留的旧帧相同的序列号;
  • 接收方无法区分该帧是“新的合法帧”还是“旧的延迟到达帧”。

通过保证:

可以确保在任何时刻,发送窗口与接收窗口不会在序列号空间中发生重叠,从而避免不同绝对编号的帧使用同一序列号时产生歧义。

0
1
2
发送窗口内序列号
3
0
0
1
2
3
0
1
发送窗口内序列号
接收窗口内序列号
GBN 的极端情况
SR 的极端情况
0
1
2
3
4
0
1
2
3
4
5
绝对编号
绝对编号
接收窗口内序列号
极端情况下:当接收方收到了所有数据帧,但是所有确认帧都丢失的情况下,
发送窗口和接收窗口会具有相同的 序列号,但是所对应的数据帧不同
假设序列号位数为 2,序列号范围为 0,1,2,3
假设发送窗口大小 4,接收窗口大小 1,
4 + 1 > 4
假设发送窗口大小 3,接收窗口大小 3,
3 + 3 > 4

信道利用率

在 ARQ 协议中,信道利用率(也叫做链路利用率)是指信道用于传输有效数据的效率,通常定义为 成功传输数据的时间占总传输时间的比例。它反映了协议在给定信道条件下的性能,是评估 ARQ 协议效率的重要指标。

信道利用率 可以表示为

其中:

  • :成功传输有效数据的时间。
  • :总时间,包含数据传输、确认、重传以及等待。

计算方法

对于 ARQ 协议,假设信号传播时间为 ,一个数据帧的传输时间为 ,一个确认帧的传输时间为 ,发送窗口的最大值为 ,信号往返时间

在此情况下,信道利用率 = 发送数据的时间 / 从发送第一个帧的时间到收到第一个确认帧的时间:

停等协议

A
D
Time
Time
信号传播时间
帧传输时间
停等协议
发送帧
确认帧

对于停等协议,信道利用率为

连续 ARQ 协议

A
D
Time
Time
信号传播时间
帧传输时间
滑动窗口协议,连续传输多个帧

对于使用了滑动窗口的协议(比如回退 N 帧和选择性重传),一次性可以传输 个数据帧,信道利用率为

注意有些时候确认帧比较小,在这种情况下确认帧传输时间 可以忽略。

此外, ,所以当 时,信道利用率

3.4 - 介质访问控制

🔥 高优先级
真题练习

数据链路层的另一个重点(之前一个是 ARQ 协议),重点掌握 CSMA/CD 的细节,会在选择题和解答题中考查。多路复用和 CSMA/CA 也要熟悉下,会在选择题中考查。

ALOHA 协议说实话没考察过,但是出现过在考纲中,所以还是加在教程中。

共享介质

共享介质
A
B
C
D
E

在介绍 MAC 概念之前,必须要说明一下 共享介质 的概念。

在一个网络环境中,多个设备可能需要同时访问同一个 物理介质 来发送数据,这个介质可以是 电缆光纤 或者 无线信道

当设备发送数据时,数据包会在整个介质上传播,所有连接到该介质的设备都可以接收到数据包。

如果多个设备同时发送数据,介质上的数据信号就会相互 冲突 进而导致错误。

所以 MAC 协议确保了 共享介质 上的有效、公正且有序的数据传输。

注意

其实现代网络架构很少有这种共享介质了,但是考研的语境下,只要题目出现:

  • CSMA/CD
  • 冲突(collision)
  • 传播时延
  • 最小帧长

你就要立刻切换到这个模型:

共享信道 + 广播传播 + 半双工

  • 所有设备接在同一根“线”上
  • 一个设备在一个时刻只能发送或者接收数据
  • 任意发送 = 信号扩散到整个网络
  • 所有设备都能“听到”

用一句话总结这个模型:

一人发,全网听;但只认目的地址

MAC 方式总结

介质访问控制(MAC,Media Access Control)可以分为 信道划分 以及 随机访问 两种大方向。

信道划分介质访问控制

也叫做 多路复用,在一条传输介质上同时传输 多个不同种类的信号(种类可以根据不同的参数进行划分),这样不同的设备可以发送特定类型的信号,并且不同信号之间相互不干扰,信道划分 访问控制可以分为以下几种:

  • FDM:频分多路复用
  • TDM:时分多路复用
  • WDM:波分多路复用
  • CDM:码分多路复用
随机访问介质访问控制

指多台设备共享同一个 通信介质 时,它们可以随机地尝试发送数据,而不需要事先协调,当发生冲突后再做后续的协调,以保证不会接收到错误的数据。

  • ALOHA
  • CSMA
  • CSMA/CD
  • CSMA/CA
mindmap
  root((MAC 介质访问控制))
    信道划分介质访问控制
      多路复用
        同时传输多个不同种类的信号
        不同设备发送特定类型信号
        信号间相互不干扰
      FDM
        频分多路复用
      TDM
        时分多路复用
      WDM
        波分多路复用
      CDM
        码分多路复用
    随机访问介质访问控制
      共享通信介质
        多台设备随机尝试发送数据
        无需事先协调
        冲突后进行后续协调
        保证接收正确数据
      ALOHA
      CSMA
      CSMA/CD
      CSMA/CA

多路复用

多路复用(Multiplexing)是一种技术,用于在同一 传输介质 上同时传输 多个信号,包含频分多路复用(FDM)、时分多路复用(TDM)、波分多路复用(WDM)和码分多路复用(CDM)四种。

FDM

频分多路复用(FDM)将可用带宽划分为若干个不重叠的 频段,每个 信号 占用一个频段。各个信号可以同时传输,但彼此之间不会干扰,因为它们占用不同的频率。

MUX
channel 1 (f1)
DEMUX
channel 2 (f2)
channel 3 (f3)
frequency
FDM

FDM 在传统的模拟电话系统和广播中广泛使用。

TDM

时分多路复用(TDM)将 时间 划分成若干个 时隙,每个 信号 在不同的时隙中传输。所有信号在时间上轮流使用同一传输介质。

MUX
1
DEMUX
2
3
4
1
2
3
4
1
2
3
4
TDM

TDM 常用于数字通信系统,如数字电话网络。

WDM

波分多路复用(WDM)是 FDM 的一种应用,主要用于 光纤通信。它将光纤的可用带宽划分为多个 波长(颜色),每个 信号 占用一个波长。

MUX
DEMUX
WDM

WDM 技术可以大幅增加光纤的通信容量,广泛应用于长距离和高速光纤网络。

CDM

码分多路复用(CDM)使用不同的 编码 来区分各个 信号。所有信号可以在同一 频带 上同时传输,但通过使用不同的编码序列来避免相互干扰。

虽然 CDM 的概念可以用在许多不同的传输系统中,但在实践中,它主要作为 码分多址CDMA,Code Division Multiple Access)的基础技术。

CMDA

在 CDMA 中,每一个 比特时间 划分为 m 个短的 时间槽,称为 码片(chip),每个站被指派一个惟一的 m bit 码片序列 (chip sequence) 。

  • 如果发送比特 1,则发送自己的 m 位码片序列。
  • 如果发送比特 0,则发送该码片序列的二进制反码。

简单理解就是,A 站向 C 站发出的信号用一个向量来表示,B 站向 C 站发出的信号用另一个向量来表示,两个向量要求相互 正交。向量中的分量,就是所谓的码片。

当两个或多个站点同时发送时,各路数据在信道中线性相加。为了从信道中分离出各路信号,要求各个站点的码片序列相互 正交

令向量 表示站 S 的码片向量,令 表示其他任何站的码片向量。两个不同站的码片序列正交,就是向量 的规格化内积(inner product)都是 0:

任何站的码片向量和该码片反码的向量的规格化内积都是 -1:

CDMA 的过程可以通过下图辅助理解:

CDMA码分多址工作原理站点A (发送比特1)码片序列: (+1, +1, -1, -1)+1+1-1-1比特时间被分为4个码片站点B (发送比特0)码片序列: (+1, -1, +1, -1)发送反码: (-1, +1, -1, +1)-1+1-1+1信道中线性叠加A信号 + B信号(+1,+1,-1,-1) + (-1,+1,-1,+1)= (0,+2,-2,0)接收端分离信号恢复站点A的信号接收信号 · A码片序列 = (0,+2,-2,0) · (+1,+1,-1,-1)= 1/4 × (0+2+2+0) = +1 → 比特1恢复站点B的信号接收信号 · B码片序列 = (0,+2,-2,0) · (+1,-1,+1,-1)= 1/4 × (0-2-2+0) = -1 → 比特0正交性保证A · B = 1/4 × ((+1)×(+1) + (+1)×(-1) + (-1)×(+1) + (-1)×(-1)) = 1/4 × (1-1-1+1) = 0注:码片序列必须相互正交,这样才能在接收端成功分离各路信号发送比特1时发送原码片序列,发送比特0时发送反码片序列

上图以一个实例展示了 CDMA 的过程:

  1. 站点A:码片序列S = (-1,-1,-1,+1,+1,-1,+1,+1),发送比特1,所以发送原序列S
  2. 站点B:码片序列T = (-1,-1,+1,-1,+1,+1,+1,-1),但在这个例子中发送的是T̄(反码),这意味着B站实际发送的是比特0
  3. 信道叠加:S + T̄ = (0,0,-2,+2,0,-2,0,+2)
  4. 信号分离
    • 恢复A的信号:接收信号·S = +1 → 比特1 ✓
    • 恢复B的信号:接收信号·T = -1 → 比特0 ✓
  5. 正交性:S·T = 0,保证了两个信号可以完全分离

ALOHA 协议

ALOHA 协议是一种早期开发的 随机访问协议,用于在 共享信道 上传输数据。ALOHA 有两种基本类型:纯 ALOHA 和时隙 ALOHA。

  • 纯 ALOHA:用户可以在 任何时间 发送数据包。由于没有时间同步,数据包之间容易发生 冲突
  • 时隙 ALOHA:时间被分成离散的 时隙,用户只能在时隙的开始发送数据包。这种方法通过同步发送时间,减少了 冲突 的概率。
ALOHA 如何检测冲突

在纯 ALOHA 中:

  • 发送端 直接发,不监听信道
  • 也没有“边发边检测”的能力

那怎么知道冲突了?

靠 ACK(确认应答)机制

接收端会对数据进行差错校验,只有当接收端成功接收并通过差错校验(如 CRC)时,才会发送 ACK

纯 ALOHA

纯 ALOHA(Pure ALOHA)是一种简单的 随机接入协议,允许用户在 任意时刻 发送数据包,而无需对时间进行任何同步或分时。

Station1
Station1
Station2
Station2
Station3
Station3
Station4
Station4
Frame 1.1
Frame 1.1
Resend
Resend
Frame 1.2
Frame 1.2
Frame 2.1
Frame 2.1
Resend
Resend
Frame 3.1
Frame 3.1
Resend
Resend
Frame 4.1
Frame 4.1
Frame 2.1
Frame 2.1
Frame 4.1
Frame 4.1
Frame 3.1
Frame 3.1
Collision
duration
Collision...
Collision
duration
Collision...
Resend
Resend
Text is not SVG - cannot display

工作原理:

  • 用户 随时 发送数据包。
  • 如果数据包成功到达接收端,则传输完成。
  • 如果发生 冲突(即两个或多个用户同时发送数据包),相关用户需要等待随机的时间后重传。

时隙 ALOHA

时隙 ALOHA(Slotted ALOHA)在纯 ALOHA 的基础上引入了 时间同步,将时间划分为一系列等长的 时隙。用户只能在 时隙的开始 发送数据包。

Station1
Station1
Station2
Station2
Station3
Station3
Station4
Station4
Frame 1.1
Frame 1.1
Frame 1.2
Frame 1.2
Frame 2.1
Frame 2.1
Resend
Resend
Frame 3.1
Frame 3.1
Resend
Resend
Frame 4.1
Frame 4.1
Frame 2.1
Frame 2.1
Frame 4.1
Frame 4.1
Frame 3.1
Frame 3.1
Slot 1
Slot 1
Resend
Resend
Slot 2
Slot 2
Slot 3
Slot 3
Slot 4
Slot 4
Slot 5
Slot 5
Slot 6
Slot 6
Text is not SVG - cannot display

工作原理:

  • 时间被划分为 等长的时隙
  • 用户在 时隙的开始 时发送数据包。
  • 如果一个时隙内 只有一个用户 发送数据包,则传输成功。
  • 如果多个用户在同一时隙发送数据包,发生 冲突,相关用户等待随机时间后重传。

CSMA 协议

CSMA(Carrier Sense Multiple Access)的中文叫做 载波监听多路访问,理解 CSMA 的关键在于理解它的名称中的两个部分:载波监听 以及 多路访问

  • 载波监听(Carrier Sense):因为 CSMA 是随机访问介质控制的一种方式,所以在发送数据前,必须确定当前 通信介质 中没有其他设备正在发送数据。所以 载波监听 可以被理解为以太网口内部芯片自带的一种功能,具体而言就是一种可以监听 信道 在当前位置是否有数据传输的功能。
  • 多路访问(Multiple Access):多个设备可以访问同一个 通信介质。这意味着在任何给定时间,任何设备都可以尝试发送数据。

所以 CSMA 可以理解为 通过 载波监听 避免 冲突,进而实现共享介质上的 多路访问

CSMA 载波监听多路访问共享通信介质 (总线/信道)设备 A准备发送载波监听设备 B等待发送载波监听设备 C等待发送载波监听设备 D空闲状态载波监听数据传输中载波监听 (Carrier Sense)• 发送前检测信道是否空闲• 如果有数据传输,等待• 避免冲突,提高传输效率多路访问 (Multiple Access)• 多个设备共享同一介质• 任何设备都可尝试发送• 提供公平的访问机会工作原理: 监听 → 判断 → 发送/等待准备发送等待中传输中空闲

这里需要深入理解传播时延和传输时间这两个概念:

  • 传播时延propogation time) = 距离 / 信号传播速度
  • 传输时间transmission time) = 数据大小 / 数据传输速率

CSMA 的问题在于它无法处理 碰撞,当一个设备监听到当前介质中无信号时,它就可以发送数据,但监听得到的结果可能是 “假结果”。因为有可能其他设备已经发送信号了,只是信号由于传播时延还没有到达当前设备。

所以假设当前设备监听得到了“假结果”,那么此时发送数据后介质上就会发生 冲突

那么 CSMA 如何处理冲突呢?

CSMA 不具备 碰撞处理 功能,冲突处理 是 CSMA/CD 的功能。这意味着在 CSMA 中,设备不会主动检测到 碰撞

所以实际应用中基本没有使用 “纯CSMA” 的协议,因为因为它 只监听信道是否空闲,但:

  • 不能检测冲突(如 CSMA/CD)
  • 也不避免冲突(如 CSMA/CA)
  • 一旦多个设备在信道刚空时同时发送,必然冲突,没有机制处理

这在真实网络中会导致高碰撞率和低效率。

实际应用的都是 CSMA 的变种:

协议是否实际应用应用场景特点
CSMA❌ 几乎没有教学概念只监听,不检测、不避免、不重传
CSMA/CD✅ 是有线以太网(Ethernet)监听 + 冲突检测 + 退避
CSMA/CA✅ 是无线局域网(Wi-Fi)监听 + 冲突避免 + ACK确认

CSMA 协议不会直接考查,但是作为 CSMA/CD 的基础,还是需要熟悉下。

三种类型

CSMA 也 根据其在 信道空闲 时的行为分为三种类型,如下所示:

特征1-persistent CSMANon-persistent CSMAp-persistent CSMA
信道空闲时的行为立即以发送数据立即开始传输数据在下一个时隙以概率 p 发送数据;以概率 1-p 推迟到下一个时隙
信道忙时的行为持续监听,直到信道空闲等待一个随机时间后,重新监听信道持续监听,直到信道空闲(进入空闲后的行为见上一条)
碰撞的可能性最高(多个站点同时等待,一旦空闲必然冲突)低(随机等待减少了竞争)中等(通过概率 p 分散了发送时机)
延迟特性信道空闲时,发送延迟最小;但发生碰撞时,延迟会很大。避免了多个站点的持续竞争,减少了碰撞,但可能增加平均延迟。在减少碰撞和控制延迟之间取得平衡。
适用性实际上很少用于纯ALOHA或CSMA,因为碰撞概率太高。 更像是一个理论参考。适用于非持续型流量、碰撞概率较高的网络(如早期的以太网)适用于时隙化信道,是前两种策略的一个很好折中,常用于Wi-Fi等网络。

CSMA/CD 协议

CSMA/CD(CSMA with Collision Detection,载波监听多路访问/碰撞检测)是 CSMA 的一种拓展,在了解这个知识之前,请确保你已经理解了什么是 CSMA 中的 CS(Carrier Sense 即 载波监听),以及什么是 CSMA 中的 MA(Multiple Access 即 多路访问)。

CSMA/CD 比 CSMA 多出一个 CD(Collision Detection 即 碰撞检测)的功能。

在上文中我们提到,CSMA 中监听到信道空闲可能是“虚假”,所以在 CSMA 发送数据后介质中也许会发生冲突,但 CSMA 只能依靠非常原始的方案处理冲突。

CSMA/CD 就高级一些,在发送数据期间,我们刚刚提到的 监测器件(Carrier,就是 CSMA 中 C 的简称)会 一直监听有没有冲突发生

CSMA/CD 载波监听多路访问/碰撞检测共享通信介质设备 A正在发送发送数据持续监听设备 B正在发送发送数据持续监听碰撞!数据损坏时间线t1: 开始发送t2: 碰撞发生t3: 检测到碰撞t4: 停止发送CSMA (原始版本)✓ 发送前载波监听✗ 发送时不监听✗ 碰撞后才知道失败→ 浪费带宽和时间→ 效率较低CSMA/CD (改进版本)✓ 发送前载波监听✓ 发送时持续监听✓ 实时检测碰撞→ 立即停止发送→ 提高网络效率碰撞检测(CD)工作流程1载波监听2开始发送3持续监听4检测碰撞5立即停止载波监听器件 (Carrier)发送期间持续工作,实时检测信号异常

以下图为例,假设 A 向 D 发送一段数据,C 向 A 发送一段数据,我们可以观察到:冲突发生 的时间点 和 设备检测到 冲突的时间点是不同的。

A
B
C
D
Time
Time
t1
t4
t2
t3
A 感知到
冲突
冲突发生的时刻
C 感知到
冲突

当 A 和 C 检测到冲突发生时,它们会立即停止发送,并且发送信号通知其他设备该次碰撞。

流程

CSMA/CD 的工作流程如下:

  1. 准备发送:适配器从网络层获得一个分组,封装成帧,放入网络适配器缓存准备发送。
  2. 检测信道:监听信道是否空闲,若信道空闲,则开始发送该帧;若信道忙,则持续检测直至信道空闲。
  3. 在发送过程中,适配器仍然持续检测信道。这里只有如下两种可能。
    • 发送成功:在争用期内一直未检测到冲突,该帧肯定能发送成功。
    • 发送失败:在争用期内检测到冲突,此时立即停止发送,并且广播 碰撞通知信号。接着适配器执行 指数退避算法,等待一段随机时间后返回到步骤 2。若重传 16 次仍不能成功,则停止重传并向上报错。
开始
监听信道
信道
发送数据
无冲突
?
发送数据
广播碰撞信号
重传次数
达到 16?
指数退避
Y
N
Y
N
N
Y
停止重传并向上报错

指数退避算法

在随机访问网络中,当 冲突 发生后,设备需要 等待一段时间 后重试发送,以避免再次冲突。
指数退避算法(Exponential Backoff Algorithm)通过动态调整等待时间,减少连续冲突的概率,提高网络效率。

其核心思想是当冲突发生时,设备随机选择一个等待时间,并在每次冲突后 成倍增加等待时间范围,以降低后续冲突的可能性。

指数增长规则 如下:

  • 如果是第 次重传尝试(通常从 开始),则从以下范围随机选择等待时间槽(slot)的个数:
  • 每个时间槽长度为一个基本单位(如 51.2 微秒,以太网中一个“slot time”)。
  • 最大的 通常是有限制的,例如 以太网中最大为 10(即窗口最多增长到

如果尝试达到一定次数仍冲突,放弃传输并上报错误。


举个实际例子:

假设某设备在尝试发送时检测到 冲突

  • 第 1 次重试:在 [0, 1] 中随机选择一个时间槽(即可能等待 0 或 1 个 slot time)。
  • 第 2 次重试:在 [0, 3] 中随机选择(0~3 个 slot)。
  • 第 10 次重试:在 [0, 1023] 中随机选择。
  • 第 16 次重试后仍失败:报错放弃。

限制条件

CSMA/CD 能够正常工作的 限制条件 是:

帧的传输时间至少要两倍于信号在总线上最长的传播时延(即两倍于总线端到端的单向传播时延)。

要在帧的发送过程中及时发现冲突,发送站必须在整个帧发送完毕之前收到冲突信号。如果发送站只有在帧全部发送完之后才能检测到冲突,那么冲突产生的数据已经完整地传输到了网络上,无法避免数据损坏。

因此,最小帧长 就是由这个时间条件决定的。对于给定的网络速率和传播时延,必须保证帧的发送时间足够长,从而在冲突发生时,发送站仍处于发送状态,能够及时检测到冲突并执行退避机制。如果帧太短,就会在冲突信号返回之前发送完毕,导致冲突无法被检测,进而破坏CSMA/CD的正常工作。

注意

这一机制的依据是:冲突信号必须在网络中传播并被发送站捕获,发送站才能意识到冲突的发生。若帧的传输时延过短,发送站可能在冲突信号返回之前就已结束帧的发送,从而错过冲突的检测。

因此,帧的传输时延必须不小于传播时延的两倍,才能确保冲突能够在帧发送完毕前被发现并采取相应的碰撞处理。

A
B
Time
Time
A
B
Time
Time
B 在这个时刻接收到最后一个比特
最小传输时长 = 2 ×最大传播时延

最小帧大小 = 带宽 ×最小传输时长
A 在这个时刻传输结束
B 在 A 发送的信号刚到达的前一瞬间
开始发送数据
A 必须还在传输数据,也就是说数据传输还没有结束,
才能在这个时刻检测到冲突
一般的冲突场景
碰撞的边界情况
冲突在这个时刻发生

CSMA/CA 协议

CSMA/CD 适用于 以太网(使用有线连接的局域网),但在 无线局域网(WLAN,Wireless LAN)中无法直接使用 CSMA/CD,主要有以下原因:

  1. 无线设备 不能同时“听”和“说”:无线收发器在发送数据时,无法同时监听信道来判断是否发生碰撞。
  2. 信道干扰 比有线环境严重:无线信号受环境干扰更大,误判空闲或碰撞的概率更高。
  3. 隐藏节点问题(隐蔽站):假设 A 和 C 两台无线设备都想给 B 发送数据,但 A 和 C 彼此“看不到”,只看到 B 是空闲的。结果就是 A 和 C 同时给 B 发送,发生碰撞,但它们却以为没事。

为此,802.11 标准定义了广泛用于无线局域网的 CSMA/CA 协议,它对 CSMA/CD 协议进行修改,将 冲突检测 改为 冲突避免 (Collision Avoidance,.CA)。“冲突避免” 并不是指协议可以完全避免冲突,而是指协议的设计要尽量降低冲突发生的概率。

流程

Source
Destination
Other Nodes
DIFS
SIFS
RTS
CTS
CTS
DATA
ACK
ACK
SIFS
SIFS
Delay
Access
  1. 侦听信道(Carrier Sense)
    • 设备在发送数据前通过物理侦听(检查信道电信号)和虚拟侦听(NAV,网络分配向量,记录信道占用时间)判断信道是否空闲。若信道忙碌,设备进入退避机制,等待随机时间后再次侦听,以降低碰撞风险。
  2. 发送请求(RTS,Request to Send)
    • 若信道空闲超过特定时间(DIFS,分布式帧间间隔),设备可发送 RTS 帧,通知其他设备其传输意图及所需时间。RTS 帧是可选的,主要用于较大数据包或高干扰环境。
  3. 清除发送请求(CTS,Clear to Send)
    • 接收设备在确认信道空闲后(等待 SIFS,短帧间间隔),回复 CTS 帧,确认传输许可并通知附近设备保持沉默。CTS 帧增强了信道保护,减少隐藏节点问题。
  4. 数据传输
    • 发送设备收到 CTS 帧后(等待 SIFS),开始传输数据帧。其他设备通过 NAV 设置避免干扰,确保信道专用于当前传输。
  5. 确认帧(ACK,Acknowledgment)
    • 接收设备成功接收数据后(等待 SIFS),发送 ACK 帧确认。若发送端未收到 ACK(可能因 碰撞 或干扰),启动重传机制,重新执行上述步骤。

根据以上过程我们可以观察到 CSMA/CA 的一些 关键特点

  • 碰撞避免:CSMA/CA 通过侦听、RTS/CTS、退避机制预测和确认机制并避免碰撞,而非像 CSMA/CD(以太网)那样检测碰撞后处理,适合无线网络因其难以实时检测碰撞。
  • 隐藏节点问题:两设备因距离远无法互相侦听,可能同时发送数据导致碰撞。RTS/CTS 机制通过通知附近设备解决此问题。

IFS

由于无线信道的可靠程度不如有线网络,802.11 标准使用 停等方案,即站点每通过无线局域网发送完一帧,就要在收到对方的确认帧后才能继续发送下一帧。

为了尽量避免冲突,802.11 标准规定:所有站在完成一次发送后,必须先等待一个极短的时间(期间继续监听信道)才能发送下一帧。这段等待时间称为 帧间间隔(InterFrame Space,IFS)。不同类型的帧对应的 IFS 长度不同,IFS 的长短用来实现优先级管理,从而保证关键帧能够在竞争激烈的信道中优先获得发送机会。

802.11 标准使用了下列三种 IFS:

  • SIFS(Short IFS):最短的帧间隔,优先级最高。用于:
    • 接收方回复 CTS 或 ACK;
    • 源站发送连续帧(如 DATA → ACK)。
    • 示例:AP 接收到 RTS 后,等待 SIFS 时间发送 CTS,之后接收到数据后,再等待 SIFS 时间发送 ACK。
  • DIFS(Distributed IFS):普通数据帧的发送间隔。用于:
    • 一个站点在发现信道空闲后,准备发起新的通信前等待的时间。
    • 示例:A 想要发起通信,必须先监听信道空闲,并等待 DIFS 才能发送 RTS。
  • PIFS(Point Coordination IFS):比 DIFS 短、但比 SIFS 长。仅用于中心协调器(AP)抢占信道,用于轮询控制(PCF 模式)。
AP
AP
A (源站)
A (源站)
C (目的站)
C (目的站)
C (目的站)
C (目的站)
A
A
DIFS
DIFS
RTS
RTS
SIFS
SIFS
B (隐藏站)
B (隐藏站)
CTS
CTS
SIFS
SIFS
DATA
DATA
SIFS
SIFS
ACK
ACK
DIFS
DIFS
t
t
NAV:A 在 RTS 帧中填写的时间
NAV:A 在 RTS 帧中填写的时间
收到 RTS 帧的站点
收到 RTS 帧的站点
收到 CTS 帧站点
收到 CTS 帧站点
NAV:AP 在 CTS 帧中填写的时间
NAV:AP 在 CTS 帧中填写的时间
NAV:A 在 DATA 帧中填写的时间
NAV:A 在 DATA 帧中填写的时间
收到 DATA 帧的站点
收到 DATA 帧的站点
CW
CW
开始争用
开始争用

等待 IFS 序列过程如下:

A: 监听信道空闲 → 等待 DIFS → 发送 RTS
AP: 等待 SIFS → 回复 CTS
A: 等待 SIFS → 发送 DATA
AP: 等待 SIFS → 回复 ACK

为了应对无线网络中的 “隐蔽节点” 问题,802.11 引入了 NAV(Network Allocation Vector) 概念,作为一种 “虚拟载波侦听机制”。

NAV 是一种 倒计时定时器,它告诉站点:接下来的多长时间内,信道将被其他设备占用。具体过程如下:

  • A 发送 RTS 帧,并在其中声明:从 RTS 发送起,直到收到 ACK,通信将持续多久。
  • AP 回复 CTS 帧,在 CTS 中再次包含整个传输剩余所需时间(包括 DATA 和 ACK)。
  • 所有收到 RTSCTS 的站点,都会根据帧中的时间字段,设置自己的 NAV 计时器,并保持沉默,避免冲突。

在上图中:

  • B 是隐蔽站,可能听不到 A 的 RTS,但能听到 AP 的 CTS → 会根据 CTS 设置 NAV。
  • 其他站点即使未直接收到数据(例如 DATA),也会因为事先通过 RTS/CTS 设置了 NAV,在期间不会发起竞争。

简单来说,NAV 就像设备内部的一个“占用表”,告诉自己:别人正在用,等一会再发。

3.5 - 局域网和广域网

中优先级
真题练习
本节主要关注以太网的传输介质和帧格式,往年在解答题出现了传输介质的名称,如果不知道对应的带宽就难搞了。VLAN 和 广域网的概念考查频率低一些,但也比较简单,熟悉下能在选择题应对就可。

局域网

局域网(Local Area Network,LAN)是一种覆盖范围较小、用于连接同一物理地点(如家庭、办公室、学校或企业内)的计算机和其他设备的计算机网络。

特性

局域网的特性主要由三个要素决定:拓扑结构传输介质介质访问控制方式,其中 介质访问控制方式 是最关键的因素,它决定了局域网的主要技术特性。

常见的局域网 拓扑结构 主要包括以下四类:

  • 星形结构
  • 环形结构
  • 总线形结构
  • 星形与总线形结合的复合型结构
星形结构
总线形结构
环形结构

传输介质 方面,局域网可以采用铜缆、双绞线和光纤等多种介质,其中 双绞线 是当前的主流传输介质。

局域网常用的 介质访问控制方法 包括 CSMA/CD 协议令牌总线协议令牌环协议。其中,CSMA/CD 协议和令牌总线协议主要应用于总线形局域网,而令牌环协议则主要用于环形局域网。

实现

局域网主要包含三种实现:

  • 以太网(目前使用范围最广)。逻辑拓扑是总线形结构,物理拓扑是星形结构。
  • 令牌环(Token Ring,IEEE802.5)。逻辑拓扑是环形结构,物理拓扑是星形结构。
  • FDDI(光纤分布数字接口,IEE802.8)。逻辑拓扑是环形结构,物理拓扑是双环结构。

以太网

在实际的局域网应用中,由于 以太网 占据垄断地位,所以基本上成为了局域网的代名词,需要对局域网的概念有深入了解。

传输介质

以太网常用的传输介质有 4 种:粗缆、细缆、双绞线和光纤,这里需要熟练掌握它们的英文名,常在选择题中出现:

参数10BASE510BASE210BASE-T10BASE-FL
传输媒体粗缆细缆双绞线光纤对
编码曼彻斯特编码曼彻斯特编码曼彻斯特编码曼彻斯特编码
拓扑结构总线形总线形星形点对点
网络适配器早期以太网早期以太网现代以太网现代以太网

注意上述传输介质的英文名称其实是挺有讲究的:

首先是前缀的数字,代表的是传输介质的速率, 10 代表 10 Mbps100 代表 100 Mbps,注意这里是 Mbps 而不是 MB/s

其次是中间的 base,代表基带传输(Baseband),基带与宽带(broadband)相对应。基带表示直接传输原始数字信号,不调制;宽带代表使用模拟调制技术传输多个频道信号,常见于有线电视等。

最后是后缀的英文字母,代表的传输介质的类型:

  • 注意字母 Ttwisted pair 的首字母,含义是 双绞线
  • FLFiber optic 的缩写,含义是 光纤
帧格式
IP 数据报
负载
FCS
类型
源 MAC 地址
目的 MAC 地址
6B
6B
2B
4B
46 ~ 1500
10101011
101010101010 ··· 101010101010
7B
1B
以太网 MAC 帧
8B
前同步码
帧开始
定界符
IP 层
MAC 层
物理层

如上图所示,以太网帧格式从逻辑上可以分为物理层控制字段、帧首部、数据负载、差错校验字段这四个部分,每个字段的具体说明如下所示:

  • 物理层控制字段
    • 前导码(Preamble):7B
      • 由 7 字节的交替的 1 和 0 位组成,用于同步接收方的时钟。
    • 帧开始分隔符(Start of Frame Delimiter, SFD):1B
      • 通常为 10101011,标志帧的开始。
  • 帧首部:固定为 14B
    1. 目的地址(Destination MAC Address):6B
      • 指定帧的接收者的物理 MAC 地址。
    2. 源地址(Source MAC Address):6B
      • 指定帧发送者的物理 MAC 地址。
    3. 类型/长度字段(Type/Length):2B
      • 如果值大于或等于 0x0600(1536),则表示帧携带的数据的类型(例如 IPv4、IPv6、ARP 等)。
      • 如果值小于或等于 0x05DC(1500),则表示数据字段的长度。
  • 负载
    • 数据和填充(Data and Padding):范围为 46-1500B
      • 携带帧的有效载荷,即要传输的数据。
      • 如果数据少于 46 字节,则需要填充,确保数据字段的最小长度为 46 字节。
  • 差错校验字段
    • 帧校验序列(Frame Check Sequence, FCS):4 字节
      • 一个循环冗余校验(CRC)值,用于错误检测。接收方计算帧的 CRC,并与这个字段进行比较,以确定帧是否在传输过程中被损坏。
注意

为什么 前导码 和 帧开始定界符 不包括在以太网帧的最小和最大大小计算中?

需要注意的是,Preamble 和 SFD 确实是以太网标准规定的格式的一部分,但它们属于 物理层 的内容,而非 数据链路层 中的以太网帧内容。

以太网分为 物理层数据链路层。物理层负责比特级的传输和同步,而数据链路层负责处理数据的封装、地址标识和错误检测。

以太网帧的最大和最小大小为多少?

以太网帧的最小和最大大小(不包括前导码和帧开始定界符)有明确的规定,目的是确保帧的有效性并避免冲突。

其中最小大小为 64B,最大大小为 1518B
最小帧大小的要求是为了确保冲突检测机制(如 CSMA/CD)能够正常工作。
最大帧大小也称为 标准帧最大传输单元(MTU),它限制了每个帧可以承载的数据量,以确保设备处理负载不会过大。

以太网帧数据部分的最小大小为 46B,最大大小为 1500B

以太网快速填充 :当 IP 数据包的大小 小于 46 时(以太网设备会读取 IP 的首部的长度字段以得知),以太网设备会自动在其末尾填充 0,使其大小为 46 字节

无线局域网

帧格式

802.11 帧共有三种类型,即数据帧、控制帧和管理帧。数据帧的格式如图 3.28 所示。

帧控制
持续期
地址1
地址2