CN——数据链路层(上)

3.1 数据链路层概述

3.1.1核心功能

在一段链路上传输帧,向上层网络层提供透明传输帧 的服务。 H1 经由路由器转发到 H2,在数据链路层视角分为多段独立链路(H1-R1、R1-R2、R21-R3、R3-H2),属于逻辑水平通信 ;各段链路可以运行不同协议(以太网、PPP 协议)。

3.1.2相关概念

  • 链路:相邻节点之间一段物理线路,中间无交换节点;

  • 数据链路

    • 基于链路,由链路本身和相关的协议共同构成。

    • 网卡(适配器)及其驱动程序实现链路层协议,网卡同时具备物理层、数据链路层功能。CPU 与存储器生成待发送数据,交付适配器;适配器给数据加上以太网帧首部、尾部,封装成帧,转换成串行比特流发送到局域网。

  • 帧:数据链路层对等实体逻辑通信使用的协议数据单元 PDU。

3.1.3数据链路层三大基本问题

封装成帧

网络层IP分组前加首部、后加尾部,封装为帧。

  • 首部:帧开始符、源链路地址、目的链路地址;

  • 尾部:FCS 帧校验序列、帧结束符。

接收方处理流程: ① 通过帧起始、结束符完成帧定界,从连续比特流区分帧;

② 通过 FCS 检测传输误码; ③ 根据目的地址决定是否接收该帧。

帧格式规定属于协议三要素中的语法 。 为提升传输效率,帧载荷长度应远大于首尾控制字段;协议限定载荷最大长度 MTU(最大传送单元);以太网 MTU=1500 字节。 区分:MTU 属于链路层;MSS 是 TCP 传输层最大报文段载荷长度。

透明传输

含义:上层交付的数据内容不受任何限制,链路层对数据透明。

风险:若载荷内部出现帧定界标记 ,接收方发生帧定界错误。

两种实现方案:

  1. 字节填充(字符填充,面向字节链路,如 PPP 异步链路) 发送方遇见帧定界符,前方插入转义字符 ESC;若数据本身含有 ESC,同样前置 ESC;接收方向上交付前删除额外 ESC。

  2. 比特填充(面向比特同步链路) 发送方遇见连续 5 个比特 1,末尾插入 1 个 0;接收方遇见连续 5 个 1,删除其后跟随的 0。

以太网特殊规则 以太网帧本身无显式帧定界符,不需要字节 / 比特填充。 链路层封装以太网帧向下交付物理层;物理层额外添加 8 字节前导码: 前 7 字节前同步码(接收方时钟同步),最后 1 字节帧开始符。 依靠96 比特帧间间隔区分相邻帧(10M 以太网对应 9.6μs),无需帧结束符。

差错检测

真实信道存在失真,会产生误码,依靠校验码实现检错 / 纠错。 校验码由原始数据 + 冗余校验数据构成,冗余信息带来额外开销;出现误码会破坏编码规则,接收方能够识别。

码距(海明距离)

码距:两个等长二进制编码相异比特的数量。

编码集最小码距:集合内任意两个编码码距的最小值。

  • 最小码距 d=1:无检错能力;

  • 最小码距 d=2:可以检测 1 位误码。

核心结论:最小码距决定检错、纠错能力;增大码距需要增加冗余比特,提升开销。

码距 d、可检错数 e、可纠错数 t 关系
奇偶校验

原始数据增加 1 位校验位,使 1 的总数保持奇数 / 偶数。 特性:最小码距 d=2;可以检出 1 位误码,无法纠错 ;出现 2 位误码无法检测。

海明校验

基于多组奇偶校验,既检错又纠错。

约束公式:,R = 校验位;

数据位越长编码效率越高;多用于内存单比特错误纠错。

规则:校验位放置在编号为 位置;数据位位置编号拆分为 2 的幂之和,归入对应校验组。

海明校验实例

原始数据 4 位:D₄ D₃ D₂ D₁ = 1 0 1 1,采用偶校验,求解完整海明校验码,并演示纠错过程。

海明码位置序号 1(P₁) 2 3(D₄) 4 5(D₃) 6(D₂) 7(D₁)
码位类型 P₁(校验位) P₂(校验位) D₄(数据位) P₃(校验位) D₃(数据位) D₂(数据位) D₁(数据位)
位置二进制编号 001 010 011 100 101 110 111
P₁校验组(第1位为1) ✅ ❌ ✅ ❌ ✅ ❌ ✅
P₂校验组(第2位为1) ❌ ✅ ✅ ❌ ❌ ✅ ✅
P₃校验组(第3位为1) ❌ ❌ ❌ ✅ ✅ ✅ ✅
CRC 循环冗余校验(链路层主流)

网络差错大多为突发性多比特误码,CRC 对此检测效果好、开销小;

海明校验适合单比特纠错(内存场景)。链路层使用 CRC 检错,配合重传实现可靠传输。

运算规则:模二运算(等价异或,无进位、无借位)。

构建 CRC 校验码步骤:

接收方校验:收到的校验码模二除以;余数≠0 代表存在误码。 注意:CRC校验与FCS生成 由硬件高速完成。

3.2 可靠传输基础与三大 ARQ 协议

差错检测仅能发现错误,后续处理方式取决于链路层服务类型:

  • 不可靠传输:出错帧直接丢弃,不采取补救措施;有线链路误码率低常采用;

  • 可靠传输:通过机制保证接收方最终收到正确帧;无线链路误码高常需要。

传输差错不止比特误码,还包括:帧丢失、帧失序、帧重复;可靠传输并非链路层独有,多层均可实现。 三类 ARQ 自动重传请求协议:停止等待、回退 N 帧 GBN、选择重传 SR。

1. 停止等待协议 Stop-and-Wait

发送一帧后暂停,等待接收方反馈。 基础流程:无错返回 ACK;出错返回 NAK。

缺陷:帧、ACK、NAK 丢失时协议失效;引入超时重传解决。 优化方案:增加超时重传后可舍弃 NAK,协议更简洁;NAK 优势是提前触发重传。

1.解决帧重复

帧携带序号;停止等待仅需 1 比特序号(0、1)。 接收方收到重复序号帧:丢弃重复帧,依旧回复 ACK。

2.缓存机制

发送方发送帧后保留副本,收到 ACK 才可删除。

3.信道利用率

适用特点:卫星链路 RTT 极大,利用率很低,不适合;无线局域网 RTT 远小于发送时延,表现尚可。

2. 流水线传输

无需等待 ACK,可以连续发送多个帧;不能无限发送,因此引入滑动窗口机制。

3.回退 N 帧 GBN(Go-Back-N)

发送窗口:窗口内序号帧可连续发送;接收窗口 。

采用累计确认:ACK N 代表 N 及之前所有帧全部正确接收。

窗口约束(n = 序号比特数)目的:防止新旧帧混淆。

工作特点:一旦某一帧出错,该帧后续所有已发送帧全部重传(协议名称由来)。

性能:无差错时信道利用率很高;信道质量差、误码多时,大量重传,效率可能低于停止等待。

4. 选择重传 SR Selective Repeat

目标:只重传出错帧。

条件:接收窗口 ,接收方缓存失序但无差错、序号落在窗口内的帧;

不使用累计确认,采用逐个确认。 窗口约束:。 可配合 NAK 分组,收到 NAK 立刻重传,不必等待超时。

性能对比: 理想无差错时,GBN 与 SR 理论最大利用率相同;存在误码时 SR 性能远优于 GBN;停止等待利用率最低。

3.3 PPP 点对点协议

3.3.1典型应用

  1. 因特网用户的计算机通过点对点协议接入到某个 ISP,进而接入到因特网。用户计算机与 ISP 所采用的数据链路层协议一般就是 PPP 协议。

  2. 广泛用于广域网路由器之间的专用线路。

3.3.2PPP 三大组成

  1. LCP 链路控制协议:链路建立、配置、测试、释放;

  2. 网络层 PDU 串行链路封装方式,载荷长度受 MTU 限制(默认 1500 字节);同时支持异步面向字节链路、同步面向比特链路;

  3. NCP 网络控制协议:一组子协议,分别协商配置不同网络层协议(IPCP 用于 IPv4)。

3.3.3PPP 帧关键字段

  1. 标志字段 F(0x7E):帧定界符;相邻帧可共用一个 F;连续两个 F 为空帧,丢弃。

  2. 协议字段: 0x0021 IPv4 报文;0xC021 LCP 分组;0x8021 IPCP 分组(NCP)

  3. FCS 字段:CRC 校验;运算范围:地址字段至信息字段。 执行顺序:发送方先算 FCS,再填充;接收方先去除填充,再校验 FCS。

3.3.4PPP 透明传输实现

  1. 异步链路(字节填充)

    需要填充的字符类型 原始数据载荷 字节填充后发送内容
    ① 帧界定符 0x7E 0x7E 0x7D 0x5E
    ② 转义符 0x7D 0x7D 0x7D 0x5D
    ③ 控制字符(例:0x01) 0x01 0x7D 0x21
    普通字符(无需填充:0x20及以上非特殊字符) 0x30 0x30
  2. 同步链路(零比特填充) 发送方遇见连续 5 个比特 1,后面插入 0;接收方删除该额外 0。

3.3.5PPP 协议工作状态(以 PC 拨号接入 ISP 为例)

  1. PPP 链路初始与最终状态均为链路静止(Link Dead)。此时用户主机与 ISP 拨号服务器之间不存在物理层连接。

  2. ISP 拨号服务器检测到主机经由调制解调器发来的载波信号,建立物理连接后,PPP 进入链路建立状态(Link Establishment)。

    1. 协商成功:进入鉴别状态(Authentication);

    2. 协商失败:退回链路静止状态。

  3. 进行鉴别

    1. 无需身份鉴别,或身份鉴别成功:进入网络层协议状态(Network Layer Protocol);

    2. 身份鉴别失败:直接进入链路终止状态。

  4. 网络层协议状态:通信双方交互对应 NCP 分组,完成网络层参数配置(如 IPCP 协商 IPv4 地址)。 NCP 配置完成,链路进入打开状态(Open),两端可以正常传输数据帧。

  5. 当链路发生故障,或任意一端发送链路终止请求时,进入链路终止状态;载波信号断开之后,链路回到链路静止状态,一次 PPP 会话结束。

相关推荐
La Pulga10 小时前
【FreeRTOS源码学习笔记】任务延时列表
笔记·mcu·学习·嵌入式·freertos·实时操作系统
Peter-OK15 小时前
PostgreSQL学习笔记(入门-进阶-精通说明)
笔记·学习·postgresql
承渊政道16 小时前
Linux网络学习【Reactor反应堆模式】
linux·网络·学习·ubuntu·reactor
成都蜀味缘餐饮技术培训学校17 小时前
手撕烤兔技术培训实战指南,秘制腌料配方比例与调制手法
大数据·经验分享·笔记·其他·微信公众平台
希和202718 小时前
免费AI视频生成工具汇总(国内优先,适合做漫剧、短视频,Obsidian笔记版)
人工智能·笔记·音视频
蒸蒸yyyyzwd19 小时前
秋招学习笔记 day109
笔记·八股
爱和冰阔落20 小时前
【Linux网络】TCP 服务器如何并发处理多个客户端?从 fork、僵尸进程到双重 fork
linux·运维·服务器·网络
严肃小白兔21 小时前
Cloudflare 更新 API Token 管理:从最小权限到自动化凭据安全
网络·安全·自动化
只愿云淡风清1 天前
正则表达式学习笔记 02:基础语法
笔记·学习·正则表达式
希和20271 天前
考研英语阅读词汇笔记|城市野径、抄近道步道(非正式小路)
笔记·考研