差错来源
- 概括来说,传输中的差错都是由于噪声引起的。
数据链路层的差错控制
冗余编码
- 在数据发送之前,先按某种关系附加上一定的冗余位,构成某一个符合某一规则的码字后再发送。当发送的有效数据变化时,相应的冗余位也随之变化,使码字遵从不变的规则。接收端根据收到码字是否仍符合原规则,从而判断是否出错。
检错编码–奇偶校验码
- 奇偶是指加了冗余位后1的个数是奇数个还是偶数个,而判断的依据是接受到的数据中是奇数个1还是偶数个1,也就是说如果同时错两位这个方法是无法判断出来接收的数据是不是错误的。
- 奇偶校验码是在原信息后面加一个0or1来校验,奇校验—附加后整体数据有奇数个1则数据正确,偶校验—附加后整体数据有偶数个1则数据正确。
- 下题D检测不出。
- 即:只能检测出 一定是出错的 ,如果有奇数个比特出错,“1”的个数的奇偶性发生变换(相当于原本是偶数个“1”会变成奇数个“1”) 但是富国有偶数个比特出错,“1”的个数的奇偶性没变,就判断不出到底有没有出错。
- 无论输出方输出奇个1还是偶个1,若是接收方发现错误,一定是奇个比特位出错,而偶个比特位出错无法察觉出来,因为偶个比特位出错仍然符合奇偶检验码规则。
循环冗余码
定义
- 循环冗余校验码由信息码 n 位和校验码 k 位构成。k位校验位拼接在 n 位数据位后面,n+k 为循环冗余校验码的字长,又称这个校验码(n+k, n)码。
- n 位信息位可以表示成为一个报文多项式 M(x),最高次幂是 Xn - 1。约定的生成多项式G(x)是一个k+1位的二进制数,最高幂次是xk。将M(x)乘以xk,即左移k位后,除以G(x),得到的k位余数就是校验位。这里的除法运算是模2除法,即当部分余数首位是1时商取1,反之商取0。然后每一位的减法运算是按位减,不产生借位。
特点
- 理论上可以证明循环冗余校验码的检错能力有以下特点:
①可检测出所有奇数位错;
②可检测出所有双比特的错;
③可检测出所有小于、等于校验位长度的突发错。
例子
接受检错过程
- 在数据链路层仅仅使用循环冗余校验CRC差错检测技术,只能做到对帧的无差错接收,即“凡是接收端数据链路层接受的帧, 我们都能以非常接近于1的概率认为这些帧在传输过程中没有产生差错”。接收端丢弃的帧虽然曾收到了,但是最终还是因为有差错被丢弃了。“凡是接收端数据链路层接收的帧居无差错”。
可靠传输
- 数据链路层发送端发送什么,接收端就接受到什么。
- 链路层使用CRC检验,能够实现无比特差错的传输,但这还不是可靠传输。
笔记出处
王道计算机考研 计算机网络