数据链路层之检错编码(奇偶、CRC)

如题所述

第1个回答  2022-07-02
概括来说,传输中的差错都是由于噪声引起的。

全局性 . 由于线路本身电气特性所产生的随机噪声(热噪声),是信道固有的,随机存在的。

解决办法:提高信噪比来减少或避免干扰。(对传感器下手)

局部性 .外界特定的短暂原因所造成的冲击噪声,是产生差错的主要原因。

解决办法:通常利用编码技术来解决。

差错又分为位错和帧错。

链路层为网络层提供服务:无确认无连接服务(通信质量好、有线传输链路),有确认无连接服务,有确认面向连接服务(后面两种是 针对通信质量差的无线传输链路)。

数据链路层的错误主要是比特错,对于 这些有检错编码(奇偶校验码、循环冗余码CRC)、纠错编码(海明码)

只能检查出奇数个错误,检错能力50%。

例:要发送的数据为1101 0110 11 ,采用CRC校验,生成多项式是10011,那么最终发送的数据是?

解答:

最终发送的数据是:要发送的数据+FCS帧检验序列

计算冗余码的步骤是:

(1)加0,假设生成多项式G(x)的阶为r,则加 r 个0 (多项式N位,阶为N-1)

(2)模2除法,数据加0后除以生成多项式,余数为冗余码(又叫FCS、CRC校验码)的比特序列。

那么接收端如何检错呢?

把收到的每一个帧都除以同样的除数,然后检查得到的余数R。

1.余数为0,判定这个帧没有差错, 接受 。

2.余数为不为0,判定这个帧有差错(无法确定到位), 丢弃 。

FCS的生成以及接收端CRC检验都是由硬件实现,处理很迅速,因此不会延误数据的传输。

在数据链路层仅仅使用循环冗余检验CRC差错检测技术,只能做到对帧的无差错接收,即“凡是接收端数据链路层接受的帧,我们都能以非常 接近于1 的概率认为这些帧在传输过程中没有产生差错”。接收端丢弃的帧虽然曾收到了,但是最终还是因为有差错被丢弃。“ 凡是接收端数据链路层接收的帧均无差错”。

“可靠传输”:数据链路层发送端发送什么,接收端就收到什么。

链路层使用CRC检验,能够实现无比特差错的传输,但这还 不是可靠传输 。
相似回答