可靠数据传输的原理

  • 可靠数据传输——rdt
    • Rdt1.0(在可靠信道上的可靠数据传输)
    • Rdt2.0(具有比特差错的信道)
    • rdt2.1(发送方处理出错的ACK/NAK)
    • rdt2.2(无NAK协议)
    • rdt3.0(具有比特差错和分组丢失的信道)
      • rdt3.0的性能
      • rdt3.0 停-等操作
  • 流水线——提高链路利用率
  • 滑动窗口协议
    • 发送窗口
    • 接收窗口
    • 发送接收窗口互动
      • 正常情况
      • 异常情况GBN
      • 异常情况SR
    • 窗口的最大尺寸
  • GBN和SR对比

可靠数据传输——rdt

rdt在应用层、传输层和数据链路层都很重要

我们将:
渐增式地开发可靠数据传输协议(rdt)的发送方和接收方
只考虑单项数据传输(但控制信息是双向流动的)
双向的数据传输问题实际上是2个单向数据传输问题的综合
使用有限状态机(FSM)来描述发送方和接收方

Rdt1.0(在可靠信道上的可靠数据传输)

假设:下层的信道是完全可靠的
没有比特出错
没有分组丢失

发送方和接收方的FSM:
发送方将数据发送到下层信道
接收方从下层信道接收数据

Rdt1.0 什么都不做,只封装解封装

Rdt2.0(具有比特差错的信道)

下层信道可能会出错:将分组中的比特翻转
使用校验和来检测比特差错

如何从差错中恢复:

  • 确认(ACK):接收方显式地告诉发送方自己分组已被正确接收
  • 否定确认(NAK):接收方显式地告诉发送方分组发生了差错
    发送方收到NAK后,发送方重传分组

rdt2.0中的新机制:采用差错控制编码进行差错检测
发送方差错控制编码、缓存
接收方使用编码检错
接收方的反馈:控制报文(ACK,NAK):接收方->发送方
发送方收到反馈相应的动作

rdt2.1(发送方处理出错的ACK/NAK)

如果ACK/NAK出错:发送方不知道接收方发生了什么事情。
需要引入新的机制——序号

处理重复:
发送方在每个分组中加入序号
如果ACK/NAK出错,发送方重传当前分组
接收方丢弃(不发给上层)重复分组

停等协议:
发送方发送一个分组,然后等待接收方的应答。


rdt2.2(无NAK协议)

功能同rdt2.1,但只使用ACK(不使用NAK)

接收方对最后正确接收的分组发ACK,以替代NAK(接收方必须显式地包含被正确接收分组的序号)

当收到重复的ACK(如,再次收到ACK0)时,发送方与收到NAK采取相同的动作:重传当前分组

为后面的一次发送多个数据单位做准备:
一次能够发送多个
每一个的应答都有:ACK,NACK——麻烦
使用对前一个数据单位的ACK,代替本数据单位的nak
确认信息减少一半,协议处理简单


rdt3.0(具有比特差错和分组丢失的信道)

下层信道可能会丢失分组(数据或ACK):
会死锁;
机制还不够处理这种状况:检验和,序列号,ACK,重传

方法:发送方等待ACK一段合理的时间
发送端超时重传:如果到时没有收到ACK就重传
问题:如果分组(或ACK)只是被延迟了(重传将会导致数据重复,但利用序列号已经可以处理这个问题;接收方必须指明被正确接收的序列号)
需要一个倒计数定时器


rdt3.0的性能

rdt3.0 停-等操作

流水线——提高链路利用率

当发送窗口sw大于1,是流水线协议

流水线 协议:
允许发送方在未得到对方确认的情况下一次发送多个分组

  • 必须增加序号的范围:用多个bit表示分组的序号
  • 在发送方/接收方要有缓冲区
    发送方缓冲:未得到确认,可能需要重传
    接收方缓存:上层用户取用数据的速率 不等于 接收到的数据速率;接收到的数据可能乱序,排序交付(可靠)

有两种通用的流水线协议:

  • 退回N步(GBN)——接收窗口rw = 1
  • 选择重传(SR)——接收窗口rw > 1

滑动窗口协议

发送窗口

发送缓冲区:
形式:内容中的一个区域,落入缓冲区的分组可以发送
功能:用于存放已发送,但没有得到确认的分组
必要性:需要重发时可用

发送缓冲区的大小:一次最多可以发送多少个未经确认的分组
停止等待协议 = 1;
流水线协议>1,合理的值,不能很大,链路利用率不能够超过100%

发送缓冲区中的分组:
未发送的:落入发送缓冲区的分组,可以连续发送出去
已经发送出去的、等待对方确认的分组:发送缓冲区的分组只有得到确认才能删除

发送窗口是发送缓冲区的一个子集。
发送窗口的最大值<=发送缓冲区的值


发送窗口后沿移动:
条件——收到老分组的确认
结果——发送缓冲区罩住新的分组,来了新的分组可以发送
移动的极限——不能超过前沿

接收窗口

接收窗口尺寸wr = 1,只能顺序接收(GBN)
接收窗口尺寸wr < 1,可以乱序接收(SR)

落在接收窗口内的序号可以被接受;在窗口之外则被丢弃

GBN:累计确认(每次发送当前接收到的最大的ACK)
SR:非累计确认(只要落在窗口内,来一个,确认一个ACK)

滑动条件:
低序号分组到来,窗口滑动
高序号分组到来,缓存但不交付(不允许失序),不滑动

发送接收窗口互动

正常情况

异常情况GBN

超时,发送方把窗口中所有分组都发出去

异常情况SR

重新发送没有收到确认的分组本身

窗口的最大尺寸


例如:n = 2(n表示用几个比特位对发送数据序列编号,此处是0~3,所以可用2个比特位代表),序列号:0,1,2,3
可以得到
GBN = 3;
SR = 2;

GBN和SR对比

使用范围:
GBN:出错率低,出错罕见,没必要用复杂的方法
SR:链路容量大(延迟大、带宽大),容易出错

3运输层 - 可靠数据传输的原理rdt相关推荐

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

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

  2. GBN,SR,TCP协议实现可靠数据传输的原理

    第一题 假设主机A向主机B发送5个连续的报文段,主机B对每个报文段进行确认,其中第二个报文段丢失,其余报文段以及重传的第二个报文段均被主机B正确接收,主机A正确接收所有ACK报文段:报文段从1开始依次 ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. 一起谈.NET技术,通过16道练习学习Linq和Lambda
  2. python语言中整型对应的英文_Python基本数据类型详细介绍(转)
  3. 开机自启动脚本_使用xtu降低笔记本(游戏本)cpu电压及功耗·游戏本延时(以及试着解决开机自启动的问题)...
  4. LeetCode: Convert BST to Greater Tree
  5. 有了docsify神器,从此爱上看文档
  6. (35)FPGA原语设计(BUFGCTRL)
  7. Java内存溢出定位和解决方案(new)
  8. Windows 下使用苹果鼠标、键盘
  9. 安装element ui
  10. 移动光猫RAISECOM的配置方法
  11. 采用KubeSphere的kk,部署安装多节点服务的kubernetes-v1.18.6和kubesphere-v3.0.0的踩坑过程记录,及反思
  12. java自下而上和自上而下_编程中自上而下和自下而上方法的区别
  13. 研究生查分方式-查分时间大汇总-文都管联院
  14. 添加多浏览器支持是什么意思_低gi什么意思,减肥期间一定要多吃低gi的食物吗?- 理财技巧...
  15. 2023杭州之江中复百日誓师动员大会
  16. 统计Excel数据的重复个数(两个方法)
  17. 淘宝订单、API获取订单
  18. 全球与中国能力和技能管理软件市场深度研究分析报告
  19. three.js 后期处理通道postprocessing
  20. 物流设计大赛优秀作品_第四届广东省大学生物流设计大赛之五邑大学校园选拔赛通知...

热门文章

  1. 浏览器页面前端自适应方案
  2. Python图像处理笔记——形态学处理(skimage.morphology)
  3. QGIS:让数据随时间动起来
  4. 基于matlab的眼部疲劳检测
  5. ENVI 5.3 计算NDVI的几种方法及结果的差异分析
  6. HTML5--表单新特性使用自定义错误提示消息validity属性
  7. 商城尺码选择效果 jquery
  8. Tensorflow中的数据对象Dataset.shuffle()、repeat()、batch() 等用法
  9. 计算机桌面图标有双影,win7图标重影怎么办_win7电脑桌面图标有重影如何解决
  10. 小白应该如何选择国内服务器?腾讯云、阿里云、小鸟云?