滑动窗口协议模拟-Read.docVIP

  • 30
  • 0
  • 约3.06千字
  • 约 9页
  • 2018-12-10 发布于天津
  • 举报
滑动窗口协议模拟-Read.doc

编程环境: 操作系统:Windows XP SP2 开发语言:C++ / MFC 编译环境:MS Visual C++6.0 使用说明: 界面 图1为接收程序界面,界面上有4个功能区,如图1所示。 图1 接收程序界面 参数设置区可以设定3个参数:第1个参数为接收窗口大小,因为帧序列号为4位,所以接收窗口大小的设置范围为1~8。其中设为1相当于使用后退n帧技术的滑动窗口协议,设为大于1的值则相当于使用选择性重传策略的滑动窗口协议。第2个参数为接收速率设定,编辑框中填入的是接收定时器的间隔时间,单位为ms,1000表示接收速率为每秒处理1个包。第3个参数是辅助定时器设定,该值表示接收方收到一个数据包后当没有反向流量捎带应答时,等待发送一个单独的应答包的延迟时间。 出错控制区可以手工设定丢失的应答帧,直接填入帧序列号即可,使用空格分隔。 当前状态区显示运行时刻的一些状态信息,例如当前接收窗口范围、令牌数等。 输出窗口用来显示运行时刻的接收方相关信息,通过该窗口可以看到协议的交互和运行过程。 接收方参数全部设置完毕后就可以点击“开始接收”按钮等待接收数据。 图2为发送程序界面,界面上同样有4个功能区,如图2所示。 图2 发送程序界面 参数设置区可设定3个参数:第1个参数为发送窗口大小,因为帧序列号为4位,所以发送窗口大小的设置范围为1~15。第2个参数为发送速率设定,编辑框中填入的是发送定时器的间隔时间,单位为ms,1000表示发送速率为每秒发送1个数据包。第3个参数是重发定时器设定,该值表示接收方在发送1个数据包之后、没有收到该包的应答帧之前,等待重发该数据包的间隔时间。 出错控制区可以手工设定出错的或丢失的数据帧,直接填入帧序列号即可,使用空格分隔。 当前状态区显示运行时刻的一些状态信息,例如当前发送窗口范围、当前发送的帧序列号等。 输出窗口用来显示运行时刻的发送方相关信息,通过该窗口可以看到协议的交互和运行过程。 当发送方参数全部设置完毕,并且接收方也开始等待接收后,就可以点击“开始发送”按钮发送数据。 使用说明 由于发送程序和接收程序在代码中直接使用了本地地址127.0.0.1进行连接,因此收发程序应在同一台主机上运行。 正常发送模式测试 图3(a)正常发送模式测试——发送端 图3(b)正常发送模式测试——接收端 发送窗口与接收窗口都是8,序列号为从0到15,发送了8帧以后发送方收到ack7,表示接收方对发送方前8帧的确认。注意:尽管接收方辅助定时器设置为2秒,但接收方对0号帧的确认并没有在收到0帧2秒后发出,这是因为在辅助定时器超时之前,后续到来的正确的帧会重置(reset)辅助定时器,使其被重新设为2秒,因此,直到7号帧到达后,发送方窗口被占满而停止发送,此时接收方辅助定时器开始计时,并在2秒后发送ack7,表示对7号帧之前所有帧的确认。与此同时,在发送方收到ack7确认帧时,已经经过的时间为9秒,而重发定时器设置为10秒,因此并没有导致0号帧超时重传。可见,辅助定时器与超时定时器的设置是密切相关的,要想滑动窗口协议正确流畅的运行,将相关参数调整到一个合适的值很十分必要的。一个简单的规则是,与数据帧相关联的重发定时器的超时间隔应显著大于辅助定时器的超时间隔(事实上,重发定时器的值至少应大于等于辅助定时器超时间隔与发送窗口最大值之和)。 帧校验错测试 在做新的测试前,首先将发送端和接收端进行重置,即两端都先停止再重新开始,然后再做后续测试(如果需要,停止后可以修改相关参数)。 图4(a)帧校验错测试——发送端 图4(b)帧校验错测试——接收端 通过手工设置2号帧的校验和错误来模拟信道传输中的误码情况。可以看到接收方在收到2号错误帧后马上向发送方回送了一个nak2的否定应答帧,发送方在收到nak2后也立即重传了该帧,因此nak机制加速了错误帧的重传过程(否则如果接收方直接丢弃的话,就只能等到发送方2号帧的重发定时器超时后进行重传) 帧丢失测试 图5(a)帧丢失测试——发送端 图5(b)帧丢失测试——接收端 同帧校验和错误类似,帧丢失错误同样会引发接收端回送nak否定应答消息。不同的是,nak否定应答帧是在丢失帧的下一帧收到后发出的。如图5所示,由于传输过程中2号帧丢失,接收端在收到1号帧后,接下来收到了3号帧,这时,接收端知道由于某种原因2号帧丢失了,于是立即发送了2号帧的否定应答帧。在发送端收到该nak2帧后,也马上重传了该帧,nak机制同样加快了对丢失帧的重传操作。 确认帧丢失测试 图6(a)确认帧丢失测试——发送端 图6(b)确认帧丢失测试——接收端 注意,本次测试前首先调整了接收端的辅助定时器时间参数,将回送应答的时间设置为0.5秒,这样接收方每收到一帧,都会在下一帧到来之前回送上一帧的确认。如果不这样做,仍

文档评论(0)

1亿VIP精品文档

相关文档