标签:实现 推导 导致 特殊字符 恢复 标准 校验码 自动 smi
数据链路层主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路。(物理上肯定有一些差错,但是可以通过修改,改为逻辑上无差错)
任务:负责将数据报通过链路从一个节点传输到相邻的节点
基本概念:
将一段数据的前后分别添加首部和尾部,就构成了帧。
注意:首部和尾部中含有很多控制信息(如 检验序列等),它们的一个重要作用是确定帧的界限,即帧定界。
如果在数据中心恰好出现与帧定界符相同的比特组合,会导致帧提前结束而丢弃后面的数据。所以引入了“透明传输”。
比特填充的首尾标志法:
由于使用01111110(6个1)来标志一帧的开始和结束,故发送方只要在数据中遇到5个连续的“1”时,自动在其后插入一个“0”;接收方每收到5个连续的“1”时,自动删除后面紧跟的“0”,以恢复原信息。
比特填充法很容易由硬件来实现,性能优于字符填充法。
适用性:
只适用于采用冗余编码的特殊编码环境
冗余码是一种所用符号数或信号码元数比表示信息所必需的数目多的代码
常用的组帧方法是比特填充法和违规编码法。
通常利用编码技术进行差错控制,主要有两类:自动重传请求(Automatic Retransmission reQuest, ARQ)和前向纠错(Forward Error Correction, FEC)
在ARQ方式中,接收端检测出差错时,就设法通知发送端重发,直到接收到正确的码字为止。
在FEC方式中,接收端不但能发现差错,而且能确定二进制数码的错误位置,从而加以纠正。
因此,差错控制又可分为检错编码(Error-Detecting Code)和纠错编码(Error-Crrecting Code)
检错编码都采用冗余编码技术,其核心思想是在有效数据(信息位)被发送前,先按某种关系附加一定的冗余位,构成一个符合某一规则的码字后再发送。
奇偶校验码:
奇偶校验码是奇校验码和偶校验码的统称,是一种最基本的检错码
循环冗余码(CRC):
循环冗余码(Cyclic Redundancy Code, CRC)又称多项式码。(1101为\(x^3+x^2+1\))
步骤:
假设一个帧有m位,其对应的多项式为M(x),发送方和接收方事先商定一个r+1位除数,欲求出一个r位的帧检验序列(冗余码)。
发送数据:数据帧+冗余码(组合起来 不是加减)
在数据后面添加上的冗余码称为帧检验序列(Frame Check Sequence, FCS),CRC与FCS并不等同,FCS可以用CRC这种方法得出,当CRC并非是获得FCS的唯一方法。
检验:
相除余数为0,则没有差错,就接受。
注意:仅用CRC差错检测技术只能做到无差错接受(即 接受的帧非常接近于1的概率没有产生差错)(有差错的帧就丢弃而不接受)
要做到“可靠传输”(即 发送什么就收到什么)就必须再加上确认和重传机制。
在数据通信的过程中,解决差错问题的一种方法是在每个要发送的数据块上附加足够的冗余信息,使接收方能够推导出发送方实际送出的应该是什么样比特串。
标签:实现 推导 导致 特殊字符 恢复 标准 校验码 自动 smi
原文地址:https://www.cnblogs.com/blknemo/p/11518795.html