文章目录

  • 1. 数据链路层的功能
  • 2. 组帧
    • 2.1 字符填充法
    • 2.2 字节填充法
    • 2.3 零比特填充法
    • 2.4 违规编码
    • 2.5 总结
  • 3. 差错控制
    • 3.1 检错编码
      • 3.1.1 奇偶校验
      • 3.1.2 循环冗余校验码(CRC)
      • 3.1.3 总结
    • 3.2 纠错编码(海明校验码)
    • 3.3 总结
  • 4. 流量控制 & 可靠传输
    • 4.1 停止 - 等待协议(S-W)
    • 4.2 后退N帧协议(GBN)
    • 4.3 选择重传协议(SR)
    • 4.4 总结
  • 5. 三种协议的信道利用率分析
    • 5.1 S-W
    • 5.2 GBN & SR
    • 5.3 总结

1. 数据链路层的功能

在这里插入图片描述

    1. 数据链路层使用物理层提供的**“比特传输”**服务
    1. 数据链路层为网络层提供服务,将网络层的 IP数据报(分组) 封装成帧,传输给下一个相邻结点

物理链路:**传输介质(0层)+ 物理层(1层)**实现了相邻结点之间的“物理链路”

逻辑链路:数据链路层需要基于“物理链路”,实现相邻结点之间逻辑上无差错的“数据链路(逻辑链路)”

在这里插入图片描述

2. 组帧

在这里插入图片描述

2.1 字符填充法

在这里插入图片描述
再次强调:首部计数字段所记录的帧长 = 计数字段长度 + 帧的数据部分长度

2.2 字节填充法

在这里插入图片描述
总结:

  • 发送方发送:只要遇到特殊字符,如:SOH、EOT、ESC等,就在这个特殊字符前面加上一个ESC(转义字符)
  • 接收方接收:只要遇到ESC(转义字符),就丢掉这个ESC,然后跳过一个字符,去接着看跳过字符后面的内容

2.3 零比特填充法

在这里插入图片描述
总结:

  • 发送:每当遇到连续5个1,就填充一个0
  • 接收:每当遇到连续5个1,就删掉后面的0

2.4 违规编码

在这里插入图片描述

2.5 总结

在这里插入图片描述

3. 差错控制

在这里插入图片描述

3.1 检错编码

3.1.1 奇偶校验

在这里插入图片描述

  • 奇校验码:有效信息位和校验位(整个校验码)中“1”的个数为奇数
  • 偶校验位:有效信息位和校验位(整个校验码)中“1”的个数为偶数

在这里插入图片描述

异或运算,符号:⊕\oplus。运算规则:

    1. 相同为0,相异为1
    1. 无进制加法,进制指二进制,即:0 ⊕\oplus 0 = 0、0 ⊕\oplus 1 = 1、1 ⊕\oplus 0 = 1、1 ⊕\oplus 1 = 0。中间符号就可以理解为+,只不过是无进制的,在组成原理里用异或运算实现CPU加法器

个人觉得用第二种理解能更快得出异或结果

  • 奇偶校验常用偶校验,因为偶校验的硬件实现更简单:各信息进行异或(模2加)运算,得到的结果即为偶校验位:

在这里插入图片描述

再次强调,奇偶校验只能检测奇数位错误,不能检测偶数位错误

3.1.2 循环冗余校验码(CRC)

在这里插入图片描述

在这里插入图片描述
例:

在这里插入图片描述
说明:

在这里插入图片描述
强调:CRC不是百分百检错,但其检错率很高,其也有1位的纠错能力,但实际应用中只用它的检错。

3.1.3 总结

在这里插入图片描述
在这里插入图片描述

3.2 纠错编码(海明校验码)

在这里插入图片描述

  • 偶校验:能发现奇数位错误,但无法确定是哪一位出错。即1个校验位只能携带2种状态信息
  • 基于偶校验,海明码的设计思路:将信息位分组进行偶校验 -> 设计多个校验位 -> 多个校验位标注出错位置。即多个校验位能携带多种状态信息

在这里插入图片描述

求解步骤:

在这里插入图片描述
例:给定信息位 —— 1010

    1. 确定海明码的位数:2k >= n + k + 1 -> n = 4 -> k = 3
      在这里插入图片描述
    1. 确定校验位的分布:校验位 Pi 放在海明位号为 2i-1 的位置上,信息位按顺序放到其余位置

在这里插入图片描述

    1. 求校验位的值:
      ①先分组形成校验关系,即每个数据位用多个校验位进行校验,满足条件:被校验数据位的海明位号等于校验该数据位的各校验位海明位号之和
      在这里插入图片描述
      ②异或取值:三个分组各自分别进行偶校验

在这里插入图片描述
填表如下:

在这里插入图片描述

    1. 检错纠错
      在这里插入图片描述
      同理:S3S2S1 = 110,表示第6位出错,S3S2S1 = 111,表示第7位出错

上述为从大到小的格式,当然也有从小到大的格式:

在这里插入图片描述
补充:
在这里插入图片描述

推论:

    1. S3S2S1 = 000 且全体偶校验成功 -> 无错误
    1. S3S2S1 != 000 且全体偶校验失败 -> 有1位错,纠正即可。但实际上这个推论只能说明是有奇数个位错误,如D1D2D4同时出错时,也满足这个条件,但实际生活中这是个小概率事件,因为有线链路的出错率本来就低
    1. S3S2S1 != 000 且全体偶校验成功 -> 有偶数个位错,需重传
    1. S3S2S1 = 000 且全体偶校验失败 -> 海明校验码失效,需重传,对应D1D2D3同时出错

3.3 总结

在这里插入图片描述

4. 流量控制 & 可靠传输

在这里插入图片描述
数据链路层的流量控制与可靠传输都是基于滑动窗口机制实现的

滑动窗口机制:

在这里插入图片描述

4.1 停止 - 等待协议(S-W)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.2 后退N帧协议(GBN)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.3 选择重传协议(SR)

在这里插入图片描述
在这里插入图片描述
特殊的,当发送窗口的大小大于1,接收窗口的大小等于1,且发送窗口的大小+接收窗口的大小 <= 2n,此时又变为了GBN协议

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.4 总结

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
强调:

    1. 三种协议都有超时重传机制、确认帧以及帧的正确编号限制,这是滑动窗口保证可靠传输与流量控制的奥妙所在
    1. 都要满足WT + WR <= 2n。其中SR还规定WT <= WR,一般取WT = WR
    1. GBN采用累积确认的方式,若中间出错,仅需重传最后一次收到的确认帧位置之后的所有帧(不包含确认帧位置帧的重传)
    1. S-W和SR则采用逐帧确认的方式,哪个帧有问题就重传哪个帧,不同的是,SR检测收到的帧有差错,需传否认帧NAK给发送方,而S-W只需丢弃该帧,等待发送方超时重传即可,可以看出SR的时间效率高于S-W

5. 三种协议的信道利用率分析

在这里插入图片描述

5.1 S-W

在这里插入图片描述

5.2 GBN & SR

在这里插入图片描述
在这里插入图片描述

5.3 总结

在这里插入图片描述

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

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

相关文章

机器学习实战项目中,回归与分类模型中该如何科学定义目标变量Y?

前言 在机器学习项目里&#xff0c;目标变量 (Y) 的定义决定了你能解答什么问题&#xff0c;以及模型能给业务带来什么价值。选择不当不仅可能导致模型误差大、偏差严重&#xff0c;还可能让业务决策方向偏离。 本文分两大场景&#xff1a; 供应链项目中的 销量预测&#xff08…

【 C/C++ 算法】入门动态规划-----一维动态规划基础(以练代学式)

每日激励&#xff1a;“不设限和自我肯定的心态&#xff1a;I can do all things。 — Stephen Curry” 绪论​&#xff1a; 本章是动态规划算法的基础入门篇&#xff0c;我将通过三道简单题 一道中等难度的一维动态规划题来带你对动态规划有个初认识&#xff0c;并基本了解动…

深入对比Tomcat与Netty:HTTP请求从网卡到Controller的全链路追踪

我们日常用Spring Boot写的RestController&#xff0c;感觉上就是一个简单的方法&#xff0c;但它背后其实有一套复杂的网络服务在支撑。一个HTTP请求到底是怎么从用户的浏览器&#xff0c;穿过层层网络&#xff0c;最终抵达我们代码里的Controller方法的&#xff1f;理解这个过…

GO学习记录十——发包

记录下不同平台的发包操作和期间遇到的问题 1.命令&#xff1a; $env:GOOSlinux $env:GOARCHamd64 go build -o release/HTTPServices-linux第一行&#xff0c;配置平台&#xff0c;linux、windows 第二行&#xff0c;配置部署服务器的处理器架构 第三行&#xff0c;输出目标文…

贪心算法与动态规划

1. 什么是贪心算法&#xff1f; 贪心算法是一种在每一步选择中都采取在当前状态下最好或最优&#xff08;即最有利&#xff09;的选择&#xff0c;从而希望导致结果是全局最好或最优的算法。 核心思想&#xff1a;“每步都贪心地选择眼前最好的&#xff0c;不去考虑整个未来的长…

学会“读网页”:生成式 AI 在足球赛事信息整理中的实战

逐步教程&#xff08;Step-by-Step&#xff09; — 适合初学者与教学类文章 背景&#xff08;为什么要这样做&#xff09; 对于足球迷、资讯编辑与数据分析师来说&#xff0c;最快、最准确把握一场比赛的核心信息至关重要&#xff1a;比分、关键事件&#xff08;进球、点球、红…

BM3D 图像降噪快速算法的 MATLAB 实现

BM3D 图像降噪快速算法的 MATLAB 实现1. 快速 BM3D 算法流程&#xff08;概述&#xff09;步骤操作加速技巧① 分组块匹配 堆叠FFT 互相关② 协同滤波3D 变换 硬阈值FFT 沿第三维③ 聚合加权平均稀疏矩阵累加 2. 核心函数&#xff08;单文件版&#xff09; 保存为 bm3d_fast.…

Go的schedt调度(runtime/proc.go)

1. 创建go的入口函数// Create a new g running fn. // Put it on the queue of gs waiting to run. // The compiler turns a go statement into a call to this. func newproc(fn *funcval) {gp : getg()pc : sys.GetCallerPC()systemstack(func() {newg : newproc1(fn, gp, …

Ubuntu 服务器配置转发网络访问

配置文档&#xff1a;Ubuntu 服务器转发网络访问 一、网络拓扑以以下网络拓扑为示例Ubuntu 服务器&#xff08;两个网卡&#xff09; eth1 10.66.71.222 &#xff08;接入内网&#xff09;eno1 192.168.2.100 &#xff08;直连相机&#xff09; 相机ip 192.168.2.1 Windows 客…

为什么企业需要高防IP

1. 抵御日益猖獗的DDoS攻击 现代DDoS攻击规模已突破Tbps级别 传统防火墙无法应对大规模流量攻击 高防IP采用分布式清洗中心&#xff0c;可轻松抵御300Gbps以上的攻击流量 2. 保障业务连续性 网络中断1小时可能造成数百万损失 高防IP确保服务99.99%可用性 智能切换机制实…

CSS基础 - 选择器备忘录 --笔记5

目录基础选择器组合器伪类选择器属性选择器选择器可以选中页面上的特定元素并为其指定样式。 CSS有多种选择器。 基础选择器 标签选择器 – tagname&#xff1a;匹配目标元素的标签名。优先级是0,0,1。如&#xff1a;p、h1、div类选择器 – .class&#xff1a;匹配class属性中…

自动驾驶中的传感器技术46——Radar(7)

卫星雷达&#xff08;又称为分布式雷达&#xff09;主要讲当前雷达的雷达信号处理计算以及雷达目标相关的一些感知算法都迁移到中央域控进行&#xff0c;雷达端基本只负责数据采集&#xff0c;这样做的影响如下&#xff1a; 雷达端成本与功耗降低&#xff1b; 雷达端采样得到的…

【论文阅读】Diff-Privacy: Diffusion-based Face Privacy Protection

基于扩散模型的人脸隐私保护方法——DiffPrivacy&#xff0c;解决了两类人脸隐私任务&#xff1a;匿名化&#xff08;anonymization&#xff09;和视觉身份信息隐藏&#xff08;visual identity information hiding&#xff09;。1. 研究背景随着人工智能和大数据技术的普及&am…

React 原理篇 - 深入理解虚拟 DOM

一、什么是虚拟 DOM&#xff1f; 在前端开发中&#xff0c;“虚拟 DOM” 是一个高频出现的术语&#xff0c;尤其在 React 生态中被广泛讨论。但很多开发者对它的理解往往停留在 “JS 对象” 这个表层认知上。 实际上&#xff0c;虚拟 DOM 是一种编程概念—— 在这个概念里&…

对汇编的初理解

此处是一个简单的函数&#xff0c;里面将调用了一个函数add&#xff08;&#xff09;函数这里是函数的原型这里是调用lcd函数产生的汇编语言&#xff0c;翻译过来就是r11&#xff0c;r0cnt(r4cnt,前文有提及)&#xff0c;然后调用add函数&#xff0c;此处BL是指会回到指令的下一…

《Python 自动化实战:从零构建一个文件同步工具》

《Python 自动化实战:从零构建一个文件同步工具》 一、开篇引入:为什么我们需要文件同步? 你是否有过这样的困扰: 公司电脑和家里电脑上都有工作项目,每次更新都要手动复制? U 盘频繁传输文件,不仅麻烦还容易出错? 项目文件夹动辄几 G,每次同步都耗时长、效率低? 在…

工业相机与镜头的靶面尺寸详解:选型避坑指南

在机器视觉系统中&#xff0c;相机与镜头的靶面尺寸匹配是一个非常关键却又经常被忽略的细节。选错了&#xff0c;不但影响图像质量&#xff0c;还可能导致画面“黑角”、视野不符、镜头浪费等问题。 今天我们就用通俗易懂的方式&#xff0c;聊一聊相机与镜头靶面尺寸的那些事儿…

使用 Go 和 go-commons 实现内存指标采集并对接 Prometheus

文章目录一、准备工作二、编写内存采集代码三、运行 Exporter四、接入 Prometheus五、可扩展思路总结在运维和监控领域&#xff0c;资源指标采集 是必不可少的一环。CPU、内存、磁盘、网络这些系统资源&#xff0c;需要实时采集并上报到监控系统中。 本文以 内存指标采集 为例&…

webrtc弱网-IntervalBudget类源码分析与算法原理

一、核心功能 IntervalBudget 类用于基于时间窗口的带宽预算管理。它根据设定的目标比特率&#xff08;kbps&#xff09;和一个固定时间窗口&#xff08;500ms&#xff09;&#xff0c;计算在该时间窗口内可用的字节数&#xff08;即“预算”&#xff09;&#xff0c;并支持预…

深度学习基本模块:RNN 循环神经网络

循环神经网络&#xff08;RNN&#xff09;是一种专门用于处理序列数据的神经网络架构。与处理空间数据的卷积神经网络&#xff08;Conv2D&#xff09;不同&#xff0c;RNN通过引入循环连接使网络具有"记忆"能力&#xff0c;能够利用之前的信息来影响当前的输出&#…