- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
云南大学软件学院计算机网络原理实验八--第1页
精品文档
实验八、链路层实验——基于CRC编码的检错程序的实现
一、实验目的
1、通过实验,掌握CRC编码和解码的原理。
2、掌握基于CRC编码的差错检测技术。
二、实验指导
现在计算机网络广泛采用的差错检测技术是基于CRC(cyclicredundancycheck)循
环冗余检测编码,CRC也称为多项式编码(polynomialcode),CRC算法非常容易用硬件实
现。
CRC编码操作如下:
对给定的数据D,发送者选择r个附加位,追加到D的末尾,形成d+r位的新位型,该
位型正好能被G模2除尽。其中,G称为生成器。
CRC编码算法实现:
1、选择生成多项式G,其最高次方为r,即r+1位的二进制位串
2、r
计算D·2,即在数据D后面补r个0,构成d+r位的位串
r
3、按模2除法求(D·2/G)的余数R
r
4、从D·2中模2加上R,得到新的数据T,即加了CRC的帧
三、实验要求
1、
设置一个d位的数据D,r+1位的多项式G,生成CRC码,并把此CRC码作为数据帧进行
传送。
2、编写两个子程序,分别实现CRC编码和CRC解码,在主函数中对子程序进行调用。解码
子程序应能根据解码情况判断出接收到的数据帧是否出错,并给出提示。
3、要求分别以正确和错误的数据来检验此检错程序。
4、将编写程序的源代码加必要注释和程序运行结果一起填入实验报告中。
提示:
1、编写程序时数据直接用二进制数,可能用到位操作符^(异或)和(左移)。
2、在设置错误的编码时,错误位数最好不要超过r+1位。
四、程序代码
#includestdlib.h
voidcrc_code(intA[],intG[],intx,intn)//编码子程序,异或函数,求余
数
{
inti,j,k;
1。
欢迎下载
云南大学软件学院计算机网络原理实验八--第1页
云南大学软件学院计算机网络原理实验八--第2页
精品文档
for(k=0;kx;k++)
输出补零以后的数
for(i=0;i=x-n+1;i++)
{
if(A[i]==1)//当首位为1时进行异或
{
for(j=0;j=n-1;j++)
{
if(A[i+j]==G[j])
A[i+j]=0;//异或运算,相同为0,不同为1
else
A[i+j]=1;
}
输出每
文档评论(0)