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

【计算机网络入门】初学计算机网络(六)

目录

1.回忆数据链路层作用

 2. 组帧

2.1 四种组帧方法

2.1.1 字符计数法

2.1.2 字节填充法

2.1.3 零比特填充法

2.1.4 违规编码法

3. 差错控制

3.1 检错编码

3.1.1 奇偶校验码

3.1.2 CRC(循环冗余校验)校验码

3.2 纠错编码

3.2.1 海明校验码

3.2.2 海明码如何纠错?

3.2.3 海明码纠错检错能力


1.回忆数据链路层作用

 2. 组帧

帧定界

如何让接收方知道帧的界限?

透明传输

接收方如何去除“帧定界”的附加信息,把帧恢复原貌。

2.1 四种组帧方法

2.1.1 字符计数法

使用一个字节记录帧的长度放在每一个帧开头的位置

缺点任意一个计数字符出错,那么后面的帧全部无法定界,和多米诺骨牌一样

2.1.2 字节填充法

使用控制字符来确定一个帧的开始和结束

缺点:当数据的内容和指定的开始结束内容完全一致,我们该如何区分是数据还是控制字符

改进引入转义字符,如果控制字符和数据内容完全一致,我们会在数据内容前面加入一个转义字符表明:这就是普通的数据

        如果数据的内容和转义字符一样,我们就在“数据”之前 再加一个转义字符,让接收方知道这是一个数据,当接收方接受到数据之后,需要逆处理去掉转义字符。

2.1.3 零比特填充法

        使用特殊的数字作为帧的开头和结尾(01111110六个一),我们需要对数据部分进行处理,如果有连续五个1就在后面加一个0,这样一来就不会出现和开始字符或者结尾字符相同的情况了。

使用零比特填充法的协议:PPP,HDLC 

2.1.4 违规编码法

        我们定义每个周期的中间必须变化,没有变化的我们视作“违规”,所以我们只需要让数据遵守规则,让帧头和帧尾的部分违规即可

3. 差错控制

        发现帧内部的位错误。

3.1 检错编码

接收方发现比特错误丢弃帧,通知发送方重传帧。

3.1.1 奇偶校验码

奇校验:保持(有效信息位和校验位)1的个数为奇数。

偶校验:保持(有效信息位和校验位)1的个数为偶数。

 如果,一下子有两个二进制位跳位,那么也是会符合偶校验的规则的,但是我们知道这是错误的。

3.1.2 CRC(循环冗余校验)校验码

        数据发送方、接收方约定一个除数K个信息位+R个校验位作为被除数,添加校验位后需要保证除法的余数为0;收到数据后进行除法检查余数是否为0,若余数非0说明出错,则进行重传或纠错。

  

 

3.2 纠错编码

        由接收方发现并纠正比特错误。

        上面说到奇偶校验只能察觉到奇数个比特位的错误,一旦错误的位数是偶数,此方法就会失效,并且不能进行纠错

3.2.1 海明校验码

        海明码的思路是基于偶校验先把所有的数据进行分组,然后每一组有一个校验位,这样就能表示很多种状态,甚至出错的位置都能够找到

        这些状态最起码能表示信息位+校验位出错的位置,还有一种正确的状态;加起来就是2的k次方≥n+k+1种状态。将校验位按照规定放入2的次方位置上面,信息位依次填入

        我们把信息位的下标(H3的3,H5的5......)使用二进制表示出来进行分组H1 = P1 = 1101 = H357进行异或,H2 = P2 = 1011 = H367进行异或,H4 = P3 = 0111 = H567异或,分别异或算出校验位。

 

       

3.2.2 海明码如何纠错?

        我们现在的三个分组求出来对应的三个校验位,也就是每组四个比特(3个信息位1个校验位)直接进行异或,得数是0则没有错误

         若此时P2跳变成0,我们第二组异或就会为1,由低位到高位就是010->也就是十进制的2,即海明码的第二位出现了错误

3.2.3 海明码纠错检错能力

        海明码可以1位纠错,2位检错;做到这样的结果我们只需要增加一位作为整体偶校验;我们就会出现以下三种情况。

①校验方程=0且全体偶校验成功(0):完全正确。

②校验方程≠0且全体偶校验失败(1):有一位错误,可以定位找到。

③校验方程≠0且全体偶校验成功(0):有两位错误,无法定位,申请重传。


http://www.kler.cn/a/568332.html

相关文章:

  • 车载电源管理新标杆NCV8460ADR2G 在汽车电子负载开关中的应用
  • 基于STM32单片机物联网智能浇花系统设计
  • 请解释 Node.js 中的网络模块(http、https),如何创建 HTTP服务器?
  • 基于微信小程序的疫情互助平台(源码+lw+部署文档+讲解),源码可白嫖!
  • HTMLS基本结构及标签
  • 【星云 Orbit-F4 开发板】06. 串口密码:USART 数据传递
  • 未来该如何选择编程语言?
  • Q-Former 的设计与应用
  • 在线抽奖系统——项目测试
  • [3/11]C#性能优化-实现 IDisposable 接口-每个细节都有示例代码
  • 自然语言处理:第九十三章 大模型解码参数详解beam search/top-k/top-p/温度系数(转载
  • Pycharm使用matplotlib出现的问题(1、不能弹出图表 2、图表标题中文不显示)
  • 【洛谷贪心算法】P1106删数问题
  • 数据集笔记:新加坡LTA MRT 车站出口、路灯 等位置数据集
  • 2025前端技能
  • Python正则
  • RocketMQ的运行架构
  • Linux驱动开发之ADC驱动与基础应用编程
  • 《基于Python的服务器实时监控运维系统的设计与开发》开题报告
  • P8697 [蓝桥杯 2019 国 C] 最长子序列