第3章 链路层边界:帧结构分隔、地址分配规则、重传策略归属

3.1 边界定义

链路层是设备接入协议中物理传输与网络逻辑之间的“分水岭”。其边界核心在于:帧结构分隔界定数据包在媒介上的封装格式;地址分配规则区分设备在本地链路上的唯一标识;重传策略归属决定当帧传输失败时由哪一层负责恢复。这三者共同构成链路层与其他层(物理层、网络层)的契约边界。

边界维度含义典型协议示例
帧结构分隔定义帧头、载荷、帧尾的分界字段与最大长度Ethernet II、PPP、HDLC
地址分配规则本地唯一地址(如MAC)的编码、获取、冲突解决MAC-48、EUI-64、LLDP
重传策略归属链路层提供ACK/NACK/超时重传,还是交由上层处理Wi-Fi ARQ、LoRaWAN Class A
判断准则:若某功能依赖于物理媒介特性(如碰撞检测、定时器精度),则应划归链路层;若依赖于全局路由拓扑,则划归上层。

3.2 分层设计

按OSI与TCP/IP模型,链路层位于物理层之上、网络层之下。其分层设计需明确:帧格式应符合设备总线或射频的MTU约束;地址空间应独立于IP地址,避免地址冲突传播;重传机制应只覆盖本段链路,不跨越路由节点。

  • 帧结构分隔层:包含前导码、定界符、源/目的地址、类型/长度、数据、FCS。分隔点定在“FCS之后”即帧结束。
  • 地址分配子层:静态分配(烧录MAC)、动态分配(ARP / DHCP / SLAAC辅助)需在链路层完成MAC地址绑定。
  • 重传控制子层:提供链路层确认(如Wi-Fi Block ACK)或选择放弃重传(如UDP桥接场景)。

3.3 组件职责

组件职责输入输出
帧封装器添加头部与尾部,计算FCS网络层数据包 + 目标MAC完整帧(字节流)
地址解析模块维护MAC地址表,应答地址查询(ARP)IP-MAC映射请求目标MAC地址 / 广播
重传计时器管理发送窗口与超时,触发帧重发帧发送事件 + ACK/NACK重发指令 / 丢弃上报
媒介访问控制控制发送时机(CSMA/CA或轮询)帧就绪信号 + 媒介状态发送许可 / 退避
设计要点:帧封装器不应介入地址分配逻辑;重传计时器不应感知上层协议类型。组件间通过严格接口通信,保证边界清晰。

3.4 数据流 / 控制流 / 信任链路

典型数据流路径:应用数据 → 网络层 → 链路层帧封装 → 物理层发送 → 对端物理层接收 → 链路层帧解封 → 网络层 → 应用。控制流主要包括地址解析请求与重传确认。信任链路在于FCS校验与地址白名单过滤。

  1. 数据流:网络层交出完整IP包,链路层添加帧头(含MAC地址)、帧尾(FCS),经过媒介传递后对端校验并剥离。
  2. 控制流:源端发送ARP请求广播 → 目标单播响应 → 源端更新本地ARP缓存;重传控制器根据超时/ACK状态发送控制帧。
  3. 信任链路:帧校验失败立即丢弃;MAC地址白名单过滤非授权设备;重传计数器防止重放攻击。
常见陷阱:将重传策略归属到上层会导致同一链路出现多次重复传输浪费带宽;将地址分配规则混入物理层会破坏媒介无关性。

3.5 选型权衡

决策点选项A(链路层负责)选项B(上层负责)适用场景
重传策略归属硬件实现ACK超时重传(低延迟)应用层自定义重传机制(灵活)实时控制选用A;易变网络选用B
地址分配方式静态MAC + 本地冲突检测DHCP + IP地址动态分配固定设备用A;移动设备用B
帧结构分隔粒度固定帧长(简单,可能浪费)可变帧长(高效,需定界)传感器小数据用A;大数据流用B

3.6 风险点

  • 帧结构分隔歧义:当FCS校验失败时,无法区分帧头损坏还是帧尾截断,导致帧同步丢失。
  • 地址冲突:同一网段两个设备使用相同MAC,造成链路层转发混乱。
  • 重传风暴:链路层重传与上层重传同时开启,引发指数级重复帧。
  • 信任链路断层:仅依赖FCS但不做地址验证,可能引入帧注入攻击。
缓解措施:帧结构中增加定界符校验;地址分配采用EUI-64保证全局唯一;重传策略通过配置明确“链路层最多重传3次,之后交给上层处理”。

3.7 落地步骤

  1. 定义帧格式:确认帧头长度(固定或可变)、FCS算法(CRC-16/CRC-32)、MTU上限。
  2. 选择地址分配规则:静态MAC(烧录)或动态(LLDP / ARP),并编写地址冲突检测机制。
  3. 实现重传引擎:设置计时器超时值(通常RTT×2),维护发送队列与重试计数器。
  4. 集成媒介访问控制:根据物理层类型(以太网CSMA/CD、Wi-Fi CSMA/CA、RS485轮询)对接发送许可逻辑。
  5. 编写解帧与校验逻辑:逐字段解析,校验FCS,丢弃无效帧并记录统计。
  6. 测试边界条件:帧长度接近MTU、地址冲突模拟、重传超时与丢弃。
// 帧结构定义示例(C伪代码)
typedef struct {
    uint8_t  dest_addr[6];   // 目标MAC
    uint8_t  src_addr[6];    // 源MAC
    uint16_t type;           // EtherType
    uint8_t  payload[MTU];   // 载荷
    uint32_t fcs;            // 帧校验序列
} eth_frame_t;

// 重传策略参数配置
#define MAX_RETRANSMIT   3
#define ACK_TIMEOUT_MS   50

3.8 验收标准

验收项预期结果测试方法
帧结构分隔任意噪声帧自动丢弃,定界符正确时完整还原注入错位字节后验证帧同步恢复
地址分配规则同一链路内MAC无冲突,广播时所有设备响应使用ARP扫描并记录重复地址
重传策略归属丢帧后链路层最多重传N次,N次仍失败则通知上层关闭对端接收,观察重传计数器
信任链路完整性FCS校验失败帧100%丢弃,白名单过滤非授权MAC发送篡改帧与伪造源MAC帧
验收工具:使用Wireshark抓取链路层帧,检查帧结构、地址、重传行为是否符合协议规范;同时编写单元测试脚本模拟所有边界条件。
链路层边界三维度概念图 帧结构分隔 地址分配规则 重传策略归属 前导码+定界符 源/目的地址 类型/长度+载荷 FCS校验 静态MAC烧录 动态ARP/DHCP 冲突检测与告警 白名单/ACL过滤 ACK/NACK确认 超时重发逻辑 重试计数器 失败上报上层 每个边界维度独立演化,但帧结构中的地址字段与重传ACK必须协同设计