实验5 信号的检错与纠错
练习一 线性块编码的实现与分析
实验学时
0.5学时
实验目的
● 掌握差错控制的类型
● 掌握汉明距离的计算
● 掌握几种常用的线性块编码
实验环境
网络拓扑结构一
实验工具
虚拟通信工具
实验任务
任务一 实例计算
任务一 实例计算
1. 计算汉明距离d(10101,11110);
异或:01011
d=3
2. 根据实验原理的学习,计算下表中的编码方案的最小汉明距离。
D(00000,01011)=3
D(00000,10101)=3
D(00000,11110)=4
D(01011,10101)=4
D(01011,11110)=3
D(10101,11110)=3
Dmin=3
练习二 循环编码的实现与分析
实验学时
0.5学时
实验目的
● 掌握循环冗余校验
● 掌握循环编码方法及其编码特点
实验环境
网络拓扑结构一
实验工具
虚拟通信工具
实验任务
任务一 循环编码实现与分析
任务一 循环编码实现与分析
本任务每台主机为一组。现仅以主机A所在组为例,其它组的操作参考主机A所在组的操作。
1. 搭建仿真线路
(1)打开虚拟通信工具,新建仿真视图;
(2)选择随机信号、[7,4]循环码编码、[7,4]循环码译码、信号输出器,连接循环码编译码的仿真线路图,如下图所示;
2. 器件参数设置
(1)设置随机信号的参数,输入方式选择随机输入,由用户自行输入待编码的二进制数的长度,如输入8位,输出方式选择字符输出,其他参数保持默认值;
(2)为了方便观察结果其他器件的输出方式均选择字符输出,其他参数均可保持默认值;
3. 仿真结果分析
(1)运行仿真线路,观察分析编码前后、解码前后码元序列的变化,分析[7,4]循环码编码和译码的实现过程;
(2)重新调整随机信号的输入位数,重新运行,对比上面的结果进行分析,验证[7,4]循环码编码原理;
(3)实验结论。
在编码器中,数据字有k(4)位,码字有n(7)位,在数据字的右边加上(n-k)=(3)位,n位结果传给生成器,生成器使用长度为n-k+1=4的除法。这个除数是预定义并经过双方同意的。生成器用除数除增加后的数字(模2除法)除法的商被丢弃,余数加到数据字上生成码字。如果校正字全0,码字最左边的m位被接收为数据字(被认为无差错),否则,这m位被丢弃(有差错)。
练习三 因特网校验和的计算
实验学时
0.5学时
实验目的
● 掌握校验和的概念
● 掌握因特网校验和的计算方法
● 掌握因特网校验和的性能
实验环境
网络拓扑结构一
实验工具
因特网校验和工具
协议分析器
实验任务
任务一 因特网校验和的计算
任务一 因特网校验和的计算
各主机打开协议分析器,进入相应的网络结构并验证网络拓扑的正确性,如果通过拓扑验证,关闭协议分析器继续进行实验,如果没有通过拓扑验证,请检查网络连接。
本任务每两台主机为一组,将主机A和B作为一组,主机C和D作为一组,主机E和F作为一组。现仅以主机A和主机B所在组为例,其它组的操作参考主机A和主机B所在组的操作。
1. 主机A和主机B建立连接。
(1)主机B模拟信息接收端,打开因特网校验和工具,设置类型为“接收方”,地址默认,端口设置为6006(这里端口号可以任意设置,但保证不被系统占用即可);点击右侧的“创建”按钮,等待主机A的连接;
(2)主机A模拟信息发送端,打开因特网校验和工具,设置类型为“发送方”,地址为接收端主机B的IP地址,端口设置与主机B相同,设置为6006;
(3)主机A点击参数后面的“连接”按钮,建立与主机B的连接;
2. 主机A模拟信息发送端进行数据发送操作。
(1)在发送信息处,输入要发送的信息,发送数据为8位字符,(数字0-9或字符A-Z/a-z),例如我们这里选择发送Forouzan;
(2)点击“转换十六进制”按钮,将输入的待发送数据Forouzan转换成十六进制;
(3)点击“计算校验和”按钮,出现因特网校验和演示界面,在此界面中,待发送的数据报文已经添加完成,校验和设置为全0;
(4)我们需要手动计算“十六位字”与“校验和”的和,填入下面的“和(部分和)”,并将求出的进位填入最上方的“进位”处。最后一个进位会自动写入“和(部分和)”的下一行。此时再计算出“和(部分和)”与最高进位的和,填入下面的“和”处。最后再对这个“和”求反,得出“校验和(发送)”;
(5)计算完成后,点击“校验”按钮,对其进行校验,如果填入的数据有误,会以红色显示提示,需要重新填写,如无误,填写完成下面的表格,然后点击“确定”,回到初始界面。
● 记录实验数据。
发送端校验和的计算
发送端 | 数据 |
校验和(初始值) | 0000 |
和(部分和) | CCD0 |
进位 | 0001 |
和 | CCD0 |
校验和(发送) | 332F |
(6)在传输类型中选择“正常传输”或者“异常传输”,异常传输是指待发送的数据将随机改变一位,我们这里先选择正常传输,点击“发送”,将数据发送给主机B,此处允许连续发送。
3. 主机B接收到数据后,进行操作。
(1)点击“计算校验和”按钮,进入因特网校验和演示界面,在此界面中,接收的数据已添加完成;
(2)我们需要手动计算,得出这些十六位字的和,填入下面的“和(部分和)”,并将求的进位填入最上面的“进位”处。最后一个进位会自动写入“和(部分和)”的下一行。此时再计算出“和(部分和)”与最高进位的和,填入下面的“和”一行处。最后再对这个“和”求反,得出“校验和(新)”;
(3)计算完成后,点击“校验”按钮,对其进行校验,如果填入的数据有误,会以红色显示提示,需要重新填写,如无误,填写完成下面的表格,然后点击“确定”,回到初始界面;
● 记录实验数据。
接收端校验和的计算
发送端 | 数据 |
校验和(接收到) | 332F |
和(部分和) | FFFF |
进位 | 0001 |
和 | FFFF |
校验和(新) | 0000 |
(4)此时的校验和已被刚才的数据填入,如果是0000,则后面显示,否则显示;
(5)在接收信息处,我们可以看到,如果接收方校验和是0000,则显示“校验和的值是0,接收报文,数据为:主机A发送的原始数据信息(该任务中显示Forouzan)”,否则显示“校验和的值不是0,丢弃报文”。
4. 重新设置传输类型,重新进行实验。
(1)主机A可以将刚才设置的发送信息,选择“异常传输”,点击“发送”;
(2)主机B接收数据,并对数据进行校验,查看校验和是否为全0,判断报文传输是否正确,正确则接收,错误则丢弃;
(3)主机A和主机B完成实验操作后,分别记录校验和的计算过程数据以及实验的结果数据。
实验记录:
发送端校验和计算:
发送端 | 数据 |
校验和(初始值) | 0000 |
和(部分和) | CCD0 |
进位 | 0001 |
和 | CCD0 |
校验和(发送) | 332F |
异常传输后接收端校验和计算
发送端 | 数据 |
校验和(接收到) | 332F |
和(部分和) | 00FF |
进位 | 1101 |
和 | 0100 |
校验和(新) | FEFF |
实验结果:
(1)正常传输,检验和的值为0,接收报文,数据为30 31 32 33 34 35 36 37。
(2)异常传输:检验和的值不为-0,丢弃报文。
结论:
检验和使用较少的(16)位来检测任何长度报文中的差错。
发送方站点:
(1)报文被划分为16位字
(2)校验和设置为0
(3)所有字包括校验和使用反码运算相加
(4)求反变成校验和
(5)数据和校验和一起发送
接收方站点:
(1)报文被划分为16字
(2)用反码加法将所有字相加
(3)对该和求反形成新的校验和
(4)如果校验值为0则接收,否则丢弃报文。