链路层

Posted by farmer3-c on August 27, 2025

数据链路层的主要功能

数据链路层位于物理层和网络层之间,其主要功能包括:

  • 成帧:将网络层交付的比特流封装成独立的帧,添加帧头和帧尾,以便接收方能识别帧的边界。
  • 差错控制:通过检错码或纠错码检测(或纠正)传输过程中产生的比特错误,并可配合重传机制。
  • 流量控制:协调发送方和接收方的速率,防止接收方缓存溢出。
  • 介质访问控制(MAC):在广播型多路访问链路(如以太网、WiFi)上,决定哪个节点何时占用信道。
  • 链路管理:建立、维护和释放数据链路层的连接(在面向连接的链路中)。
  • 可靠传输:在不可靠的物理链路上,通过确认和重传机制实现数据的可靠交付。

本章对成帧的基本方法进行了详细的描述;针对错误的处理这一数据链路层的重要任务,介绍了检错和纠错的基本原理和典型的编码方法;详细介绍了奇偶检验、循环冗余校验、互联网校验等常用检错码,以及纠1位错的海明码、里所码、低密度奇偶检验等常用纠错码。

成帧的基本方法

成帧是指将原始比特流分割成若干独立的帧,以便接收方能准确提取每个帧的数据。常用方法:

  • 字节计数法:帧头中使用一个字段表示帧的总长度(字节数)。接收方读取长度字段后,就知道从哪里结束。缺点:长度字段本身出错会导致帧同步丢失。
  • 字节填充的标志字节法:使用特殊标志字节(如 FLAG=0x7E)表示帧的开始和结束。如果数据中出现了标志字节,则在其前面插入转义字节(如 ESC=0x7D)。接收方遇到转义字节则删除并还原数据。
  • 比特填充的标志比特法(HDLC 常用):使用标志位序列 01111110 作为帧边界。发送方在数据中连续出现 5 个 1 后自动插入一个 0;接收方连续收到 5 个 1 后,若下一比特为 0 则删除该 0,若为 1 且再下一比特为 0 则视为标志。该方法避免了修改数据内容长度。
  • 物理层编码违例法:利用物理层编码中的“非法”信号作为帧边界(例如曼彻斯特编码中不使用连续的相同电平)。仅适用于特定的物理层编码。

检错与纠错基本原理

  • 检错码:在数据后添加冗余位(校验位),使得接收方能根据校验位判断数据是否出错。常见检错码:奇偶校验、循环冗余校验(CRC)、校验和(Checksum)。检错码无法确定错误位置,只能判断“有/无错误”。
  • 纠错码:添加更多冗余位,使接收方能不仅检测错误,还能定位并纠正一定数量的错误比特。典型纠错码:海明码(纠1位错)、BCH码、里所(Reed-Solomon)码、低密度奇偶检验(LDPC)码。纠错码的编码效率(数据位/总位数)较低,适用于无法重传的场景(如深空通信、实时音频)。

常用检错码详解

  • 奇偶校验:在数据后面附加一个比特,使整个数据中 1 的个数为奇数(奇校验)或偶数(偶校验)。可以检测奇数个比特错误,但不能检测偶数个错误,且无法纠错。
  • 循环冗余校验(CRC):将数据视为多项式,用生成多项式相除,余数作为 CRC 码附加。接收方重新计算并比对余数。可以检测任意长度的大多数突发错误(取决于生成多项式),广泛用于以太网、WiFi、存储设备。
  • 互联网校验和(Internet Checksum):将数据按 16 位字分组,进行二进制反码求和,结果取反。简单高效,用于 IP、TCP、UDP 头部校验。错误检测能力弱于 CRC,但便于在软件中快速计算。

常用纠错码简介

  • 海明码(Hamming Code):通过在数据位之间插入校验位,使得数据位与校验位形成多个奇偶校验组。能够纠正单比特错误,并能检测双比特错误(扩展海明码)。最小码距为 3(或 4)。
  • 里所码(Reed-Solomon, RS):非二进制纠错码,以符号(如 8 位字节)为单位进行编码,非常擅长纠正突发错误。广泛用于光盘、QR 码、卫星通信、数字电视。
  • 低密度奇偶检验码(LDPC):使用稀疏校验矩阵,通过迭代置信传播译码,性能接近香农极限。用于 5G、WiFi 6(802.11ax)、10G 以太网等。

为了实现数据链路层上的可靠传输,本章介绍了利用停-等协议实现流量控制,利用肯定确认与重传机制处理信道上出现差错的情况。此外,为了提高信道利用率,本章介绍了滑动窗口协议的基本思想,在此基础上详细说明了回退 n 帧协议和选择性重传协议的工作原理,并对两者的滑动窗口大小进行了分析。

停-等协议(Stop-and-Wait)

发送方每发送一个帧,就必须等待接收方发回确认(ACK)后才能发送下一帧。若超过一定时间(重传计时器)未收到 ACK,则重传该帧。接收方发送 ACK 后可设置一个序号(0/1)来区分新旧帧。

  • 优点:实现简单,需要的帧序号少(1 比特即可)。
  • 缺点:信道利用率低,尤其在长传播时延的链路(如卫星链路)中,发送方大部分时间在等待 ACK。

滑动窗口协议

为了提高信道利用率,允许发送方在未收到确认前连续发送多个帧。发送方维护一个发送窗口(可发送但未确认的帧序号范围),接收方维护一个接收窗口(允许接收的帧序号范围)。窗口大小 W 影响吞吐量和缓冲区需求。

  • 回退 n 帧协议(Go-Back-N, GBN):接收方只按序接收,若收到失序帧则丢弃,且不发送 ACK。发送方超时后从第一个丢失帧开始重传之后所有帧。
    窗口大小限制:发送窗口 ≤ 2^m - 1(m 为序号比特数),否则无法区分新旧帧。
    优缺点:接收方缓存要求低(只需 1 个位置),但重传效率低(一帧错误导致多帧重传)。
  • 选择性重传协议(Selective Repeat, SR):接收方可以缓存所有正确接收但序号不连续的帧,并对每个正确帧单独发送 ACK。发送方仅重传超时的帧。
    窗口大小限制:发送窗口和接收窗口均 ≤ 2^(m-1)。
    优缺点:效率高(只重传错误帧),但需要接收方缓存失序帧,实现更复杂。

本章选择 HDLC 协议、PPP 以及 PPPoE 作为数据链路层的协议实例,通过介绍这三个协议的工作机制,进一步帮助读者理解数据链路层协议在网络体系结构中起到的重要作用。

协议实例解析

  • HDLC(High-Level Data Link Control):面向比特的同步链路层协议,支持点对点和多点链路。使用比特填充(01111110 标志)实现透明传输。提供三种帧类型:信息帧(I)、监控帧(S,用于确认和拒绝)、无编号帧(U,用于链路建立/释放)。帧中包含 3 比特序号,支持滑动窗口。
  • PPP(Point-to-Point Protocol):面向字节的点对点链路协议,广泛用于拨号上网、PPPoE 等。使用字节填充的标志字节(0x7E)。支持多种网络层协议(如 IP、IPX)。封装时包含协议字段,提供 LCP(链路控制协议)建立/配置链路,以及 NCP(网络控制协议)配置网络层参数。
  • PPPoE(PPP over Ethernet):将 PPP 帧封装在以太网帧中,支持以太网上的点对点会话(如宽带拨号)。分为发现阶段(获取对端 MAC 地址和 Session ID)和会话阶段(传输 PPP 帧)。PPPoE 使得 ISP 可以在共享以太网上对每个用户进行身份认证和计费。

局域网与介质访问控制

本章从局域网的拓扑和传输数据方式开始,阐述了局域网中的广播信道和传输带来的问题,由此引出介质访问控制(MAC)子层。MAC 子层是数据链路层的主要部分,局域网主要覆盖了物理层和数据链路层两层的内容。

广播信道与冲突问题

局域网通常采用多路访问广播信道(如总线型、星型),所有节点共享同一信道。当多个节点同时发送时,信号在信道上叠加(冲突),导致数据损坏。解决冲突的方法就是介质访问控制协议。

介质访问控制解决共享信道引发的争用问题,主要有随机访问协议、受控访问协议和有限竞争访问协议三种。

随机访问协议

节点随机发送数据,发生冲突后采取相应恢复机制。

  • 纯 ALOHA:有数据就发,冲突后等待随机时间重传。效率低(最大吞吐量仅 18.4%)。
  • 分槽 ALOHA:将时间划分为时间槽,节点只能在槽开始时刻发送。冲突概率减半,最大吞吐量提高到 36.8%。
  • CSMA(载波侦听多路访问):发送前先侦听信道(“先听后发”)。包括 1-坚持 CSMA(信道空闲立即发)、非坚持 CSMA(空闲则发,否则等待随机时间)和 p-坚持 CSMA(以概率 p 发送)。
  • CSMA/CD(带冲突检测的 CSMA):在 CSMA 基础上增加“边发边听”,一旦检测到冲突立即停止发送并发送阻塞信号,然后随机退避。用于经典以太网(半双工模式)。最小帧长需保证在发送完成前能检测到冲突(对于 10M 以太网,最小帧长 64 字节)。

受控访问协议

无冲突协议,节点通过某种机制轮流使用信道。

  • 位图协议(预留协议):每个竞争周期内,每个节点在自己的比特槽中宣布是否有数据要发,后续按位图顺序轮询发送。
  • 二进制倒计数协议:每个帧发送前,节点以二进制地址竞争信道,地址高的节点优先发送。
  • 令牌传递协议:一个特殊的令牌帧在网络中循环,只有持有令牌的节点才能发送数据。用于令牌环、FDDI。

有限竞争访问协议

结合随机访问(轻载时低延迟)和受控访问(重载时高吞吐量)的优点,如自适应树搜索协议。

以太网是使用最广泛的局域网,本章介绍了经典以太网的物理拓扑和逻辑拓扑介质访问控制方法;经典以太网逐渐过渡到了交换式以太网,冲突域的缩小,提升了网络的性能。

以太网帧格式

以太网数据帧的格式是重要的内容,本章详细介绍了 DIX 以太网数据帧中各个字段的名称和含义,在此基础上介绍 IEEE 802.3 数据帧的不同之处,读者可对比学习。

  • DIX Ethernet II 帧(当前主流):
    • 前导码(7 字节同步 + 1 字节 SFD)
    • 目的 MAC 地址(6 字节)
    • 源 MAC 地址(6 字节)
    • 类型(2 字节,表示上层协议如 0x0800 为 IP)
    • 数据(46–1500 字节)
    • 帧校验序列(FCS,4 字节 CRC32)
  • IEEE 802.3 帧:用“长度”字段代替“类型”字段(2 字节),数据之后增加 LLC(逻辑链路控制)头部。由于实际使用中类型字段更灵活,802.3 帧逐渐被 DIX 替代。

以太网从 10M 经典以太网开始,不断发展,传输速率从 10 Mb/s 到 100 Mb/s(快速以太网),再到 1000 Mb/s(吉比特以太网),后面还有万兆以太网、25 Gb/s、40 Gb/s、100 Gb/s、400 Gb/s,以太网也从局域网的范畴跨入了广域传输的范畴。

交换式以太网与交换机工作原理

数据链路层(L2)交换原理可以用转发、丢弃(过滤)、泛洪和学习 4 个词概括,每个数据帧的到来,促使算法运行以决策执行哪个动作(三选一):学习的全称是逆向地址学习,以建立、更新和维护 MAC 地址表(决策依据),学习每个数据帧,且终身学习。

  • 转发:若目的 MAC 地址在 MAC 地址表中且端口不同于接收端口,将帧从该端口转发出去。
  • 丢弃(过滤):若目的 MAC 地址对应的端口就是接收端口,则丢弃(不转发)。
  • 泛洪:若目的 MAC 地址是广播地址、多播地址或未知单播地址,则向除接收端口外的所有端口转发。
  • 学习:从帧的源 MAC 地址和接收端口学习,将映射写入或刷新 MAC 地址表(老化时间通常 300 秒)。

执行链路层交换的设备主要是交换机,交换机转发数据帧有三种方式:

  • 存储转发交换:完整接收整个帧并检查 FCS 无误后才转发。错误率低,但时延高(取决于帧长)。
  • 直通交换:只查看目的 MAC 地址(前 6 字节)即开始转发。时延最低,但可能转发错误帧或冲突碎片。
  • 无碎片交换:检查前 64 字节(通常错误帧小于 64 字节),无错则转发。出错率和时延介于前两者之间。

广播域与 VLAN

交换机连接起来的网络同在一个物理 LAN,即广播域。大的广播域带来网络性能的下降(广播风暴)和安全问题(任何节点可嗅探广播流量)。虚拟局域网(VLAN)等同于一个广播域,可以切分一个大的物理 LAN 为若干小的 VLAN。

  • VLAN 原理:通过交换机配置将端口分组,不同 VLAN 间的通信必须经过三层路由(通常使用路由器或三层交换机)。
  • VLAN 标记:IEEE 802.1Q 标准在以太网帧中插入 4 字节 VLAN 标签(包含 12 位 VLAN ID),允许多个 VLAN 共享物理链路。
  • 优点:隔离广播域、增强安全性、简化网络管理、灵活控制访问策略。

生成树协议(STP)

为了可靠传输数据帧,交换机之间往往采用多条物理连接,不可避免地形成物理环,从而引发重复帧、MAC 地址表不稳定、广播风暴等严重问题。生成树协议(STP)用于在冗余物理拓扑上产生无环的逻辑树,任意两点之间通达但不产生环。

  • 工作原理:交换机交换 BPDU(桥协议数据单元),选举根桥(Root Bridge),每个非根桥选择到根桥的最短路径端口(根端口),每个网段选择一个指定端口(Designated Port),其余冗余端口被阻塞。
  • 改进:RSTP(快速 STP)实现了快速收敛(秒级→亚秒级),MSTP(多 STP)支持 VLAN 分组。

无线局域网(WLAN)

无线局域网(WLAN)被称为无线以太网,是非常重要的接入网络。本章主要介绍了 IEEE 802.11 系列标准(Wi-Fi)的发展和主要技术特点、介质访问控制方法 CSMA/CA、数据帧格式等。

  • CSMA/CA(冲突避免):由于无线半双工环境下难以边发边听(无法同时检测冲突),采用发送前随机退避(DCF 机制)和可选 RTS/CTS 握手机制减少冲突。
  • 帧格式:包括帧控制(类型/子类型)、Duration/ID、地址 1~4(最多 4 个:目的、源、BSSID、发送/接收端)、序列控制、数据、FCS。
  • Wi-Fi 标准演进:802.11b(11 Mbps)、a/g(54 Mbps)、n(600 Mbps,MIMO)、ac(6.9 Gbps,多用户 MIMO)、ax(Wi-Fi 6,OFDMA)。

蓝牙与物联网无线协议

蓝牙技术是短距离、无线、低功耗通信的成功范例,广泛用于音频流、数据传输、定位服务和设备网络等领域。本章介绍了蓝牙网络的物理构成、蓝牙协议的体系结构和蓝牙帧的格式,还介绍了 ZigBee、6LoWPAN、Z-Wave 等无线协议,重点介绍了在物联网中广为使用的 ZigBee 技术的特点,并对蓝牙、ZigBee 和 Wi-Fi 三种无线连接技术进行了对照。

  • 蓝牙:使用 2.4 GHz ISM 频段,跳频扩频(FHSS),主从结构,支持微微网和散射网。经典蓝牙(BR/EDR)用于音频,低功耗蓝牙(BLE)用于传感器。
  • ZigBee(IEEE 802.15.4):低速率(250 kbps)、低功耗、自组网,适合传感器网络、智能家居。支持星型、树型、网状拓扑。
  • 6LoWPAN:在 IEEE 802.15.4 上传输 IPv6 数据,实现低功耗设备接入互联网。
  • Z-Wave:专有协议(868 MHz/900 MHz),用于智能家居,兼容性好。
技术 速率 功耗 组网能力 典型应用
蓝牙 BLE 1–2 Mbps 极低 星型(主从) 可穿戴、智能锁
ZigBee 250 kbps 网状,数百节点 工业监控、智能照明
Wi-Fi 数十~数千 Mbps 星型,数十节点 互联网接入、视频