网络通信基础之检错与纠错

二维奇偶校验

循环冗余校验(CRC)

是一种通过多项式除法检测错误的方法,将每个比特串看作一个多项式,采用模2运算。通常它将比特串:bn-1bn-2bn-3 … b2b1b0解释成多项式:bn-1xn-1 + bn-2xn-2 + bn-3xn-3 + … + b2x2 + b1x1 + b0x0

如果采用多项式编码的方式,发送方和接收方必须事先商定一个生成多项式G(x),生成多项式的高位和低位必须为1。以下4个生成多项式已经成为国际标准。

CRC-12:x12 + x11 + x3 + x2 +x +1

CRC-16:x16 + x15 + x2 +1

CRC-CCITT:x16 + x12 +x5 +1

CRC-32:x32 + x26 + x23 + x22 + x16 +x12 + x11 +x10 +x8 + x7 +x5 + x4 +x2 +x +1

对m位的数据M(x),要进行循环冗余校验,发送方的处理过程如下:

(1) 设G(x)为r阶,在数据的末尾附加r个0,使数据为m+r位,则相应的多项式B(x) = xr M(x)。

(2) 按模2除法用对应于G(x)的位串去除对应于B(x)的位串,求出余数R(x)。

(3) 按模2减法从对应于B(x)的位串中减去余数,结果就是要传送带循环冗余校验的帧T(x)=B(x)-R(x)。

很显然,T(x)能被G(x)除尽。因此当接收方收到的比特流相应的多项式为T(x)时,接收方将T(x)除以G(x),若余数为0,则接收方认为T(x)=T(x),否则发生错误。

检错重发(ARQ)

(1)停发等候重发

(2)返回重发

(3)选择重发

猜你喜欢

转载自blog.csdn.net/lpw_cn/article/details/84948239
今日推荐