滑动窗口实验报告.docVIP

  • 1
  • 0
  • 约1.4千字
  • 约 3页
  • 2023-04-22 发布于山东
  • 举报
滑动窗口实验报告(含源码) 一、实验目的 实现一个数据链路层协议的数据传达部分。 更好地理解数据链路层协议中的“滑动窗口”技术的基本工作原理。 掌握计算机网络协议的基本实现技术。 二、实验要求 在一个数据链路层的模拟实现环境中,用C语言实现下两个数据 链路层协议。 1比特滑动窗口协议 回退N帧滑动窗口协议三、实验内容 充分理解滑动窗口协议,依照滑动窗口协议,模拟滑动窗口协议中发送端的功能,对系统发送的帧进行缓存并加入窗口等待确认,并在超时也许错误时对部分帧进行重传。 编写停等及退回N滑动窗口协议函数,响应系统的发送央求、接收帧信息以及超时信息,并依照滑动窗口协议进行相应办理。 四、源代码及说明 #include #includeiostream usingnamespacestd; externvoidSendFRAMEPacket(unsignedchar*pData,unsignedintlen);ead=*p; buffer[last_buffered_frame%BUFFER_SIZE].size=bufferSize; ize); continue; SendFRAMEPacket((unsignedchar*)(buffer[i%BUFFER_SIZE]),buffer[i%BUFFER_SIZE].size); } return0; } default:break; } return-1; } /* 回退n帧测试函数 */ intstud_slide_window_back_n_frame(char*pBuffer,intbufferSize,UINT8messageType) { Frame_head*p=(Frame_head*)pBuffer; unsignedinttimeoutNum=*(unsignedint*)pBuffer; switch(messageType) { ead=*p; buffer[last_buffered_frame%BUFFER_SIZE].size=bufferSize;++last_buffered_frame; coutexp_ack:exp_ackendl; if(ack=exp_ack) { ++expect_frame; if(next_framelast_buffered_frame) { SendFRAMEPacket((unsignedchar*)(buffer[next_frame% BUFFER_SIZE]),buffer[next_frame%BUFFER_SIZE].size);++next_frame; } } elsebreak; } return0; } ize); } return0; } default:break; } return-1; } /* 选择性重传测试函数 */ intstud_slide_window_choice_frame_resend(char*pBuffer,intbufferSize,UINT8messageType) { return0; } 五、思虑题 退回N帧协议不用像1bit滑动窗口协议相同,赞同发送完一帧后不等确认帧而连续发送,提高了发送效率。 缺点是在重传时可能重新传达已经正确发送的数据帧。

文档评论(0)

1亿VIP精品文档

相关文档