本文主要是介绍计算机网络实验rdt实验,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、 实验目的
熟悉并掌握各种不同rdt协议的运行环境和协议性能。
二、实验原理
可靠数据传输:提供给上层实体的服务抽象是,数据可以通过一条可靠的信道进行传输。不过由于下层协议不一定可靠,所以就有问题要处理。
停等协议:肯定确认(positive acknowledgment)与否定确认(negative acknowledgment)。是接收方反馈信息的两种方式。
其次,是ARQ(Automatic Repeat reQuest自动重传请求)协议,简单理解为发送方发送数据,然后等待接收方反馈,然后再相应发送数据。
综合起来理解,就是发送方发送数据,然后等待接收方通过ACK或者NAK反馈,就是停等协议的大概流程。
接下里的优化有,校验和(差错处理)、序号、定时器(超时)、ACK和NAK等。
流水线协议:为了解决上面停等协议对资源的极其浪费问题引入了一个解决方案:允许发送方发送多个分组而无需等待确认。
滑动窗口协议:抽象理解,发送方和接收方各有一个缓存数组。发送方存放着:已发生且成功确认包序号、已发送未确认包序号 (已发送已确认包序号序号|已发送未确认包序号)*、未发送包序号;接收方存放着:已接受包序号、正在接收包序号、未接收包序号。其中,每个数组有个两个扫描指针,开头和结尾,一起向后扫描,两者形成一个窗口。故称为窗口协议。
回退N步:回退N步,接收方则是只接受最小的未接受帧,对错序到达帧,都丢弃。
选择重传:SR协议通过让发送方仅重传那些它怀疑在接收方出错(即丢失或受损)的分组而避免了不必要的重传。SR这种个别的,按需的重传协议要求接收方逐个地确认正确接收方的分组。
三、实验步骤
首先对文件夹内的代码进行编译
1. 运行protocol2,运行命令为./sim 2 100 20 0 0 1,6个数字分别代表运行的协议号、运行的事件数即运行模拟的时间、超时间隔、丢包率、到达包的错误率、跟踪标志。0表示只打印汇总数据,1表示打印中间的发包记录。
其中100 20表示它将以20个tick的时间间隔运行200个协议实体进程。0%的丢包率,0%的校验和错误率,它会打印出汇总数据。
protocol2是一个可靠信道上的单工停等协议。其基本原理是发送方以高于接收方处理能力的速度发送数据帧,导致接收方被淹没。我们假设通信信道不会出错,并且数据流量是单工的。
发送方发送一帧,等待确认到达后才能继续发送。
运行结果:Simulating Protocol 2
从运行结果可以看出,共有两个进程,一个发送一个接收,分别指明了发送和接收的情况,丢包率、错误率等都和运行代码中设定好的参数一致。有效装载/发送数据的效率为100%,模拟时间为1000。
Total data frames sent: 总发送数据帧
Data frames lost: 丢失数据帧
Data frames not lost: 未丢失数据帧
Frames retransmitted: 重传帧
Good ack frames rec'd: 接收到好的ACK
Bad ack frames rec'd: 接收到坏的ACK
Good data frames rec'd: 接收到好的数据帧
Bad data frames rec'd: 接收到坏的数据帧
Payloads accepted: 有效装载
Total ack frames sent: 总发送ACK帧
Ack frames lost: 丢失ACK帧
Ack frames not lost: 未丢失ACK帧
Timeouts: 超时
Ack timeouts: ACK超时
2. 运行protocol3,参数设定为./sim 3 200 20 10 10 1
protocol3是一个比特差错信道上的单工停等协议。数据帧可能会损坏,也可能会完全丢失。如果有一个数据帧在传输过程之中损坏,则接收方硬件在计算校验和时会检测出来,如果一个数据帧损坏之后校验和仍然是正确的,则这个协议将会失败。发送发在它发送的每一个数据帧的头部都会加上一个序号。
发送方发送一帧,等到确认到达之后才能继续发送。
其中200 20表示它将以20个tick的时间间隔运行200个协议实体进程。10%的丢包率,10%的校验和错误率,它将会打印出汇总数据。如下所示。
运行结果:Simulating Protocol 3
从运行结果可以看出,共有两个进程,一个发送一个接收,分别指明了发送和接收的情况,丢包率、错误率等都和运行代码中设定好的参数一致。有效装载/发送数据的效率为58%,模拟时间为200。
然而,其中也存在了一些不可预测的情况。有些运行多次以后每次的运行结果也是不同的。
3. 运行protocol4,参数设定为./sim 4 100 20 10 10 1
protocol4是一个一位滑动窗口协议。由于发送方在发出一数据帧之后必须等待前一帧的确认到来以后才能发送下一帧。
其中100 20表示它将以20个tick的时间间隔运行100个协议实体进程。20%的丢包率,10%的校验和错误率,它将会打印出汇总数据。如下所示。
运行结果:Simulating Protocol 4
这篇关于计算机网络实验rdt实验的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!