一周学完计算机网络之三:1、数据链路层概述
简单的概述
数据链路层是计算机网络体系结构中的第二层,它在物理层提供的基本服务基础上,负责将数据从一个节点可靠地传输到相邻节点。可以将其想象成一个负责在两个相邻的网络设备之间进行数据 “搬运” 和 “整理” 的 “快递中转站”。
几个重要概念:
- 帧:封装成帧是指数据链路层给上层交付的协议数据单元添加帧头和帧尾使之成为帧。通俗的来说就是:网络层传递给数据链路层的数据,会被分割成大小不一的数据“包裹”,这个数据会被插入帧头和帧尾,构成数据帧。
- 帧头和帧尾:帧里面包括了目的地址,就是让目的主机通过帧的这个地址知道这个信息是发送给自己的。此外还包含标志位,比如PPP帧格式中就有标志位来进行帧的定界(两个帧之间的数据边界)。
-
**帧定界:**如果帧头和帧尾的标志位,如何区分边界呢?比如以太网V2的MAC帧。
-
以太网V2的MAC帧,会在帧中插入8个字节(64比特)的前导码,前导码由 7 个字节的前同步码和 1 个字节的即帧开始定界符,SFD组成,总共 8 个字节。它位于 MAC 帧的最前端,在物理层传输时,会先于目的地址、源地址等其他字段被发送出去。作用主要有二:
- 时钟同步:以太网中数据的传输是基于时钟信号的,发送方按照自己的时钟节奏发送数据,接收方需要与发送方的时钟保持同步,才能准确地接收和解析数据。
- 帧起始标识:最后的(SFD)作为帧开始定界符,用于标识 MAC 帧的正式开始。接收方在检测到 SFD 后,就知道接下来的比特流是一个 MAC 帧的数据部分,从而开始对帧进行解析和处理。
-
-
可靠传输:就是能够实现,发送方发的数据,和接收方接受的数据完全一样,不能有任何丢失或者错误。需要用到差错检测、确认与重传、序号与排序的技术手段。这种传输方法的成本会比较高。
- 差错检测:发送方在数据中加入一些冗余信息,如校验和、循环冗余校验(CRC)码等。接收方通过对收到的数据进行相应的计算,来检查数据在传输过程中是否发生了错误。例如,若计算出的 CRC 码与收到的 CRC 码不一致,就知道数据出现了差错。
- 确认与重传:接收方收到数据后,会向发送方发送确认信息(ACK),告知发送方数据已正确接收。如果发送方在一定时间内没有收到接收方的确认信息,或者收到了否定确认信息(NAK),就会认为数据传输出现了问题,然后重新发送数据。这种自动重传请求(ARQ)机制可以有效地解决数据丢失或出错的问题。
- 序号与排序:为了保证数据的顺序性,发送方会给每个数据分组加上一个序号。接收方根据序号对收到的数据进行排序,将乱序的数据调整到正确的顺序后再提交给上层应用。
-
透明传输:用这种前导码的形式来区分帧,如果帧里面的数据和这个帧定界一样的时候,接收数据的时候,就会把这个数据误认为是帧定界来处理。容易引发误判。解决方法就是使用透明传输,实现方法就是如下方法:
- 字节填充:当数据中出现与帧定界符相同的字节时,为了避免接收方将其误认为是帧的边界,发送方会在该字节前面插入一个转义字节。接收方收到数据后,会自动删除这个转义字节,恢复数据的原样。例如,下面这种情况:(ESC表示转义字符)
但是有的时候,转义字符就是数据本身怎么搞,因此就在转义字符前面也加入一个转义字符。
- 比特填充:在一些数据链路层协议中,如 HDLC 协议,采用比特填充的方式来实现透明传输。当数据中出现连续的若干个 1(通常是 5 个 1)时,发送方会在其后插入一个 0。接收方收到数据后,会自动删除这些插入的 0,从而保证数据的透明传输。
-
差错检测:检验码会被封装在帧尾,比如图片中的FCS就是。发送方把数据送到接收方以后,可以根据这个来判断是否有误码(就是本来是0变成1,本来是1变成了0)。
-
奇偶校验:奇偶校验法是根据被传输数据中 “1” 的个数的奇偶性来进行校验的。具体来说,在发送数据时,会在数据后面添加一个奇偶校验位,使得整个数据(包括校验位)中 “1” 的个数为奇数或偶数。接收方收到数据后,会根据事先约定的奇偶性规则来检查 “1” 的个数,如果 “1” 的个数不符合约定的奇偶性,则认为数据在传输过程中出现了错误。
缺点是,无法识别出偶数位的比特误码情况。而且只能检验,不能纠错。
-
循环冗余校验CRC:CRC 的基本原理是将待传输的数据比特序列看作是一个多项式的系数,通过特定的生成多项式对这个多项式进行除法运算,得到的余数作为校验码附加在数据后面一起传输。接收方收到数据后,用同样的生成多项式对收到的数据进行除法运算,如果余数为零,则认为数据传输正确;否则,说明数据在传输过程中出现了错误。
-
- 确定生成多项式:生成多项式是一个预先选定的二进制多项式,通常用 G ( x ) G(x) G(x) 表示。不同的应用场景会使用不同的生成多项式,例如,在以太网中常用的生成多项式是 G ( x ) = x 32 + x 26 + x 23 + x 22 + x 16 + x 12 + x 11 + x 10 + x 8 + x 7 + x 5 + x 4 + x 2 + x + 1 G(x)=x^{32}+x^{26}+x^{23}+x^{22}+x^{16}+x^{12}+x^{11}+x^{10}+x^8+x^7+x^5+x^4+x^2+x+1 G(x)=x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1。
- 在数据后面添加 n 个零:n 是生成多项式$ G(x)$ 的最高次数。例如,对于上述以太网中的生成多项式, n = 32 n = 32 n=32。假设待传输的数据为 D ( x ) D(x) D(x),将 D ( x ) D(x) D(x)左移 n 位,即相当于在数据后面添加 n 个零,得到 D ( x ) × x n D(x) \times x^n D(x)×xn。
- 进行模二除法:用 D ( x ) × x n D(x) \times x^n D(x)×xn 除以生成多项式 G ( x ) G(x) G(x),得到的余数 R ( x ) R(x) R(x) 就是 CRC 校验码。这里的除法是模二除法,即采用异或运算进行减法,不考虑借位。
- 附加校验码:将得到的 CRC 校验码 R ( x ) R(x) R(x) 附加在原始数据 D ( x ) D(x) D(x) 的后面,形成最终要传输的数据帧 T ( x ) = D ( x ) × x n + R ( x ) T(x)=D(x) \times x^n + R(x) T(x)=D(x)×xn+R(x)。
相关文章:

一周学完计算机网络之三:1、数据链路层概述
简单的概述 数据链路层是计算机网络体系结构中的第二层,它在物理层提供的基本服务基础上,负责将数据从一个节点可靠地传输到相邻节点。可以将其想象成一个负责在两个相邻的网络设备之间进行数据 “搬运” 和 “整理” 的 “快递中转站”。 几个重要概念…...
网卡网孔速率的协商是如何进行的?
网卡与交换机等网络设备之间的速率协商主要通过**自动协商(Auto-Negotiation)**机制实现,其核心是物理层(PHY)芯片之间的信息交互。以下是协商过程的详细解析: 一、自动协商的核心流程 1. 发送配置帧&am…...

单片机-STM32部分:13-1、蜂鸣器
飞书文档https://x509p6c8to.feishu.cn/wiki/V8rpwIlYIiEuXLkUljTcXWiKnSc 一、应用场景 大部分的电子产品、家电(风扇、空调、电水壶)都会有蜂鸣器,用于提示设备的工作状态 二、原理 蜂鸣器是一种将电信号转换为声音信号的器件࿰…...

动态IP技术赋能业务创新:解锁企业数字化转型新维度
在数字经济高速发展的今天,IP地址已不再是简单的网络标识符,而是演变为支撑企业数字化转型的核心基础设施之一。动态IP技术凭借其灵活、高效、安全的特性,正在重塑传统业务模式,催生出诸多创新应用场景。本文将深入剖析动态IP的技…...
使用Python删除PDF中多余或空白的页面
目录 为什么需要删除 PDF 中的多余或空白页面? 所需工具 环境准备 如何使用Python删除PDF中的多余页面 实现思路 详细实现步骤 实现代码 如何使用Python检测并删除PDF中的空白页 实现思路 详细实现步骤 实现代码 在处理 PDF 文件时,常常会遇到…...
英语复习笔记 1
前言 我们知道英语最重要就是单词和阅读理解,因为时间安排和自己懒惰的原因,英语复习实际上进行得非常缓慢。实际上英语复习得比较少,但是我想考一个高分,这样下去肯定是废掉了。所以从今天开始我要好好复习英语。之前有个大佬说…...
UART16550 IP core笔记二
XIN时钟 表示use external clk for baud rate选型,IP核会出现Xin时钟引脚 XIN输入被外部驱动,也就是外部时钟源,那么外部时钟必须要满足特定的要求,就是XIN 的range范围是xin<S_AXI_CLK/2,如果不满足这个条件,那么A…...

TDengine 在金融领域的应用
简介 金融行业正处于数据处理能力革新的关键时期。随着市场数据量的爆炸式增长和复杂性的日益加深,金融机构面临着寻找能够高效处理大规模、高频次以及多样化时序数据的大数据处理系统的迫切需求。这一选择将成为金融机构提高数据处理效率、优化交易响应时间、提高…...

OSCP - Hack The Box - Sau
主要知识点 CVE-2023-27163漏洞利用systemd提权 具体步骤 执行nmap扫描,可以先看一下55555端口 Nmap scan report for 10.10.11.224 Host is up (0.58s latency). Not shown: 65531 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp o…...
大模型的Lora如何训练?
大模型LoRA(Low-Rank Adaptation)训练是一种参数高效的微调方法,通过冻结预训练模型权重并引入低秩矩阵实现轻量化调整。以下是涵盖原理、数据准备、工具、参数设置及优化的全流程指南: 一、LoRA的核心原理 低秩矩阵分解 在原始权重矩阵$ W 旁添加两个低秩矩阵 旁添加两个…...
分词器工作流程和Ik分词器详解
切分词语,normalization 给你一段句子,然后将这段句子拆分成一个一个的单个的单词,同时对每个单词进行 normalization(时态转换,单复数转换),分词器 recall,召回率:搜索的…...

QT6 源(93)篇三:阅读与注释共用体类 QVariant 及其源代码,本类支持比较运算符 ==、!=。
(9) 本类支持比较运算符 、! : 可见, QString 类型里可存储多个 unicode 字符,即使只存储一个 unicode 字符也不等于 QChar。 (10)本源代码来自于头文件 qvariant . h : #ifndef Q…...

Maven私服搭建与登录全攻略
目录 1.背景2.简介3.安装4.启动总结参考文献 1.背景 回顾下maven的构建流程,如果没有私服,我们所需的所有jar包都需要通过maven的中央仓库或者第三方的maven仓库下载到本地,当一个公司或者一个团队所有人都重复的从maven仓库下载jar包&#…...

力扣210(拓扑排序)
210. 课程表 II - 力扣(LeetCode) 这是一道拓扑排序的模板题。简单来说,给出一个有向图,把这个有向图转成线性的排序就叫拓扑排序。如果有向图中有环就没有办法进行拓扑排序了。因此,拓扑排序也是图论中判断有向无环图…...
1.1 文章简介
前因后果链 行业需求 → 技能断层 → 课程设计响应 (高薪岗位要求数学基础) → (符号/公式理解困难) → (聚焦原理与应用) 行业驱动因素 • 前因:机器学习/AI等领域的高薪岗位激增,但数学能力成为主要门槛 • 关键矛盾:算法论文中的数学…...
将本地文件上传到云服务器上
使用 SCP 命令(最常用) # 基本语法 scp [本地文件路径] [用户名][服务器IP]:[目标路径]# 示例:上传单个文件 scp /path/to/local/file.txt root192.168.1.100:/path/to/remote/# 上传整个目录 scp -r /path/to/local/directory root192.168.…...

C++ asio网络编程(5)简单异步echo服务器
上一篇文章:C asio网络编程(4)异步读写操作及注意事项 文章目录 前言一、Session类1.代码2.代码详解3.实现Session类1.构造函数2.handle_read3.介绍一下boost的封装函数和api4.handle_write 二、Server类1.代码2.代码思路详解 三、客户端四、运行截图与流程图 前言 提示&…...

【机器人】复现 UniGoal 具身导航 | 通用零样本目标导航 CVPR 2025
UniGoal的提出了一个通用的零样本目标导航框架,能够统一处理多种类型的导航任务。 支持 对象类别导航、实例图像目标导航和文本目标导航,而无需针对特定任务进行训练或微调。 本文分享UniGoal复现和模型推理的过程~ 查找沙发,模…...
基于大模型预测的吉兰 - 巴雷综合征综合诊疗方案研究报告大纲
目录 一、引言(一)研究背景(二)研究目的与意义二、大模型预测吉兰 - 巴雷综合征的理论基础与技术架构(一)大模型原理概述(二)技术架构设计三、术前预测与手术方案制定(一)术前预测内容(二)手术方案制定依据与策略四、术中监测与麻醉方案调整(一)术中监测指标与数…...

spring中的@PropertySource注解详解
一、核心功能与作用 PropertySource是Spring框架中用于加载外部配置文件的核心注解,主要作用是将属性文件(如.properties、.yml)的键值对加载到Spring的Environment环境中,实现配置与代码的解耦。其核心价值包括: 外部…...
ChromeDriver 技术生态与应用场景深度解析
ChromeDriver 技术生态与应用场景深度解析 随着 Web 自动化测试、运维和数据采集需求的不断增长,ChromeDriver 及其相关技术栈在各行业中扮演着举足轻重的角色。本文将从技术选型、语言适配、典型场景、技术延伸等维度,结合最新行业趋势与实践经验&…...
【NextPilot日志移植】日志写入流程
📝 文件后端日志写入流程详解 当后端选择文件时,日志写入过程主要涉及 LogWriter 和 LogWriterFile 类的协作。以下是详细的日志写入过程解释及涉及的代码: 1. LogWriter 类初始化 在 LogWriter 类的构造函数中,如果配置的后端…...

二极管钳位电路——Multisim电路仿真
目录 二极管钳位电路 2.1 二极管正向钳位电路 二极管压降测试 2.1.1 二极管正向钳位电路图 2.1.2 二极管正向钳位工作原理 2.2 二极管负向钳位电路 2.2.1 二极管负向钳位电路图 2.2.2 二极管负向钳位工作原理 二极管正向反向钳位仿真电路实验结果 2.3 二极管顶部钳位…...
Docker编排工具---Compose的概述及使用
目录 一、Compose工具的概述 二、Compose的常用命令 1、列出容器 2、查看访问日志 3、输出绑定的公共端口 4、重新构建服务 5、启动服务 6、停止服务 7、删除已停止服务的容器 8、创建和启动容器 9、在运行的容器中执行命令 10、指定一个服务启动容器的个数 11、其…...
5.10-套接字通信 - C++
套接字通信 1.1 通信效率问题 服务器端 单线程 / 单进程 无法使用,不支持多客户端 多线程 / 多进程 写程序优先考虑多线程:什么时候考虑多进程? 启动了一个可执行程序 A ,要在 A 中启动一个可执行程序 B 支持多客户端连接 IO 多…...

suricata增加单元测试编译失败
一、环境 $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.5 LTS Release: 22.04 Codename: jammysuricata: suricata7.0.5 IDE: vscode 二、背景 在suricata中开发了某个功能后,增加unittest时,…...

高并发场景下的BI架构设计:衡石分布式查询引擎与缓存分级策略
在电商大促、金融交易时段或IoT实时监控场景中,企业BI系统常面临瞬时万级并发查询的冲击——运营团队需要实时追踪GMV波动,风控部门需秒级响应欺诈检测,产线监控需毫秒级反馈设备状态。传统单体架构的BI系统在此类场景下极易崩溃,…...

鱼眼摄像头(一)多平面格式 单缓冲读取图像并显示
鱼眼摄像头(一)多平面格式 单缓冲读取图像并显示 1.摄像头格式 1. 单平面格式(Single Plane):各通道数据保存在同一个平面(缓冲),图像数据按行连续存储a. mjpeg,yuyv等…...

机器学习笔记——特征工程
大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本笔记介绍机器学习中常见的特征工程方法、正则化方法和简要介绍强化学习。 文章目录 特征工程(Fzeature Engineering)1. 特征提取ÿ…...

A Survey of Learning from Rewards:从训练到应用的全面剖析
A Survey of Learning from Rewards:从训练到应用的全面剖析 你知道大语言模型(LLMs)如何通过奖励学习变得更智能吗?这篇论文将带你深入探索。从克服预训练局限的新范式,到训练、推理各阶段的策略,再到广泛…...