【计算机网络 | 第七篇】数据链路层及三个基本问题

文章目录

3.1 数据链路层概述

在计算机网络体系结构中,数据链路层主要研究在同一个局域网中,分组怎样从一台主机传送到另一台主机(或路由器),但更主要的是研究在同一个局域网中,分组怎样从一个节点传送到相邻节点。

数据链路层的信道类型

数据链路层使用的信道主要归纳为以下两种类型:

  1. 点对点信道:这种信道使用一对一的点对点通信方式。
  2. 广播信道 :这种信道使用一对多的广播通信方式。由于广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送。

数据链路层的简单模型

在数据传输过程中,数据在不同层次间流动。从物理层面看,数据经过了多个中间节点(路由器);但从数据链路层的逻辑层面看,通信主要关注的是相邻节点之间的链路。

当主机 H 1 H_1 H1 向 H 2 H_2 H2 发送数据时,虽然中间经过了复杂的网络拓扑,但在数据链路层看来,可以将其抽象为在一段段独立的链路上进行传输。


3.2 数据链路和帧

链路与数据链路的区别

在技术定义上,"链路"与"数据链路"是两个不同的概念:

  • 链路:指从一个节点到相邻节点的一段物理线路(有线或无线),中间没有任何其他的交换节点。这是一条无源的点到点的物理线路段。
  • 数据链路:在物理线路(链路)的基础上,必须增加控制数据传输的通信协议(硬件和软件)来实现通信,这就构成了数据链路。

目前最常用的实现方法是使用网络适配器( 即网卡)来实现这些协议的硬件和软件。一般的适配器都包括了数据链路层和物理层这两层的功能。

  • 也有人采用另外的术语。这就是把链路分为物理链路和逻辑链路。
  • 物理链路 就是上面所说的链路
  • 逻辑链路 就是上面的数据链路,是物理链路加上必要的通信协议。
  • 早期的数据通信协议曾叫做通信规程 (procedure)。因此在数据链路层,规程和协议是同义语。

数据链路层传送的数据单位是:Frame

数据链路层把网络层交下来的数据(IP 数据报)封装成帧发送。我们可以将数据链路层抽象为一个数字管道 ,数据以帧为单位在这条逻辑管道上进行传输。

数据链路层不必考虑物理层如何实现比特传输的细节,甚至可以简单地假设数据是沿着两个数据链路层之间的水平方向直接发送到对方的。


3.1.2 数据链路层的三个基本问题

尽管数据链路层的协议种类繁多,但它们都需要解决三个共同的基本问题:封装成帧透明传输差错检测

1. 封装成帧

封装成帧是指在一段数据的前后分别添加首部和尾部,从而构成一个完整的帧。

  • 帧定界 :首部和尾部的一个重要作用是进行帧定界(确定帧的界限)。接收端在收到物理层上交的比特流后,通过首部和尾部的标记来识别帧的开始和结束。
  • 帧长限制 :为了提高传输效率和避免垄断信道,数据链路层通常限制帧的数据部分长度上限,称为最大传送单元 MTU,Maximum Transfer Unit。

eg.在 Ubuntu 上查看所有网卡的MTU:

用帧首部和帧尾部封装成帧:

控制字符定界法

当数据是由可打印的 ASCII 码组成的文本文件时,可以使用特殊的控制字符作为帧定界符。

  • SOH (Start Of Header) :十六进制编码为 01,放在一帧的最前面,表示帧的开始。
  • EOT (End Of Transmission) :十六进制编码为 04,放在一帧的结束,表示帧的结束。

2. 透明传输

透明传输是指无论发送什么样的比特组合,数据链路层都能够按照原样正确地传输,而不会因为数据中出现了与控制字符相同的编码而导致误判。

问题产生

如果数据中的某个字节的二进制代码恰好和 SOH 或 EOT 一样,数据链路层就会错误地"找到帧的边界",导致部分数据被丢弃或误识别。

解决方法:字节填充 (Byte Stuffing)

为了解决上述问题,通常采用字节填充(或字符填充)的方法:

  1. 发送端在数据中出现的控制字符(如 SOH 或 EOT)前面插入一个转义字符 ESC (十六进制 1B)。
  2. 如果数据中本身也出现了转义字符 ESC,则在 ESC 前面再插入一个 ESC。
  3. 接收端在收到数据后,根据转义字符将填充的 ESC 删除,还原出原始数据。

通过这种方式,数据链路层实现了对任意数据的透明传输。

3. 差错检测

在通信链路上传输信号时,信号可能会受到各种干扰。

  • 比特差错:传输过程中,1 可能会变成 0,0 也可能变成 1。
  • 误码率:在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率。误码率与信噪比有很大的关系。

为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。目前在数据链路层广泛使用的是循环冗余检验 CRC 等技术。

下一章节:循环冗余校验 CRC 等技术

相关推荐
caimouse7 小时前
TDI (传输驱动接口 Transport Driver Interface) 详细分析
网络协议
weixin_446260858 小时前
从被动镜像到主动智能体:面向网络物理人工智能的整体论数字孪生(HDT-Net)
网络·人工智能
ZJH__GO8 小时前
网络编程v4pro--实现聊天室文件传输功能
java·服务器·网络·计算机网络
shengnan_wsn10 小时前
【协议】【TCP】
网络·网络协议·tcp/ip
烟雨江南78511 小时前
2026汽车制造与新能源整车柔性产线Agentic-Workflow白皮书:跨APS_MES_ERP多智能体动态排产与装配容错实战
大数据·网络·人工智能·自动化·ai客服·企业agent
小僧景贤11 小时前
CAN调试全套配件+详细实操使用方法(从零排查、步骤落地、现场通用)
网络·can通信·嵌入式通信
消失的旧时光-194311 小时前
第 3 篇:机器人 TCP 长连接如何稳定运行?心跳、掉线检测与自动重连
网络协议·tcp/ip·机器人
迪康Defender12 小时前
从静态存储到动态流转:终端透明加密两种模式实战解析
运维·服务器·网络·数据库·其他
振浩微433射频芯片12 小时前
用TU2303B双向无线模块打通标准化智能家居接入:433MHz方案的落地优势指南
服务器·网络·人工智能
不弃君13 小时前
在 Windows 上用 MinGW 搭建 lwIP 调试环境:方法与踩坑实录
windows·网络协议·tcp/ip·嵌入式·mingw·lwip