数据链路层协议的设计_第1页
数据链路层协议的设计_第2页
数据链路层协议的设计_第3页
数据链路层协议的设计_第4页
数据链路层协议的设计_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程名称:计算机网络数据链路层协议系 别:计算机科学系年级专业:学 号:姓名:任课教师:成绩:2015年11月11日 前言数据链路层是OSI参考模型中的第二层,介乎于物理层和网络层之间。数据链路层在物理层提供的服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。为达到这一目的,数据链路必须具备一系列相应的功能,主要有:如何将数据组合成数据块,在数据链路层中称这种数据块为帧(frame),帧是数据链路层的传送单位;如何控制帧在物理信道上的传输,包括如何处理传输差错,如何调节发送速率以使与接收方相匹配;以及在两个网络实体之间提供数据链路通路的建立、

2、维持和释放的管理。数据链路层的最基本的功能是向该层用户提供透明的和可靠的数据传送基本服务。透明性是指该层上传输的数据的内容、格式及编码没有限制,也没有必要解释信息结构的意义;可靠的传输使用户免去对丢失信息、干扰信息及顺序不正确等的担心。在物理层中这些情况都可能发生,在数据链路层中必须用纠错码来检错与纠错。数据链路层是对物理层传输原始比特流的功能的加强,将物理层提供的可能出错的物理连接改造成为逻辑上无差错的数据链路,使之对网络层表现为一无差错的线路。如果您想用尽量少的词来记住数据链路层,那就是:“帧和介质访问控制”。 数据链路层一、实习目的 计算机网络的数据链路层协议保证通信双方在有差错的通信线

3、路上进行无差错的数据传输,是计算机网络各层协议中通信控制功能最典型的一种协议。 本实验实现一个数据链路层协议的数据传送部分,目的在于更好地理解基本数据链路层协议的基本工作原理,掌握计算机网络协议的基本实现技术。二、实习时间 (第 12 周到 13周)三、 实习地点 福建农林大学东方学院网络实验室四、实习单位和部门 福建农林大学东方学院 五、 实习内容5.1实验内容使用C 语言实现下面数据链路层协议:1. 分析和实现一个理想的链路层协议  2. 对于前面实现的协议进行扩充,实现它的第一次改进,如何防止发方过快淹没收方。  3. 

4、;对上一步再假设在不可靠的的链路上进行通信。 5.2实验步骤 1. 熟悉数据链路层协议的功能; 2. 编写数据链路层协议的实现程序; 3. 调试并运行自己编写的协议实现程序; 4. 了解协议的工作轨迹,如出现异常情况,在实验报告中写出原因分析;  5. 保留你实现的数据链路层协议,以备教师检查。    5.3实验过程  5.3.1程序功能及设计思路  功能概述: 用客户端/服务器模式代表A站、B站。先由客户端输入服务器IP地址

5、,发送SYN同步帧,告诉服务器准备接受。客户端输入数据后,会进行CRC编码,再发送数据帧;服务器收到后,先进行校验,数据正确则发送ACK帧,客户端则发送下一帧数据;否则服务器发送NAK帧,客户端重新发送该数据。 CRC校验: 1) 将收到的字符转为int型(32位),并将其二进制码左移16位,存于data; 2) 进行C(D)=Remainder(S(D)DL)/g(D) ,即CRC校验,得到校验位。  3) 将校验位加在信息元后,组成24位的码字,存于要发送的数据帧dframe。  停等式ARQ协议:&

6、#160;Client:  1) 置SN=0; 2) 收到数据,将SN分配给该数据,如果没有收到,则等待; 3) 存于要发送的数据帧中,发送给server; 4) 如果从server收到确认帧,且RN>SN,则SN加1(模2),返回2;如果收到NAK或RN=SN,则返回3,重传数据。  Server: 1) 置RN=0; 2) 从client收到一个SN=RN的帧,进行CRC校验检查,无错后输出,并置RN加1、发送ACK帧;否则发送NAK帧

7、,请求重发。5.4 C语言程序代码:其客户端主要部分代码:Client: /* client.c * #include<winsock.h> /WINSOCK API的头文件,需要包含在项目中#pragma comment(lib,"ws2_32.lib") /WINSOCK API连接库文件#include<stdio.h> #include<string.h> int err; SOCKET sock; /用于服务器监听的Socket SOCKADDR_IN addrSrv; /服务端地址unsigned char sendBuf10

8、0; /发送缓存char serverIp20; /客户端ip地址int socklen=sizeof(SOCKADDR_IN); /Socket的地址值的长度int cf_len=sizeof(struct sockaddr); struct dataFrame /数据帧 int seq; /分段消息的序号int SN; /发送序号unsigned int data100; int msglen; /字符长度,采用长度计数的组帧技术; struct conFrame /控制帧 int RN; /接收序号char type3; /表明帧的类型:SYN同步、EOT送毕、ACK确认应答、NCK否定

9、应答; struct dataFrame dframe; struct conFrame cframe; /* 初始化* void initialization() WORD wVersionRequested; WSADATA wsaData; wVersionRequested = MAKEWORD( 1, 1 ); /WinSocket1.1版本err = WSAStartup( wVersionRequested, &wsaData ); /wsaData用来存储系统传回的关于WinSocket的资料if ( LOBYTE( wsaData.wVersion ) != 1 |

10、HIBYTE( wsaData.wVersion ) != 1 )WSACleanup( ); return; /* 计算CRC-16* /基于32位系统,int型长度为4字节,CRC-16的生成多项式为g(D)=D16+D15+D2+1 void caculate_crc16(unsigned char*msg,int lenth,unsigned int *crc) unsigned int data=0; int i,j; / char s32; /用于测试时显示二进制码for(i=0;i<lenth;i+,crc+,msg+) data=(int)*msg; / itoa(dat

11、a,s,2); /把整数转为二进制码/ printf("第%d字的二进制码:%sn",i+1,s); /test *crc=data<<16; for(j=0;j<16;j+) if(data&0x8000) data=(data<<1)&0xffff; data=data0x8005; else data=(data<<1)&0xffff; *crc=*crc|data; /把校验位放在信息元后面,存在一个int变量中/ itoa(*crc,s,2); / printf("加上CRC校验位后的二进

12、制码%sn",s);/test 6、 代码功能的相关结果6.1测试1:在没有传输错误情况下,在dos界面显示的传递内容的二进制码和CRC校验码Client: 222.25.162.196,发送数据“yl”,显示“message is delivered successfully”后关闭连接。Server: 222.25.162.196,收到数据“yl”,与上图对比,码字正确,则正确输出数据。6.2测试2:在传输出错情况下,在dos界面显示传递内容的二进制码和CRC校验码Client:222.25.162.196,发送数据“yl”,传输出错收到NAK后重传数据。Server: 222.

13、25.162.196,与上图的二进制码对比发现,第2个码字最后1一位出错,程序显示“message is wrong”,然后等待客户端重传。6.3通信测试:在dos界面进行通信,但隐藏了二进制码、校验码,实现的是数据的透明传输。Client:222.25.162.5Server:222.25.162.196分析:从上面两图可以看出,服务端和客户端可以实现通畅且准确无误的通信,基本能够实现预期功能。七、 实习总结 通过本次实习,对数据链路层中数据帧的传输和CRC校验有了更深的了解,不仅仅是停留在书本的理论上了,而且自己对网络编程也有了更大的兴趣,通过自己动手收集资料,一步步的设计,对于以后逻辑分析能力有很大的帮助。然后让我知道了链路管理的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论