文档介绍:计算机网络实验报告(三)
——编程实现可靠数据传输原理 GO-BACK-N
(一)实验目的:
运用各种编程语言实现基于Go-Back-N 的可靠数据传输软件。通过本实验,使学生能够对可靠数据传输原理有进一步的理解和掌握。
实验内容:
(1).选择合适的编程语言编程实现基于Go-Back-N 的可靠数据传输软件。
(2).在实际网络环境或模拟不可靠网络环境中测试和验证自己的可靠数据传输软件。
实验原理:
:Go-Back-N ARQ
中文翻译为后退N式ARQ、回退N式ARQ。该协议对传统的自动重传请求(ARQ,Automatic Repeat reQues)进行了改进,从而实现了在接收到ACK之前能够连续发送多个数据包。
在Go-Back-N ARQ中,发送端不需要在接收到上一个数据包的ACK后才发送下一个数据包,而是可以连续发送数据包。在发送端发送数据包的过程中,如果接收到对应已发送的某个数据包的NACK,则发送端将NACK对应的某个数据包进行重发,然后再将该数据包之后的数据包依次进行重发。
后退N帧ARQ的图例:
后退N帧ARQ就是从出错处重发已发出过的N个帧。
-Back-N 的有限状态机模型表示如图所示:
(a)
(b)
Go-Back-N 的有限状态机模型(a)发送端(b)接受端
实验步骤:
在eclipse平台编写并调试GBN模拟java程序,观察三组以上实验结果,验证程序可以正确模拟GBN的发送规则。
(五)实验结果:
以下为随机数模拟的某次发送情况:
接收方开始接收分组数据!
发送方开始发送分组数据!
发送方现在开始第一次发送序号为0的数据分组
当前窗口内的分组情况为:
第0号窗口里面存放的是序号为1的马上待发送的数据分组!
第1号窗口里面存放的是序号为2的马上待发送的数据分组!
第2号窗口里面存放的是序号为3的马上待发送的数据分组!
接收方收到了序号为0的分组!
该数据分组正是接收方所期待的,接收方接受了它并准备回送对应的ACK!
发送方收到了ACK,序号为0并且开始加以确认!
发送方现在开始第一次发送序号为1的数据分组
当前窗口内的分组情况为:
第0号窗口里面存放的是序号为2的马上待发送的数据分组!
第1号窗口里面存放的是序号为3的马上待发送的数据分组!
第2号窗口里面存放的是序号为4的马上待发送的数据分组!
发送数据分组时发生延迟:1200毫秒!
接收方收到了序号为1的分组!
该数据分组正是接收方所期待的,接收方接受了它并准备回送对应的ACK!
发送方收到了ACK,序号为1并且开始加以确认!
发送方现在开始第一次发送序号为2的数据分组
当前窗口内的分组情况为:
第0号窗口里面存放的是序号为3的马上待发送的数据分组!
第1号窗口里面存放的是序号为4的马上待发送的数据分组!
第2号窗口里面存放的是序号为5的马上待发送的数据分组!
发送数据分组时发生延迟:750毫秒!
序号为2的分组在传给接收方途中发生了丢包!
发送方开始重新发送序号为 2的数据分组
发送数据分组时发生延迟:750毫秒!
接收方收到了序号为2的分组!
该数据分组正是接收方所期待的,接收方接受了它并准备回送对应的ACK!
发送方收到了ACK,序号为2并且开始加以确认!
发送方现在开始第一次发送序号为3的数据分组
当前窗口内的分组情况为:
第0号窗口里面存放的是序号为4的马上待发送的数据分组!
第1号窗口里面存放的是序号为5的马上待发送的数据分组!
第2号窗口里面存放的是序号为6的马上待发送的数据分组!
发送数据分组时发生延迟:300毫秒!
接收方收到了序号为3的分组!
该数据分组正是接收方所期待的,接收方接受了它并准备回送对应的ACK!
发送方收到了ACK,序号为3并且开始加以确认!
发送方现在开始第一次发送序号为4的数据分组
当前窗口内的分组情况为:
第0号窗口里面存放的是序号为5的马上待发送的数据分组!
第1号窗口里面存放的是序号为6的马上待发送的数据分组!
第2号窗口已经空了,并且后续窗口、发送方没有要发送的数据分组了!
发送数据分组时发生延迟:750毫秒!
接收方收到了序号为4的分组!
该数据分组正是接收方所期待的,接收方接受了它并准备回送对应的ACK!
发送方收到了ACK,序号为4并且开始加以确认!
发送方现在开始第一次发送序号为5的数据分组
当前窗口内的分组情况为:
第0号窗口里面存放的是序号为6的马上待发送的数据分组!
第1号窗口已经空了,并且后续窗口、发送方没有要发送的数据分组了!
第2号窗口已经空了,并且后续窗口、发送方没有要发送的数据分组