当前位置: 首页 > news >正文

计算机网络笔记(十四)——3.1数据链路层的几个共同问题

3.1.1数据链路和帧

数据链路层中的“数据链路”和“帧”是计算机网络的核心概念。

一、数据链路的基本概念

1. 链路 vs 数据链路

  • 物理链路(链路):从一个节点到相邻节点的物理线路(双绞线、光纤等),只提供原始比特流传输能力。
  • 数据链路:在物理链路上增加了通信协议(如成帧、差错控制等),形成能够逻辑传输数据的通道。

2. 数据链路层需要解决的问题

  • 封装成帧:将网络层的数据打包为帧(Frame)。
  • 透明传输:确保任意数据的传输不受特殊字符干扰。
  • 差错控制:检测传输中的比特错误。

二、帧(Frame)

1. 帧的组成

帧由三部分组成:

  • 帧头:包含源/目的地址、控制信息(如帧类型)。
  • 数据部分:网络层传递的分组(Payload)。
  • 帧尾:帧校验序列(如CRC)和帧结束标识。

在这里插入图片描述

2. 帧的定界

通过特殊标识符(如SOHEOT)或比特填充实现帧的起点和终点识别。

三、数据链路的三个关键问题

1. 封装成帧

将比特流分割为固定大小或可变长的帧,添加控制信息:

在这里插入图片描述

2. 透明传输

避免数据中出现与帧定界符相同的字符,解决方案:

  • 字节填充:在特殊字符前插入转义字符(如PPP协议)。

    示例:原始数据中的0x7E→填充为0x7D 0x5E

3. 差错检测

使用循环冗余校验(CRC)检测比特错误:

在这里插入图片描述

四、帧传输图解

点对点通信的帧传输流程

在这里插入图片描述

五、关键概念对比

概念物理链路(物理层)数据链路(数据链路层)
功能传输比特流逻辑通道建立、帧传输
组成电缆、接口卡硬件 + 协议(如以太网、PPP)
错误处理不处理错误检测错误(如CRC但不一定纠正)

六、思考题

  1. 若数据中出现与帧定界符相同的比特流,如何解决传输透明性问题?
  2. 为何CRC校验不能保证100%检测错误?举出反例。

通过理解帧封装、透明传输和差错检测,可以掌握数据链路层的核心功能。

3.1.2三个基本问题

数据链路层的核心功能是为网络层提供可靠的点对点或点对多点数据传输服务

一、封装成帧(Framing)

作用:为网络层传递的 IP 数据报添加首部和尾部,形成可识别的帧。

核心要点

  1. 帧定界:通过首部和尾部的特殊标记(如 01111110)标识帧的起止。
  2. MTU(最大传输单元):帧的数据部分长度上限,超过需分片。
  3. 结构
    • 首部:包含控制信息(如目的地址、源地址、协议类型)。
    • 尾部:包含差错检测码(如 CRC)。

流程图示例(封装成帧)

在这里插入图片描述

帧结构图示
在这里插入图片描述

二、透明传输(Transparent Transmission)

作用:保证任意字符的传输,避免数据中的特殊字符被误认为帧边界。

核心方法

  1. 字节填充(例:PPP协议):
    • 遇到 0x7E(帧定界符)时,转义为 0x7D 0x5E
    • 遇到 0x7D(转义符)时,转义为 0x7D 0x5D

示例

原始数据A B <ESC> 7E C D
处理后A B <ESC> 7D 5E C D

透明传输流程图

在这里插入图片描述

三、差错检测(Error Detection)

作用:检测传输过程中是否发生比特错误(如 0→1 或 1→0)。

常用方法

  1. CRC(循环冗余校验)
    • 发送方:生成冗余码(帧校验序列 FCS)附加到数据后。
    • 接收方:重新计算 CRC,与 FCS 比对判断错误。

CRC算法流程

在这里插入图片描述

局限性

  • 只能检测错误,无法纠错(纠错需更高层协议处理)。
  • 可能漏检极低概率的同一位错误组合。

总结

基本问题核心方法关键目的
封装成帧添加首部/尾部,定义 MTU识别帧边界,控制传输
透明传输转义特殊字符(如字节填充)传输任意数据无歧义
差错检测CRC校验和算法检测比特错误

综合流程图

在这里插入图片描述

相关文章:

  • 03.使用spring-ai玩转MCP
  • ALTER TABLE 删除DROP表列的报错: 因为有一个或多个对象访问此列
  • 4.27 JavaScript核心语法+事件监听
  • 如何通过git删除某个文件的历史提交记录
  • 类-python
  • FISCO BCOS 智能合约开发详解
  • AlexNet网络搭建
  • 麒麟系统通过 Service 启动 JAR 包的完整指南
  • Lua 第12部分 日期和时间
  • Maven概述
  • 使用 Playwright 构建高效爬虫:原理、实战与最佳实践
  • Netfilter 与struct nf_hook_ops 相关
  • C++?动态内存管理!!!
  • Taro on Harmony :助力业务高效开发纯血鸿蒙应用
  • 【数据挖掘】时间序列预测-常用序列预测模型
  • I-CON: A Unifying Framework for Representation Learning
  • 23种设计模式-行为型模式之命令模式(Java版本)
  • 从零实现分布式WebSocket组件:设计模式深度实践指南
  • 【Linux网络与网络编程】13.五种 IO 模型
  • Zookeeper HA集群搭建
  • 国务院任免国家工作人员:饶权任国家文物局局长
  • 马上评丨机械停车库成“僵尸库”,设计不能闭门造车
  • 五一假期“热潮”来袭,计划南下的小伙伴注意了
  • 多家媒体及网红走进云南曲靖沾益:感受珠江源头
  • 云南鲁甸县一河滩突然涨水致4死,有人在救人过程中遇难
  • 上海车展的“老头乐”,又升级了