一、可靠的数据传输(rdt)
1、什么是可靠数据传输:不出错、不冲突、不失序、不丢失
2、如何实现可靠数据传输?
需要借助于下层提供的协议,但是如果下层提供服务不可靠呢?本层的协议机制,协议实体要靠什么机制的安排实现可靠的服务?
采用渐增式的开发可靠数据传输协议(rdt)的发送方和接收方
3、rdt
1、只考虑单向数据传输
2、双向的数据传输问题实际是两个单向数据传输问题的综合
3、使用有限状态机(FSM)来描述发送方和接收方
4、rdt在应用层、传输层和数据链路层都很重要,是网络TOP10问题之一
5、信道的不可靠性特点决定了可靠数据传输(rdt)的复杂性

二、Rdt1.0
1、使用场景:下层的信道是完全可靠的:没有比特差错,没有分组丢失
2、发送方和接收方的FSM:发送方将数据发送到下层信道,接收方从下层信道接收数据
所以rdt1.0做的工作就是封装和解封装

三、Rdt2.0:具有比特差错的信道
1、使用场景:下层信道可能出现差错:将分组中的比特翻转,0变为1,1变为0(用校验和来检测差错)
2、确认ACK:接收方显式的告诉发送方分组已经被接收
否定确认NAK:接收方显式地告诉发送方分组出现了差错(发送方接收到NAK后,会重传分组)
3、过程:发送方发送packet到下层信道,接收方接收,通过校验和发现数据有差错,返回NAK,发送方再次发送原packet;无差错返回ACK,发送方发送新的pactet
4、所以Rdt2.0新机制就是采用了差错控制编码进行差错检测
5、发送方和接受方的FSM:
(1)发送方状态:等待来自上层的调用、等待ACK / NAK
(2)接收方:等待来自下层的调用

最后细想一个问题,发送的packet可能会出现错误,但是返回的ACK / NAK是不是就一定是正确的呢?答案肯定是否定的,但是发送方应该怎么做呢?重传?可能会重复,不重传?可能会造成死锁或出错
所以引出了 Rdt2.1

四、Rdt2.1
1、为了处理上面所描述的问题,也就是在不知道发送的 ACK / NAK是否出现差错的情况下,Rdt2.1采用再次传输的方法,并且在传输的每个packet中都会加上序号,若没有错误,则根据序号将这个packet跑调,这样子就解决可能存在ACK / NAK出现错误,又能避免没有错误时的重复
2、因为每次只会发送一个分组然后等待确认,所以只需要两个序列号就够了(0和1),检测ACK / NAK是否出错同样使用EDC;原本只需要等待数据的发送,现在有了序号,状态也就变成了两倍,成了等待0与等待1
2、这种发送方只发送一个分组,然后等待接收方的应答的方式称为停止等待协议

五、Rdt2.2(无NAK协议)
1、功能与Rdt2.1相同,但是只用ACK(ACK需要编号)
2、接收方对最后正确接收的分组ACK,以代替NAK(接收方必须显式地包含被正确接收的分组的序号)
3、当收到重复的ACK时,发送方则重传当前分组

总结:其实就是在发送方发送一个packet,接收方若没有错,则返回ACK+序号,再次发送若出错了,则再次发送上次这个ACK+序号,没出错序号便是新的序号了。
问题:当第一个传输的分组就出错了,应该如何返回?
答案:事实上如果第一个就出现错误,前面没有ACK可返回,那发送方在一定时间内没有收到返回信息,便会重传(超时重传),这个就是Rdt3.0

六、Rdt3.0
1、当下层信道可能会丢失分组(数据或ACK):会死锁,也就是上面提到的发送方一直没有收到接收方的返回信息,这时候就引入超时重传(需要一个倒计时定时器)

问题:每次都是只能发送一个,当信道非常大的时候,传输的packet在信道中损耗的时间是非常多的,如何解决?
答案:采用流水线方式,提高链路的利用率

七、流水线协议
1、流水线:允许发送方在未得到对方确认的情况下一次发送多个分组
2、必须增加序号的范围:用多个bit表示分组的序号
3、在发送方/接收方要有缓冲区
(1)发送方缓冲:未得到确认,可能需要重传,需要将发送的分组放在缓冲区
(2)接收方缓存:上层用户取用数据的速率 != 接收到的数据从速率,接收到的速率可能会乱序,需要排序交付
4、流水线协议:回退N步(GBN)和选择重传(SR)

八、通用窗口协议(缓冲区协议):
1、发送缓冲区
(1)发送缓冲区
a.形式:内存中的一个区域,落入缓冲区的分组可以发送
b.功能:用于存放已发送,但是没有得到确认的分组
c.必要性:需要重发的时候可以用
(2)缓冲区大小:一次最多可以发送多少个未经确认的分组
a.停止等待协议=1
b.流水线协议>1,合理的值,不能很大,链路利用率不能超过100%
(3)发送缓冲区中的分组
a.未发送的:落入发送缓冲区的分组,可以连续发送出去
b.已经发送出去的,等待对方确认的分组;缓冲区中只有得到确认的分组才能删除
2、接收缓冲区
(1)接收窗口=接收缓冲区;传输的分组序号只有落在窗口范围内才允许内接收;若落在接收窗口范围外,则被丢弃
(2)接收窗口尺寸Wr=1,则只能顺序接收,成称为累计确认(GBK协议);Wr>1,则可以乱序接收,三号窗口确认了,但是前面2号窗口不一定就确认了,称为非累计确认(SR协议)。
3、窗口的滑动
(1)正常情况下窗口的滑动
a.发送窗口:有新的分组落入发送缓冲区范围,发送->前沿滑动;来了老的底序号分组的确认->后沿向前滑动->新的分组可以落入缓冲区的范围
b.接收窗口:收到分组,落入到接收窗口的范围内,接收;是底序号,发送确认给对方
(2)异常情况下GBK窗口的滑动
a.原因:传输过程中的分组可能丢失、出错;接收方给的确认没有达到发送方。
b.过程:接收方缓冲区大小为3情况下,在发送方发送分组的过程,2号分组丢失,1号分组确认收到后,接收方窗口不会向前滑动,因为2号分组的窗口是空的,而再接下来发送方在等待2号分组的确认信息是等不到的,所以最后触发超时重传
c.后果:超时重传时发送方会将已发送但是未确认的全部重传一遍。
(3)异常情况下SR窗口的滑动
a.因为SR协议下的接收方是可以乱序接收的,也就是发送方可以发送多个,接收方可以乱序接收,也就意味着在缓冲区的范围内,若某个分组丢失,缓冲区的其他分组是可以照常确认的,只不过缓冲区窗口前沿不会向前移动,在等待丢失的分组超时触发器触发时,会将分组重传。SR协议下发送方每发一个协议,就会设定一个超时触发器。
4、GBK协议和SR协议的异同
(1)相同之处:发送窗口>1,一次可以发送多个未经确认的分组
(2)不同之处:GBK接收窗口=1,所以只能顺序接收;SR接收窗口>1,可以乱序接收
5、总结

16、可靠数据传输(rdt)的原理相关推荐

  1. 计算机网络(自顶向下方法)学习记录---3.4 可靠数据传输原理

    文章目录 前言 一.构造可靠传输协议 1.rdt1.0 2.rdt2.0 3.rdt2.1 4.rdt3.0 二.GBN 总结 前言 在学习3.5节TCP传输之前,我们需要先了解到可靠数据的传输原理, ...

  2. Day6:可靠数据传输的原理

    加油!偷博仔 今天遇见两首顾城的诗 黑夜给了我黑色眼睛 我却用它寻找光明 ----<一代人> 1979年4月 在你的门前 我堆起一个雪人 代表笨拙的我 把你久等 你拿出一颗棒糖 一颗甜甜的 ...

  3. 计算机网络(14)——可靠数据传输原理

    文章目录 可靠数据传输原理 构造可靠数据传输协议 经完全可靠信道的可靠数据传输:rdt 1.0 经具有比特错误信道的可靠数据传输:rdt 2.0 经具有比特错误信道的可靠数据传输:rdt 2.1 经具 ...

  4. 可靠数据传输原理详细图解

    可靠数据传输原理 概述 rdt1.0 rdt2 rdt2.0 rdt2.1 rdt2.2 rdt3.0 流水线可靠数据传输协议 为什么使用流水线 流水线对可靠数据传输协议带来的影响 流水线协议中恢复差 ...

  5. 可靠数据传输原理1(构造可靠数据传输协议)

    TCP向调用它的因特网应用所提供的服务模型(服务抽象) 数据可以通过一条可靠的信道进行传输.借助于可靠的信道,传输比特就不会受到损坏或丢失,而且所有数据都是按其发送顺序进行交付. 可靠传输协议 实现服 ...

  6. 计算机网络自顶向下方法 第三章 运输层 3.4 可靠数据传输原理

    计算机网络自顶向下方法总结3.4可靠数据传输原理 目录 3.4 可靠数据传输原理 3.4.1 构造可带数据传输协议 3.4.2 流水线可靠数据传输协议 3.4.3 回退N步 3.4.4 选择重传 3. ...

  7. 计网必会:UDP差错检测,检验和、可靠数据传输原理

    文章目录 [前言] UDP套接字 无连接运输 UDP 的优势 UDP的差错检测 可靠数据传输 可靠传输的方式总结 构造可靠数据传输协议 可靠信道 具有比特差错的信道 三种可能 [前言] 之前一节我们介 ...

  8. [计算机网络] 运输层 可靠传输rdt 拥塞控制 TCP连接 多路复用

    运输层 运输层服务 运输层协议:为运行在不同主机上的应用进程提供逻辑通信功能(主机直接相连).即端到端传输. 进程之间使用逻辑通信功能彼此发送报文,无需考虑具体物理链路. 运输层协议运行在端系统,不在 ...

  9. 可靠数据传输基本原理

    可靠数据传输是指:数据可以通过一条可靠信道来传输.传输的数据不会受到损失或者丢失,而且所有数据都是按照其发送顺序进行交付. 我们都知道IP层是不可靠传输的,而TCP是可靠传输的,但是TCP是传输层的协 ...

  10. [计算机网络] 可靠数据传输 rdt1.0 2.0 2.1 2.2 3.0;GBN;SR

    (给爷整吐了 还有状态机要背) 可靠数据传输原理 可靠数据传输的问题在运输层.链路层及应用层都会出现. 数据通过一条可靠的信道传输 即传输的数据不出错,丢失,并按照发送的顺序传送 可靠传输实现 设计可 ...

最新文章

  1. html图片滚动红点_html2canvas生成的图片偏移问题
  2. Python开发面试题及部分答案分享!
  3. 基于Xilinx FPGA生态,加速提升视频处理质量
  4. IntelliJ IDEA 2019 安装lombok
  5. Spring 整合 Mybatis
  6. 史上最简单MySQL教程详解(进阶篇)之索引及失效场合总结
  7. js操作Cookie,js设置Cookie值,js读取Cookie值
  8. linux下如何查看tlq服务,谁能跟我讲解一下bashrc?
  9. 认识网络通信中的 ACK、NACK 和 REX
  10. PHY卡 网卡区别联系
  11. list去重和list倒叙
  12. 【金融项目】尚融宝项目(十)
  13. 接口测试、接口协议以及常用接口测试工具介绍
  14. AJAX+php实现分页器:分页展示数据
  15. 读计算机成都哪所学校好,成都哪所计算机学校好
  16. 通过WIFI信号跟踪三维人体姿态的新方法
  17. you-get下载b站选集_Flash选集:酷炫效果和实用的ActionScript-第1章:Flash基本知识
  18. 二手书网页版mis系统
  19. GPS从入门到放弃(二) --- GPS时间
  20. 好用的磁碟重組工具 - UltimateDefrag

热门文章

  1. dot全称_DOT是什么
  2. 第17节 三个败家子(17)——少侠孙坚
  3. mysql 汉字笔画排序规则_SQL Server 与 MySQL 中排序规则与字符集相关知识的一点总结...
  4. 苹果计算机快捷键设置在哪里,苹果手机快捷键小方块怎么设置 【设置方法】...
  5. vue中刷新页面定位导航栏(解决刷新页面导航栏自动定位到首页的问题+路由传参)
  6. OpenShift 4 - 用 External Secret 集成 Hashicorp Vault
  7. 批量删除新浪微博的关注
  8. 手机信息通知标为已读实现原理_27条iPhone苹果(附iPhoneX)手机使用技巧,你用过多少条?...
  9. WINVNC源码分析(四)
  10. 橄榄山软件长期开放 《软件研发》职位,请随时申请