计算机网络实验可靠数据传输

计算机网络 可靠数据传输

一、 实验目的

熟悉并掌握各种不同rdt 协议的运行环境和协议性能。

二、 实验内容

1. 搭建linux 运行环境;

2. 运行simulator ,模拟各种不同rdt 协议; 3. 完成exercises 的问题。

三、 实验过程

1. 在本机上安装虚拟机,然后通过虚拟机安装red hat linux 9.0系统,安装成功。 2. 了解simulator 模拟的几种rdt 协议。simulator 中有p2.c —p6,c5个文件是描述

协议的:p2.c 是停等协议,设置有限的buffer 和有限的处理速度;p3.c 在不可靠的信道上允许单向的数据流动;p4.c 是双向的滑窗协议;p5.c 是GBN 协议;p6.c 是重传协议。 3. 几种rdt 协议

1) Rdt1.0:在可靠信道上进行可靠的数据传输

所依赖的信道非常可靠:不可能有位错,不会丢失数据;

分别为发送方和接收方建立FSMs :发送方将数据送入所依赖的信道,接收

方从所依赖的信道读出数据。 2) Rdt2.0:在可能发送位错的信道上传输 问题:如何从错误中恢复

正向确认 (ACKs):由接收方发送报文向发送方进行确认

负向确认 (NAKs):由接收方发送报文向发送方进行否认,说明分组有错 发送方在收到NAK 后进行分组重传 rdt2.0的新机制 (在 rdt1.0基础之上)

错误检测;接收方的反馈:控制信息 (ACK,NAK) 。 Rdt2.0 有一个致命的缺点 若ACK/NAK 报文丢失?

发送方将不会知道接收端发生了什么,假如进行重传:可能发生数据重复。 管理重复的问题

接收方丢弃重复的分组(不向上递交)

如果ACK/NAK丢失,发送方则重传正确的分组,发送方给每个分组加上sequence number (序号)。

3) Rdt2.1:发送方,管理丢失的 ACK/NAK,接收方,管理丢失的 ACK/NAK。 4) 流水线协议

流水作业:发送端允许发送多个分组,等待应答。必须增加顺序号的位数,在发送和接收端增加缓存。两种常用的流水线协议:回退N 重传 (go-Back-N),选择重传(Select Retransmit)。 回退N 重传(GBN:Go-Back-N)

发送方:在分组首部设置k 位 seq #,使用尺寸为N 的“滑动窗口”,允许连续的多个分组不被应答。

“回退n ”协议的基本特点:发送方连续发送许多数据帧,接收方只接收一帧,即只能顺序接收,发送方发送的帧需要不同的编号来区分,发送方要有较大的发送缓冲区来保留可能重发的帧。

优点:连续发送提高了信道利用率,误码率较低时,连续ARQ 优于停等协议。 缺点:要回退n 帧重传(Go-back-n ),导致某些已正确接收帧的重传,因此降低了发送效率。

选择重传(SR :Selective Repeat)

发送方仅对未收到应答的分组进行重发,发送方对每个unACKed 分组设置计时器;发送方的窗口,N 个连续的seq ,同样对已发送的seq #s,unACKed 分组进

行限制;接收方逐个对所有正确收到的分组进行应答,对接收到的(失序)分组进行缓存,以便最后对上层进行有序递交。

优点:避免重传已正确传送的帧,提高了信道利用率。 缺点:在接收端需要占用一定容量的缓存,控制较复杂。 4. 搭建环境并测试用例

我电脑上安装的有Ubuntu 的linux 系统,编译模拟器的时候会有两个警告,但是仍可以运行,不过运行的结果都是不正确的,所发送的包全是得不到确认的,最后的效率都为0%。尝试过之后,就在在虚拟机下安装red hat linux 9.0系统,安装成功。测试用例如下图所示:

四、 Exercises

1) For one or more selected protocols, make a study of protocol

performance,measured in payloads delivered per second, as a function of the checksum error rate, lost packet rate, and timeout interval. For example, provide graphs showing payloads/sec as a function of timeout interval, for various error rates. What can you conclude?

Answers:实验中选择运行的是p5.c 文件,即回退N 步协议。运行图如下: 运行协议5,1000个时间片,超时时间间隔为20个时间片,无丢包,无数据出错,显示发送和接收如下图:

测试多组实验,如下面所示。

测试有效负载和超时时间间隔的关系,运行协议5,1000个时间片,无丢包,无数据出错,结果如下表所示:(由于运行的几组都是1000个时间片,所以可以直接根据payloads 来比较)

结论:由表中的测试数据可以看出,有效负载在超时时间间隔为50的时候最大,为196。因为时间间隔小于50的时候,重传的比较多,导致有效的少,当时间间隔大于50的时候,虽然没有重传,但是时间间隔多大,发送一个数据后等待的时间过长,导致发送的总的数据减少。

测试有效负载和校验和错误率的关系,运行协议5,1000个时间片,设置超时间隔为50,无丢包,结果如下表所示:(由于运行的几组都是1000个时间片,所以可以直接根据payloads 来比较)

结论:由表中数据可以看出,校验和错误率越高,收到的有效的负载越少。 测试有效负载和校验和丢包率的关系,运行协议5,1000个时间片,设置超时间隔为50,无校验和错误,结果如下表所示:(由于运行的几组都是1000个时间片,所以可以直接根据payloads 来比较)

结论:从表中数据可以看出,丢包率越高,收到的有效的负载就越少。

2) Compare the performance of protocols 5 and 6 in detail with respect to

payloads/sec and number of retransmissions for a wide variety of parameters.Under which circumstances is protocol 5 better? protocol 6?

Answers:

运行:./sim 5 1000 50 0 0 0和./sim 6 1000 50 0 0 0

运行:./sim 5 1000 50 10 10 0和./sim 6 1000 50 10 10 0

结论:网络状况越差,协议6的影响相对小,即协议6的性能好,当网络都处于理想状况时,即都没有丢包和错误时,两个协议的性能差不多,但整体协议6的性能更好。

原因:协议5为流水线协议,适合运行在网络状况较好的情况下,丢包率和出错率较小的时候,重传几率较小,传输速率较快。而如果网络状况不佳,会出现大量重传,协议5会丢弃大量无序的且正确的分组,会带来更多的重传。而协议6只需重传丢失的分组,在网络状况较差时,效果会非常显著。

3) The function pick_event() has built-in priorities for events. For example,for

protocol 5, frame arrivals go before timeouts. Experiment with changing these priorities (by reordering the statements in pick_event().What conclusions can you draw?

答:当顺序为数据到达,校验和检验,上层数据准备好,超时处理时: 设置超时间隔为50,结果见下表:

当顺序为上层数据准备好,数据到达,校验和检验,超时处理时: 设置超时间隔为50,结果见下表:

当顺序为超时处理时,数据到达,校验和检验,上层数据准备好: 设置超时间隔为50,结果见下表:

通过上面三个的对比,可以看出在相同的条件下,当设置为上层数据准备好,数据到达,校验和检验,超时处理时,收到的有效负载最大。

4) Investigate the number of retransmitted frames as a function of the timeout interval for various parameters? Can you determine what the optimum setting should be?

答:设置丢包率为0,检验和错误率为0,运行得到如下数据:

结论:从表中数据可以看出,当设置超时间隔为50时,重传帧最少,并且收到的有效负载最多。

五、 实验总结

通过此次实验熟悉并掌握各种不同rdt 协议的协议性能,但是因为由于对linux 操作系统不熟悉,在做实验的过程中遇到了很多的问题,故这次实验,做得比较艰难。但问题也都随着问同学,上网查找,一一的解决了。


© 2024 实用范文网 | 联系我们: webmaster# 6400.net.cn