北邮计算机网络实验:GoBackN协议与选择重传实现

需积分: 22 24 下载量 26 浏览量 更新于2024-09-08 3 收藏 106KB DOC 举报
本实验报告主要探讨的是北京大学邮电学院的计算机网络课程中的一个重要实践环节,即GoBackN协议的实现。实验内容围绕滑动窗口协议展开,目标是在具有特定条件的仿真环境中,设计并编程实现一种在无差错双工卫星信道上工作的通信协议。信道特性包括8000bps速率、全双工模式、270毫秒传播时延、10^-5的误码率,以及256字节的固定网络层分组长度。 实验环境为Windows 10操作系统,配合Microsoft Visual Studio 2017开发工具。参与者需要编写的数据链路层程序存放在datalink.c中,需遵循特定的源程序书写格式要求。此外,实验涉及到的关键组件包括库函数如protocol.h中的函数原型和宏定义,以及用于处理命令行参数的getopt.c中的getopt_long()函数。gbn.exe是Go-Back-N协议的一个参考实现,它集成了ACK技术,通过发送和接收数据包来交换数据,并利用控制信息进行错误检测和恢复。 GoBackN协议的核心部分是滑动窗口机制,它使用搭载ACK技术,通过字节填充的标志字节法来成帧。帧的开始和结束由特殊的字符FLAG标识,当有效载荷包含标志字节或转义字节时,需要添加ESC转义字节。接收端在传递给网络层之前会移除转义字符。在数据传输过程中,如果遇到帧丢失(例如,序号跳跃或CRC错误),发送方会主动发送NAK(否定帧);如果长时间未收到确认(ACK),发送方会触发ACK超时并重新发送数据;若数据帧长时间未得到确认,则会触发数据帧超时并进行重传。 在软件设计方面,关键的数据结构包括帧结构体,其中包含了帧类型(FRAME_DATA、FRAME_ACK、FRAME_NAK)、ACK或NAK的序号、数据帧的序号等信息。整个实验不仅锻炼了学生的编程能力,还让他们深入理解了滑动窗口协议的工作原理、错误检测与恢复机制,以及在实际通信环境中的应用。 通过这个实验,学生能够掌握在嘈杂的卫星信道上实现可靠数据传输的技术,增强对TCP/IP协议族的理解,并提升问题解决和调试能力。这在信息技术领域具有很高的实践价值,对于未来从事网络工程、系统集成等工作具有重要意义。