计算机实验三:Rdt协议对比

  • 一、实验目的
  • 二、实验原理
    • 1.Rdt1.0:在可靠信道上进行数据传输
    • 2.Rdt2.0:有差错检测的传输信道
    • 3.Rdt2.1:解决Rdt2.0中ACK/NAK丢失的问题
    • 4.流水线协议——解决低效问题
  • 三、实验步骤及分析
    • (一)实验前准备
    • (二)实验步骤
      • 1.在某个协议中,分别测试有效负载和超时时间间隔、丢包率、校验和错误率的关系,并得出结论。
      • 2.详细比较协议5和协议6在每秒有效载荷和重传次数方面的性能
      • 3.pick_event()函数具有内置的事件优先级,对于协议5,更改这些优先级,你能得到什么结论?
      • 4.调查重传帧的数量与超时时间关系
      • 5.当两个进程在时钟上被阻塞时,更改模拟器以更快地提前时间。
      • 6.在目前的模拟器中,数据包的传递基本上是即时的。
  • 四、实验总结

simulator代码链接:https://pan.baidu.com/s/1fPzYqNrkmbba-vwu3bbO8w?pwd=cxg3
提取码:cxg3

一、实验目的

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

二、实验原理

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

所依赖的信道非常可靠:不可能有位错,不会丢失数据;
分别为发送方和接收方建立FSMs:发送方将数据送入所依赖的信道,接收方从所依赖的信道读出数据。

2.Rdt2.0:有差错检测的传输信道

问题:如何从错误中恢复
正向确认 (ACKs):由接收方发送报文向发送方进行确认
负向确认 (NAKs):由接收方发送报文向发送方进行否认,说明分组有错
发送方在收到NAK后进行分组重传,依靠错误检测;接收方的反馈:控制信息 (ACK,NAK)。

3.Rdt2.1:解决Rdt2.0中ACK/NAK丢失的问题

Rdt2.0 的缺点——ACK/NAK 报文丢失
发送方将不会知道接收端发生了什么,假如进行重传:可能发生数据重复。
发送方,管理丢失的 ACK/NAK,接收方,管理丢失的 ACK/NAK;接收方丢弃重复的分组(不向上递交),如果ACK/NAK丢失,发送方则重传正确的分组,发送方给每个分组加上序号。

4.流水线协议——解决低效问题

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

  • GBN:Go-Back-N
    发送方:使用尺寸为N的“滑动窗口”w,可以同时及发送w个报文。
    “回退n”协议的基本特点:发送方连续发送许多数据帧,接收方只接收一帧,即只能顺序接收,发送方发送的帧需要不同的编号来区分,发送方要有较大的发送缓冲区来保留可能重发的帧。
    优点:连续发送提高了信道利用率,误码率较低时,连续ARQ优于停等协议。
    缺点:要回退n帧重传,导致某些已正确接收帧的重传,因此降低了发送效率。

  • SR:Selective Repeat
    发送方仅对未收到应答的分组进行重发,发送方对每个未确认分组设置计时器;发送方的窗口,N个连续的seq,同样对已发送的分组,未确认分组进行限制;接收方逐个对所有正确收到的分组进行应答,对失序到达分组进行缓存。
    优点:避免重传已正确传送的帧,提高了信道利用率。
    缺点:在接收端需要占用一定容量的缓存,控制较复杂。

三、实验步骤及分析

(一)实验前准备

1.打开虚拟机ubuntu,并将实验文件simulator复制到ubuntu中。
2.了解simulator模拟的几种rdt协议。simulator中有p2.c—p6.c 五个文件是描述协议的:
p2.c是可靠信道的停等协议,设置有限的buffer和有限的处理速度;
p3.c在比特差错会丢包信道上单工停等协议;
p4.c是一位的滑动窗口协议;
p5.c是GBN协议;
p6.c是SR协议。
3.阅览文件README了解实验要求。
Simulator可以通过make命令编译,运行协议,完成 sinulator 文件夹中的 exercises 文件中的作业。
4.编译时需要输入的指令

sim protocol events timeout pct_loss pct_cksum debug_flags

这六个参数分别是:协议、时间片、超时间隔、丢包率、检验和错误率、错误标记
例如:输入: ./sim 5 1000 20 0 0 0 (运行协议5,时间片设置为1000,超时间隔为20,无丢包、无检验码错误)
5.实验需要回答的问题:
在exercises中共6个问题,下面围绕这六个问题进行实验。

(二)实验步骤

1.在某个协议中,分别测试有效负载和超时时间间隔、丢包率、校验和错误率的关系,并得出结论。


(1)编译:

cd simulator (打开simulator文件), make (编译)。


(2)运行过程:

./sim  protocol  events  timeout  pct_loss  pct_cksum  debug_flags

输入: ./sim 5 1000 20 0 0 0 (运行协议5,时间片设置为1000,超时间隔为20,无丢包、无检验码错误),得到下图:

图中,process1有两段信息(发送信息、接收信息);process 0同理;特别注意,这是一个双向传输,所以,process1的发送信息对应process0的接收信息,process0的发送信息对应process1的接收信息。

(3)首先测试有效负载和超时时间间隔的关系,运行协议5,1000个时间片,无丢包,无校验和错误
结果如下表所示:

timeout Payloads accepted Total data frames sent Efficiency
10 7 630 1%
20 102 237 48%
30 196 217 90%
40 195 202 97%
50 179 180 99%
60 187 188 99%
70 186 189 99%
80 184 185 99%

(注:实验选取了process0的Payloads accepted和process 1的Total data frames sent)
结论:由表中的测试数据可以看出,有效负载在超时时间间隔为30的时候最大,为196。因为时间间隔小于30的时候,重传的比较多,导致有效少,当时间间隔大于30的时候,虽然没有重传,但是时间间隔大,发送一个数据后等待的时间过长,导致发送的总的数据减少;但是显然,超时时间间隔越大,其Efficiency(Payloads accepted/ Total data frames sent)也越大,因为此时重传比较少,发送的数据几乎都能接受到。

(4)测试有效负载和丢包率的关系,运行协议5,1000个时间片,超时时间间隔为50,无校验和错误
结果如下表:

Lost packet rate Payloads accepted Total data frames sent Efficiency
10 102 179 55%
20 65 170 36%
30 41 179 23%
40 26 159 16%
50 15 151 10%
60 12 152 8%
70 8 149 5%

结论:丢包率越高,收到的有效负载就越少,数据重传越多,超时状况也越多,传输效率越低。
部分截图(10%丢包率)如下:

(5)测试有效负载与校验和错误率的关系,运行协议5,1000个时间片,超时间隔为50,无丢包,
结果如下表所示:

Lost packet rate Payloads accepted Total data frames sent Efficiency
10 98 175 57%
20 54 166 37%
30 56 168 28%
40 35 154 21%
50 17 150 11%
60 10 148 5%

结论:较验和错误率越高,收到的有效负载越少,传输效率越低。
部分截图如下:

2.详细比较协议5和协议6在每秒有效载荷和重传次数方面的性能


协议5为回退N步,协议6为选择重传
运行:

./sim 5 1000 50 0 0 0和./sim 6 1000 50 0 0 0
协议 Protocols 5 Protocols 6
Total data frames sent 193 167
Payloads accepted 193 167
Frames retransmitted 0 0
Efficiency 99% 99%
运行:./sim 5 1000 50 10 10 0和./sim 6 1000 50 10 10 0
协议 Protocols 5 Protocols 6
Total data frames sent 175 125
Payloads accepted 88 88
Frames retransmitted 84 24
Efficiency 41% 67%

结论:当网络都处于理想状况时,即都没有丢包和校验和错误时,两个协议的性能差不多;而当网络状况越差,协议6的重传、有效负载比协议5小,所以协议6的性能较好。
原因:协议5为回退N步,接收方不存储无序的分组,即使分组是正确的,如果其前一分组未到达,则将其丢弃,如此会增加重传的可能;而协议6为选择重传,即接收方会接收并缓存无序的分组,直到其前面的分组到达再一起上传给上层,如此可减少重传的可能。所以协议5适合运行在网络状况较好的情况下,丢包率和出错率较小的时候,重传几率较小,传输速率较快。而如果网络状况不佳,会出现大量重传,协议5会丢弃大量无序的且正确的分组,会带来更多的重传。而协议6只需重传丢失的分组,在网络状况较差时,效果会非常显著。

3.pick_event()函数具有内置的事件优先级,对于协议5,更改这些优先级,你能得到什么结论?


问题说明:在函数pick_event中,改变协议5中几个事件(数据到达、超时处理、网络层准备等)的处理顺序,可以得出什么结论。
pick_event函数说明:

进行测试的顺序非常重要,因为它将某些事件优先于其他事件。例如,对于协议3和4,帧将在导致超时之前发送。
仅考虑协议5,因此只需要写case 5的各种顺序case即可。
(注:每次顺序做调整后,重新进行编译再运行)

(1)顺序1:网络层准备、数据到达、校验和检验、超时处理

得表格如下:

(2)顺序2:网络层准备、超时处理、数据到达、校验和检验

得表格如下:

(3)顺序3:超时处理、网络层准备、数据到达、校验和检验

得表格如下:

上述的超时时间间隔、时间片均相同。
结论:通过上面三个表格的对比,可以看出在相同的条件下,当顺序为网络层准备、数据到达、校验和检验、超时处理时,得到的有效负载最大、重传次数最少。

4.调查重传帧的数量与超时时间关系


题意:观察超时间隔变化和数据重传数量的关系,并得出最佳设置值。
测试超时时间间隔和重传的关系,运行协议5,1000个时间片,无丢包,无校验和错误
得表格如下:

timeout Payloads accepted Total data frames sent retransmitted frames
10 7 630 623
20 137 275 133
30 188 209 21
40 188 190 0
50 185 186 0
60 182 183 0

结论:从表格中可以看出,当设置超时间隔为大于40左右时,重传数据降为0,而当设置超时间隔为50时,efficiency达到99%-100%。

5.当两个进程在时钟上被阻塞时,更改模拟器以更快地提前时间。


题意:目前,模拟器的时间是一滴答一滴答地前进。如果两个进程都在远程超时时被阻塞,那么这个进程就会变慢。当两个进程在时钟上被阻塞时,更改模拟器以更快地提前终止。

在sim.c中可以看到如上代码,表示simulation程序的主要循环过程;
Last_tick就是sim的第二个参数时间片总长。

①这里随机生成一个数和1做与运算(即选择一个进程来进行运行,模拟进程的调度);
② 修改tick,模拟器的时间前进,这里看到每次将tick更新为加delta,在common.h中发现delta定义为10。
③根据反馈的信息word,如果是NOTHING说明需要让当前进程hanging时间加上delta,如果改值大于阈值DEAD_LOAD,那么说明该进程死锁;

解决方式:
第一步,在common.h中添加一个标志,用于标识是否两个进程都死锁。

第二步,当判断两个进程都死锁,那么将该标志置位。
初始化:

置位:

第三步,在worker.c中对于超时检测增加判断条件,即该标志检查。

如果死锁的标记被修改为1,发生死锁,等同于超时,重新发送消息,解除当前的死锁情况。
注意:不能忘记将该标志重置为0。

6.在目前的模拟器中,数据包的传递基本上是即时的。


题意:更改数据包的即时传递,以便交付时间是可变的,用户可以设置。差异如何影响协议性能?
(1)思路:
考虑到可以使得交付时间随用户设置而变化,增加一个输入变量,修改delta,就需要在common.h中将delta由原来的常量修改为变量,同时在sim.c中,将delta设为输入的最后一个变量。
然而,由于deadblock的值是关于delta的函数:


因此,我们直接修改delta相当于同时修改了两个值,那么在我们的结果中这个修改的delta将无法产生任何改变,需要取消掉这个关系;

(2)解决方案:
第一步,我们应该首先将deadlock和delta的关系取消掉,即将timeout_interval的delta为一个定值,这里改为默认的10:

第二步,将delta设置为变量,这样可以保证用户可以修改:

第三步,将delta作为最后一个参数,如果没有则默认为10:
Main函数中初始化DELTA:

修改两处,第一处表示参数个数必须大于等于7个,如果是八个则代表用户输入了DELTA来进行改变。

四、实验总结

这次实验是要验证rdt协议的一些性质和影响因素,重新复习了一下几种协议,包括他们的优缺点和特性等等。
实验过程中前面几题都比较简单,五六题相对来说更难一点,要阅读源码还要修改源码,尤其是最后一题真的是改的懵懵懂懂,参考了一下网上的答案之后加入了自己的想法。总体来说通过实验的方式模拟实现了几种协议的表现状况,给了我们数据化的具体表示,更能比较出它们的区别。

计算机实验三——Rdt协议对比相关推荐

  1. 北理乐学计算机实验三,北理工大学计算机实验三-字符编码与信息交换.docx

    北理工大学计算机实验三-字符编码与信息交换.docx 实验报告实验名称学号 姓名 班级 实验时间 年 月 日实验报告表3-1 西文字符显示过程编码记录表输入字符ASCII码(十进制数)内存信息(二进制 ...

  2. 大学计算机实验三,《大学计算机Ⅰ》实验报告实验三

    <大学计算机Ⅰ>实验报告实验三 (3页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 广东金融学院实验报告课程名称:大学计算机I实 ...

  3. 计算机实验三—CPT

    目录 1.直接连接两台 PC 构建 LAN 2.用交换机构建 LAN 3.交换机接口地址列表 4.生成树协议(Spanning Tree Protocol) 5.路由器配置初步 6.静态路由 7.动态 ...

  4. 交换机是一台特殊的计算机,实验三:交换机配置.ppt

    文档介绍: 实验二:交换机配置 一.交换机基本知识 二.交换机基本命令 三.交换机基本配置 1 一.交换机基本知识 交换机相当于是一台特殊的计算机. 软件部分主要是IOS操作系统,硬件主要包含CPU. ...

  5. AHB、APB、AXI三种协议对比分析(AMBA总线)

    一.AMBA概述  AMBA (Advanced Microcontroller Bus Architecture) 高级处理器总线架构  AHB (Advanced High-performance ...

  6. 【Leach协议】基于matlab leach+leach-c+TSI-Leach三种协议对比【含Matlab源码 2512期】

    ⛄一. 简介 1 引言 WSN 由能感知外部环境的传感器节点以自组网的形式构成,是一种分布式无线传感器网络.随着科技的进步和现代生活的需求,由于 WSN 的远程控制.信息即时传播以及低功耗等众多优点, ...

  7. 实验三 ARP 协议分析实验

    1.ARP 协议分析实验 1.ARP 协议介绍 ARP 是地址解析协议(Reverse  Address   Resolution   Protocol)的缩写,负责实现从IP 地址到物理地址(如以太 ...

  8. 计算机基本网络测试命令实验报告,实验三 基本网络测试工具的使用

    实验三基本网络测试工具的使用,一.实验目的,本实验的主要目的是熟练掌握操作系统自带的基本网络测试工具,二.实验内容,1,2,3,4,三.实验工具,WindowsXP平台,四.实验步骤,1,2,五.实验 ...

  9. 计算机网络与协议实验VLAN配置,计算机网络实验三虚拟局域网vlan划分与配置

    计算机网络实验三虚拟局域网vlan划分与配置 (5页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 计算机网络原理计算机网络原理 实验报告 ...

  10. 对等网中计算机网卡是怎么安装的,实验三 对等网的组建

    实验三 对等网的组建及常用网络命令的使用 一.实验目的 (1)理解对等网的基本概念和特点 (2)熟悉组建对等网的网卡.交换机.线缆等网络硬件设备 (3)熟悉网络组件及各参数的设置和安装方法 (4)掌握 ...

最新文章

  1. 背水一战 Windows 10 (18) - 绑定: 与 Element 绑定, 与 Indexer 绑定, TargetNullValue, FallbackValue...
  2. 怎么向html插入广告,给blogger添加各种广告代码的方法
  3. 48天打造你的专属 Twilio——浅谈运营商通信中台
  4. Ubuntu 16.04安装Nginx
  5. ArcGIS之GP服务发布
  6. Exchange 企业邮件与Windows安全应用 — Exchange 2007 收件人管理
  7. Oracle_spatial的函数介绍
  8. VC++常见错误原因解析之error LNK2019: 无法解析的外部符号 public: void __thiscall
  9. Emacs进阶之使用Mepla插件库及有道翻译安装
  10. postgresql 数据库的备份和还原
  11. 女人一生要读的30本书
  12. 北京立交桥---- “迷桥”经历和不方便后悔
  13. Oracle APEX初体验
  14. mysql dump 1449_mysqldump 1449错误的解决办法
  15. keil stm32标准库放在哪里_STM32(1)——使用Keil MDK以及标准外设库创建STM32工程...
  16. 阿里2020.4.1实习笔试题——攻击怪兽
  17. .exp是什么文件格式
  18. 利用历史数据做商业预测的全过程
  19. 江苏省事业单位考试计算机类真题及答案,2012年江苏事业单位考试综合计算机类真题及解析(5)...
  20. tplinkac2600评测_千兆双频家庭路由器测评之:华为、小米、小k云管家、TP-LINK

热门文章

  1. 居家办公不敢上厕所!5分钟抓拍一次,不够89次算旷工?尚德机构回应...
  2. ES06# Filebeat采集原理与监控指标梳理
  3. 新形势下安全风险评估实践
  4. 美版iPhone4卡贴解锁
  5. 无需花生壳,阿里云解析实现内网穿透
  6. [TensorFlow深度学习深入]实战一·使用embedding_lookup模块对Word2Vec训练保存与简单使用
  7. ios服务器停止响应怎么办,iPhone 应用停止响应或意外关闭怎么办
  8. Oracle 实现 right 函数
  9. 超星网站服务器,云服务器 超星
  10. h5将数字翻译为大写汉字_js 将阿拉伯数字翻译成中文的大写数字