文档详情

停止等待协议 实验指导

凯和****啦
实名认证
店铺
DOCX
19.63KB
约8页
文档ID:298946153
停止等待协议 实验指导_第1页
1/8

本文格式为Word版,下载可任意编辑停止等待协议 实验指导 中断等待协议 1. 测验目的 1 2. 协议介绍 1 2.1 中断等待协议的简朴介绍(STOP AND WAIT): 1 2.2 帧的布局: 1 2.3 停等协议中相关事情的介绍 2 3. 测验内容和步骤 3 3.1步骤: 3 3.2根本内容: 4 3.3扩展内容: 4 4. 测验要求 4 5. 程序说明 5 5.1主要的数据布局介绍: 5 5.2 主要函数介绍: 6 5.3 重点和难点介绍: 7 6. 参考资料 9 1. 测验目的 了解winsock编程的根本流程? 掌管中断等待协议的根本原理? ? 理解数据链路层的主要功能(数据出错操纵,数据重复操纵,数据损失操纵等等) 分析简朴的协议数据单元? 掌管中断等待协议的运行机制? ? 了解中断等待协议的定量分析 2. 协议介绍 2.1 中断等待协议的简朴介绍(stop and wait): 中断等待协议是数据链路层的几个协议中最简朴的协议,是数据链路层各种协议的根基。

此测验是基于winsock编程,是在VC++6.0的MFC界面下和操纵台下实现的它采用客户机/服务器(C/S)模型,即发送数据的一端为客户端,接收数据的一端为服务器端中断等待协议就是通过双方的收发数据而达成相互通信的目的 当收方收到一个正确的数据帧后,便会向发方发送一个确认帧ACK,表示发送的数据正确接收当发方收到确认帧后才能发送一个新的数据帧,这样就实现了接收方对发送方的流量操纵 由于通信线路质量各方面的影响,数据帧从发送方到接收方传输的过程中可能会展现过错为了保证数据的正确性和完整性,接收方在收到数据后,会用确定的方法对接收到的数据进 行过错检验,所以接收方很轻易检测出收到的数据帧是否展现过错当接收方察觉收到的数据展现过错时,就会向发送方发送一个否认帧NAK,表示对方发送的数据错误发送方会根据接收方发来的信息做出相应的操作采用这样的有效的检错机制,数据链路层可以对上面的网络层供给了稳当的传输的服务 2.2 帧的布局: 帧的类型 帧的序号 帧确实认号 数据信息(可变) 校验位 帧的布局 帧的类型(frame_kind):? 分为数据帧(data_frame),确认帧(ack_frame)和否认帧(nak_frame)三种。

发送方向接收方发送数据,是以帧为单位的,就称为数据帧它的数据信息是可变的,但最正确的帧长为1500个字节 接收方接收数据后,会对收到的数据帧举行过错校验,当数据正确时,就会向发送方发送一个确认帧,以表示发送方发送的数据正确接收了,反之,就会向发送方发送一个否认帧,并把这个出错的数据帧丢弃 帧的序号(seq):? 由于采用的是单工通信,帧的布局中用的操纵域也很少,这个域会随着帧类型的不同而不同: 对数据帧来说:序号(seq)表示的是发送端发送的帧的序号 对确认帧来说:序号(seq)表示的是接收方梦想接收到的帧的序号,它表示seq以前的各帧都已经正确接收,梦想收到序号为seq的帧 对否认帧来说:序号(seq)也是表示接收方梦想收到的数据帧的序号,表示接收方已经收到序号为seq的帧,但是这个帧展现错误,梦想发送方重新发送该数据帧 中断等待协议采用的是单工通信,接收端向发送端发送确实认帧和否认帧中没有数据信息,它们的数据域为空由于是单工通信,发送方只发送数据,所以发送方帧的“帧确实认号”中并没有包含任何确实认信息 2.3 停等协议中相关事情的介绍 帧损失:? 有时,链路上的干扰很严重,或者由于其他的一些理由,接收方收不到发送方发送过来的数据帧,这种处境称为数据帧损失。

发生数据帧损失时,接收方自然不会向发送方发送任何应答帧假设发送方要等收到收方的应答信息后再发送下一个数据帧,那么双方将永远等下去, 这样就展现了死锁现象 为了解决这个问题,可在发送方发送完一个数据帧后,就启动一个超时定时器若到了超时定时器所设置的重发时间tout仍收不到收方的任何应答帧,发送方的计时器发生超时,那么发送方就重传前面所发送的这一数据帧假设在重传时间tout内收到确认信息,那么将超时定时器清零并中断计时tout一般的时间设置为略大于“从发完数据帧到收到确认帧所需的平均时间” 帧重复: 若损失的是应答帧,那么超时重发将会使接收方收到两个同样的数据帧由于接收方无法识别重复的数据帧,因而在接收方收到的数据中展现了一种接收序号过错,称为重复帧 要解决这个问题,务必使每一个数据帧带上不同的发送序号若接收方收到序号一致的数据帧,就说明展现了重复帧这时接收方应当丢弃这个重复帧理应留神到,虽然接收方收到了重复的帧,但它还务必向发送方发送一个确认帧,由于接收方这时已经知道发送方还没有收到上一次接收方向发送方发过去确实认帧 大家都知道,任何一个编号系统的序号所占用的比特数是有限的。

因此,经过一段时间,发送序号就会重复序号占用的比特数越少,数据传输的额外开销就越少对于停等协议,由于每发送一个数据帧就中断等待,因此用一个比特来编号就够了,也就是说序号轮替使用0和1 帧出错:? 数据在传输的过程中,不成能保证100%的正确传输,而错误的数据帧对于接收方来说是没有什么意义的为了制止收到错误的数据帧,接收方在收到数据帧后,就会采用确定的机制对收到的数据帧举行校验,当校验数据正确时,会向高层传送该帧,反之,那么丢弃该帧,从而对上面的网络层供给了传输的服务 3. 测验内容和步骤 3.1步骤: 启动程序? 开启“数据链路层测验”文件? 找到中断等待协议文件? 双击此文件中的两个可执行的程序(server.exe,client.exe)? 运行应用程序? 服务器端: ? 在服务器信息-服务器IP中输入运行这个程序的计算机的IP地址; 在端口PORT 中输入端口号,也可以使用默认的端口号4000;? ? 点击“建立服务器” 按钮,使其处于监听状态,直到有连接苦求; 客户端: ? 在输入服务器信息-输入服务器IP中输入想连接的服务器的IP地址; 在输入端口PORT中输入和服务器一致的端口号;? ? 点击“连接到服务器” 按钮,使其和服务器举行连接; 点击“设置链路参数”按钮,对链路中的每个参数举行设置? 其中,链路的参数主要有: 输入数据的出错率和损失率主要是为了模拟现实的网络线路状态的,这两个参数的值确定后,输入数据的正确率也就定下来了; 传输数据的超时时间,是发送端发送完一个数据帧到收到应答帧所需的时间; 重传次数是当通信线路质量不是很好时,发送端在重传确定的次数后,就不在举行重传,而是终止发送数据; ? 点击“开头发送数据”按钮,在弹出的框中输入要传送的数据,然后单击“确定”,那么表示从网络层取到一个包,在数据链路层中,把这个数据包封装成帧,发送到接收方,重复这一步可以不断的从网络层取到要发送数据 假设不想再往接收端发送数据,那么点击“END” 按钮,退出应用程序? 关闭服务器端的应用程序? 留神:一般的客户机/服务器的运行机制是这样的:服务器端先开启,然后等待客户端的苦求,当客户端发送完数据后,会和服务器端主动断开连接,但客户端和服务器断开的时候,需要向服务器端发送一个特殊的数据帧,以此向服务器端说明客户端的数据已发送完毕,这时服务器端也会向客户端发送一个特殊的响应帧,来说明服务器端已做好了和这一客户端断开的打定。

本测验采用的是这样的一个机制来实现客户端和服务器端断开连接的:它采用了中断等待协议中帧的布局中的一些变量来交互断开的信息当客户端不再向服务器端发送数据的时候,便向服务器端发送一个具有两位数,且内容都是“1”的数据信息,然后封装成帧,发送到接收端当接收端收到这个特殊的帧后,会把向客户端发送确认帧中的校验位中的值置为“111”,表示接收端已经知道客户端要和它断开连接当客户端收到接收端发送来的这个确认帧后,便和服务器端断开连接,那么点击“END” 按钮,退出应用程序 3.2根本内容: 通过对链路参数举行不同的设置,留心查看不同的设置对程序的运行有什么影响?? ? 每发送一个数据帧后,分别查看客户端和服务器端的运行结果,体会中断等待协议采用什么样的机制来发送和接收数据信息的? ? 根据对链路参数不同的设置,记录中断等待协议中发送端数据帧损失复、帧错误、超时重传次数等各种情形的发生,以加深协议中数据出错操纵,数据重复操纵,数据损失操纵及协议对这些处境的处理的理解 3.3扩展内容: 通过阅读源程序,画出服务器端和客户端的程序流程图? ? 对源程序举行阅读分析,了解程序实现的概括的细节,掌管服务器和客户端传送数据的机制 重点分析等待事情的实现和模拟链路参数的实现? 4. 测验要求 根本要求 ? 记录测验的根本数据,包括选用的计算机的IP地址、连接的端口号、发送端的参数的设置,超时时间的设置,服务器和客户机双方发送的和接收到的数据 ? 记录测验中对数据损失率,数据出错率等链路参数的设置和相应的测验的结果 根据接收端收到十六进制的数据帧的信息,把它转换成发送端发送的原始的数据? 根据你的机器是发送端还是接收端,填写下面的表格1和表格2: 数据表格 1 发送端: 协议名称 服务器IP 端口号(PORT) 参数设置 出错率 损失率 超时时间 重传次数 发送数据 接收信息 数据表格2 接收端: — 8 —。

下载提示
相似文档
正为您匹配相似的精品文档