计算机网络实验可靠数据传输
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机网络
可靠数据传输
一、实验目的
熟悉并掌握各种不同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来比较)
超时时间间隔Total data frames sent Payloads accepted
10 1 1
20 262 136
30 219 176
40 187 179
50 196 196
60 187 187
70 190 190
80 192 192
90 190 190
结论:由表中的测试数据可以看出,有效负载在超时时间间隔为50的时候最大,为196。因为时间间隔小于50的时候,重传的比较多,导致有效的少,当时间间隔大于50的时候,虽然没有重传,但是时间间隔多大,发送一个数据后等待的时间过长,导致发送的总的数据减少。