【计算机网络】3数据链路层①

这篇笔记专门讲数据链路层的功能。

2.功能

数据链路层的主要任务是让帧在一段链路上或一个网络中传输。

2.1.封装成帧(组帧)

解决的问题:①帧定界②帧同步③透明传输

实现组帧的方法通常有以下种。

2.1.1.字符计数法

原理:在每个帧开头,用一个定长计数字段来记录该帧所含的字节数(包含计数字段自身所占用的字节)。

问题:任何一个计数字段出错,都会导致后续所有帧无法定界。

2.1.2.Byte填充法

原理:使用特定字节来定界一帧的开始与结束。控制字符表示帧的开始;控制字符表示帧的结束。

信息位中如果出现特殊字符(控制字符,控制字符,转义字符),则发送方要在转义字符之前填充一个转义字符来加以区分,接收方要做逆处理。

2.1.3.0bit填充法

在数据链路层早期使用的协议中,便是采用这种比特填充的首尾标志法来实现透明传输的。

原理:零比特填充法允许数据帧包含任意个数的比特。它使用一个特定的比特串来标志一帧的开始和结束。

为了不使数据字段中出现的比特流被误判为帧的首尾标志,需要对数据部分做一些处理:发送方需要对帧的数据部分进行处理,每当遇到连续,就填充;接受方需要对帧的数据部分进行逆处理,每当遇到连续,就删掉后面的

2.1.4.违规编码法

在物理层进行比特编码时,常采用违规编码法。

局域网 标准就采用了这种方法。

原理:使用“违规信号”,表示帧的开头、结尾。

例如,采用曼彻斯特编码时,使用“中间不跳变”作为“违规信号”,标记帧的开头、结尾。

2.2.差错控制

差错控制的目标是发现并解决一个帧内部的“位错”。

这里的“位错”指的是比特差错(传输差错中的一种),即比特在传输过程中可能产生差错,可能变成也可能变成


常利用编码技术进行差错控制。

差错控制机制编码技术(实现差错控制机制的具体技术方法)
自动重传请求(Automatic Repeat reQuest,ARQ):当接收方检测到差错时,就设法通知发送方重发,直到收到正确的数据为止。检错编码
向前纠错(Forword Error Correction,FEC):接收方不但能发现差错,而且能确定错误的位置并加以纠正。纠错编码

2.2.1.检错编码

检错编码都采用冗余编码技术,核心思想是在信息位(帧的“数据部分”)被发送前,按某种关系附加一定的校验位(为了给帧的“数据部分”检错/纠错而附加的一些冗余比特,在信息位的首部或尾部添加),构成一个符合某一规则的码字后发送。

当要发送的有效数据变化时,相应的冗余位也随之变化,使得码字遵从不变的规则。接收方根据收到的码字是否仍符合原规则来判断是否出错。常见的检错编码有奇偶检验码和循环冗余码。

奇偶校验码是奇校验码和偶校验码的统称。

1️⃣组成

奇偶校验码由位信息位和位校验位组成。检验位的取值()将使整个检验码中的个数为奇数或偶数。

2️⃣约定

发送方和接收方先共同约定是采用奇校验还是偶校验。

3️⃣发送方求校验位

奇校验码:附加一个检验位后,位的码字中的个数为奇数。

偶校验码:附加一个检验位后,位的码字中的个数为偶数。

4️⃣接收方检错

如果发送方和接收方共同约定采用奇校验的规则,那么接收方的数据链路层收到帧之后会检查这个帧的校验位和信息位里含有的是不是奇数个。如果是奇数个,就认为没有错误;如果不是奇数个,就认为有错误。

如果发送方和接收方共同约定采用偶校验的规则,那么接收方的数据链路层收到帧之后会检查这个帧的校验位和信息位里含有的是不是偶数个。如果是偶数个,就认为没有错误;如果不是偶数个,就认为有错误。

5️⃣硬件实现

在现实应用中,偶校验码要比奇校验码更常用,原因是偶校验很容易用简单的异或门实现。

偶校验的硬件实现:各信息进行异或(模加)运算,得到的结果即为偶校验位。

⊕:异或(模2加)    0 ⊕ 0 = 0       0 ⊕ 1 = 1        1 ⊕ 0 = 1          1 ⊕ 1 = 0

求偶校验位:

1⊕0⊕0⊕1⊕1⊕0⊕1=0  

1⊕0⊕1⊕0⊕1⊕1⊕1=1  

进行偶校验(所有位进行异或,若结果为1说明出错):  

0⊕1⊕0⊕0⊕1⊕1⊕0⊕1=0

1⊕1⊕0⊕1⊕0⊕1⊕1⊕1=0   

1⊕1⊕0⊕1⊕0⊕1⊕1⊕0=1  (可以检测出奇数位错误)

1⊕1⊕0⊕1⊕0⊕1⊕0⊕0=0  (无法检测出偶数位错误)

6️⃣奇偶校验码仅能检测出奇数位错误,无纠错能力。

数据链路层广泛使用循环冗余码(Cyclic Redundancy Code,CRC)检错技术。

1️⃣循环冗余校验码由位信息位和位校验位组成。

2️⃣发送方和接收方先共同约定一个生成多项式(要求最低位必须为)

生成多项式可用位位串【除数】表示,位位串可视为阶数为的多项式的系数序列。

=信息码的长度

=生成式多项式最高次幂=

3️⃣发送方求校验位:生成

发送方基于待发送的位信息位和,计算出位校验位(帧检验序列)。


信息码左移位,低位补

对移位后的信息码,用生成多项式进行模除法,产生余数。

由于除数有位,所以我们会取被除数的高位与除数先“商”一次。

除法取商的方式比较特别,我们只看被除数的最高位,如果是,就先商

之后再对后位进行模减(效果与模加相同)的运算,得到余数。

再将被除数的后面一位补到余数的低位。此时的余数最高位是,商

以此类推。

最后得到的余数为校验位。

对应的码为

4️⃣接收方检错:检验

接收方收到数据和冗余码后,通过来计算收到的数据和冗余码是否产生差错。

收到位数据,与生成多项式模除,计算位余数。

余数为,说明无错误;余数非,说明出错。


发送:        记为

接收:        用进行模除,余数为,代表没有出错。

接收:        用进行模除,余数为,代表可能是出错。

5️⃣检错纠错能力

①可检测出所有奇数个错误;

②可检测出所有双比特的错误;

③可检测出所有小于等于校验位长度的连续错误;

④若选择合适的生成多项式,且,则可纠正单比特错。

对于确定的生成多项式,出错位与余数是相对应的。


为什么叫循环冗余码?

因为将对应的位串,会发现得到的余数在循环。


循环冗余码(CRC)是具有纠错功能的,只是数据链路层仅使用了它的检错功能,检测到帧出错则直接丢弃,是为了方便协议的实现,因此本节不介绍CRC的检错功能。 

2.2.2.纠错编码

海明校验码

奇偶校验码只有个校验位,只能携带种状态信息(对/错)。

海明码有多个校验位,能携带多种状态信息(对/错,错在哪)

海明码的设计思路是将信息位分组进行偶校验→多个校验位→多个校验位标注出错位置

1️⃣确定海明码的位数

为有效信息的位数,为检验位的位数,则信息位和检验位应满足

海明码位数 成立,则满足条件。

设信息位为,共位;检验位为,共位;

对应的海明码为

2️⃣确定检验位的分布

规定检验位在海明位号为的位置上,其余各位为信息位,因此有:

的海明码位号为 ,即

的海明码位号为,即

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/77736.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[区块链lab2] 构建具备加密功能的Web服务端

实验目标: 掌握区块链中密码技术的工作原理。在基于Flask框架的服务端中实现哈希算法的加密功能。 实验内容: 构建Flash Web服务器,实现哈希算法、非对称加密算法的加密功能。 实验步骤: 哈希算法的应用:创建hash…

蓝桥杯之前缀和

一维前缀 解题思路 看到“区间之和”问题,直接想到“前缀和” 前缀和的核心公式: sum[i]sum[i−1]a[i] 利用前缀和求区间和 [l,r] 的公式: 区间和sum[r]−sum[l−1] 解题步骤模板 输入数组: 读取数组长度 n 和查询次数 m。 读…

【学习笔记】计算机网络(八)—— 音频/视频服务

第8章 互联网上的音频/视频服务 文章目录 第8章 互联网上的音频/视频服务8.1概述8.2 流式存储音频/视频8.2.1 具有元文件的万维网服务器8.2.2 媒体服务器8.2.3 实时流式协议 RTSP 8.3 交互式音频/视频8.3.1 IP 电话概述8.3.2 IP电话所需要的几种应用协议8.3.3 实时运输协议 RTP…

【WRF运行】解决metgrid生成文件太大无内存!

目录 方法:改变工作目录运行 metgrid.exe参考由于我的运行内存过小,当研究区较大时,metgrid生成文件内存太大,导致每次运行都报错,此时可更改工作目录(空余文件夹)以运行 metgrid.exe(并非必须在wrf安装目录下运行!!!)。 metgrid.exe 本身不支持直接通过参数或 nam…

基于 Django 进行 Python 开发

基于 Django 进行 Python 开发涉及多个方面的知识点,以下为你详细介绍: 1. Django 基础 项目与应用创建 借助django-admin startproject project_name来创建新的 Django 项目。利用python manage.py startapp app_name创建新的应用。项目结构 理解项目各文件和目录的作用,像…

【sylar-webserver】8 HOOK模块

文章目录 知识点HOOK实现方式非侵入式hook侵入式hook ⭐⭐⭐ 覆盖系统调用接口获取被全局符号介入机制覆盖的系统调用接口 具体实现C 模板成员函数继承 和 成员函数指针类型匹配 ⭐⭐⭐⭐⭐FdCtx 和 FdManager ⭐⭐判断socket的小技巧FdCtxFdManager connect hook ⭐do_io模板 …

SpringAI+DeepSeek大模型应用开发——1 AI概述

AI领域常用词汇 LLM(LargeLanguage Model,大语言模型) 能理解和生成自然语言的巨型AI模型,通过海量文本训练。例子:GPT-4、Claude、DeepSeek、文心一言、通义干问。 G(Generative)生成式: 根据上…

SpringBoot 基本原理

SpringBoot 为我们做的自动配置,确实方便快捷,但一直搞不明白它的内部启动原理,这次就来一步步解开 SpringBoot 的神秘面纱,让它不再神秘。 目录 SpringBootApplication 背后的秘密 Configuration ComponentScan EnableAutoC…

2025.4.17总结

工作:今天对需求的测试设计进行了完善,然后,对测试设计进行了评审,最后提了个问题单。 反思这个过程,要说不足的地方,就是评审的时候总觉得自己吐字不清晰,表达能力早就想提升了,但…

2021-11-14 C++三七二十一数

缘由c编程怎么写&#xff0c;紧急求解-编程语言-CSDN问答 void 三七二十一数() {//缘由https://ask.csdn.net/questions/7566632?spm1005.2025.3001.5141int n 0, a 0, b 0, p 1;std::cin >> n;while (n--){std::cin >> a >> b;while (a<b){if (a %…

大模型面经 | DeepSpeed中ZeRO-1、ZeRO-2和ZeRO-3的区别是什么?

大家好,我是皮先生!! 今天给大家分享一些关于大模型面试常见的面试题,希望对大家的面试有所帮助。 往期回顾: 大模型面经 | 春招、秋招算法面试常考八股文附答案(RAG专题一) 大模型面经 | 春招、秋招算法面试常考八股文附答案(RAG专题二) 大模型面经 | 春招、秋招算法…

spring boot 文件上传

1.编写文件上传的表单页面 <!DOCTYPE html> <html lang"en" xmlns:th"http://www.thymeleaf.org"> <head><meta charset"UTF-8"><meta http-equiv"Content-Type" content"text/html; charsetUTF-8&qu…

机器学习核心算法全解析:从基础到进阶的 18 大算法模型

在机器学习领域&#xff0c;算法模型是解决实际问题的核心工具。 不同的算法适用于不同的数据场景和任务需求&#xff0c;理解它们的原理与应用是掌握机器学习的关键。 以下将详细解析 18 个核心算法模型&#xff0c;涵盖监督学习、无监督学习、集成学习和深度学习等多个领域…

5G网络切片:精准分配资源,提升网络效率的关键技术

5G网络切片&#xff1a;精准分配资源&#xff0c;提升网络效率的关键技术 随着5G技术的广泛应用&#xff0c;网络切片&#xff08;Network Slicing&#xff09;作为其核心创新之一&#xff0c;正在改变传统网络架构。它通过将物理网络划分为多个逻辑网络&#xff08;切片&…

Spring Boot中Excel处理完全指南

文章目录 1. Excel处理基础知识1.1 为什么需要在应用中处理Excel文件&#xff1f;1.2 Java中的Excel处理库介绍1.2.1 Apache POI1.2.2 EasyExcel1.2.3 JExcel1.2.4 Apache POI SXSSF 1.3 Spring Boot中集成Excel处理 2. 在Spring Boot中集成Excel处理库2.1 集成Apache POI2.1.1…

Elasticsearch 8.18 中提供了原生连接 (Native Joins)

作者&#xff1a;来自 Elastic Costin Leau 探索 LOOKUP JOIN&#xff0c;这是一条在 Elasticsearch 8.18 的技术预览中提供的新 ES|QL 命令。 很高兴宣布 LOOKUP JOIN —— 这是一条在 Elasticsearch 8.18 的技术预览中提供的新 ES|QL 命令&#xff0c;旨在执行左 joins 以进行…

2025年渗透测试面试题总结-拷打题库03(题目+回答)

网络安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 2025年渗透测试面试题总结-拷打题库03 一、Windows与Linux系统提权思路 Windows提权 Linux提权 二、…

【华为】OSPF震荡引起CPU占用率高怎么解决?

原创&#xff1a;厦门微思网络 现象描述 如图所示&#xff0c;Switch_1、Switch_2、Switch_3和Switch_4配置了OSPF协议&#xff0c;发现Switch_1设备的CPU占用率高&#xff0c;ROUT任务占用率明显高于其他任务并且产生路由震荡。 故障组网图 原因分析 网络中IP地址冲突导致…

Everything 安装教程与使用教程(附安装包)

文章目录 前言一、Everything 介绍二、Everything 安装教程1.Everything 安装包下载2.选择安装文件3.选择安装语言4.接受许可协议5.选择安装位置6.配置安装选项7.完成安装 三、Everything 使用教程1.启动软件2.简单关键词搜索3.按类型搜索 前言 在日常使用电脑时&#xff0c;随…

极狐GitLab CI/CD 流水线计算分钟数如何管理?

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;关于中文参考文档和资料有&#xff1a; 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 计算分钟管理 (PREMIUM SELF) 在极狐GitLab 16.1 中&#xff0c;从 CI/CD 分钟数重命名为计算配额或计算分钟数。 管理员可…