3运输层 - 可靠数据传输的原理rdt
可靠数据传输的原理
- 可靠数据传输——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相关推荐
- Day6:可靠数据传输的原理
加油!偷博仔 今天遇见两首顾城的诗 黑夜给了我黑色眼睛 我却用它寻找光明 ----<一代人> 1979年4月 在你的门前 我堆起一个雪人 代表笨拙的我 把你久等 你拿出一颗棒糖 一颗甜甜的 ...
- GBN,SR,TCP协议实现可靠数据传输的原理
第一题 假设主机A向主机B发送5个连续的报文段,主机B对每个报文段进行确认,其中第二个报文段丢失,其余报文段以及重传的第二个报文段均被主机B正确接收,主机A正确接收所有ACK报文段:报文段从1开始依次 ...
- 计算机网络自顶向下方法 第三章 运输层 3.4 可靠数据传输原理
计算机网络自顶向下方法总结3.4可靠数据传输原理 目录 3.4 可靠数据传输原理 3.4.1 构造可带数据传输协议 3.4.2 流水线可靠数据传输协议 3.4.3 回退N步 3.4.4 选择重传 3. ...
- [计算机网络] 运输层 可靠传输rdt 拥塞控制 TCP连接 多路复用
运输层 运输层服务 运输层协议:为运行在不同主机上的应用进程提供逻辑通信功能(主机直接相连).即端到端传输. 进程之间使用逻辑通信功能彼此发送报文,无需考虑具体物理链路. 运输层协议运行在端系统,不在 ...
- 可靠数据传输原理详细图解
可靠数据传输原理 概述 rdt1.0 rdt2 rdt2.0 rdt2.1 rdt2.2 rdt3.0 流水线可靠数据传输协议 为什么使用流水线 流水线对可靠数据传输协议带来的影响 流水线协议中恢复差 ...
- 计算机网络(自顶向下方法)学习记录---3.4 可靠数据传输原理
文章目录 前言 一.构造可靠传输协议 1.rdt1.0 2.rdt2.0 3.rdt2.1 4.rdt3.0 二.GBN 总结 前言 在学习3.5节TCP传输之前,我们需要先了解到可靠数据的传输原理, ...
- 计算机网络(14)——可靠数据传输原理
文章目录 可靠数据传输原理 构造可靠数据传输协议 经完全可靠信道的可靠数据传输:rdt 1.0 经具有比特错误信道的可靠数据传输:rdt 2.0 经具有比特错误信道的可靠数据传输:rdt 2.1 经具 ...
- 可靠数据传输原理1(构造可靠数据传输协议)
TCP向调用它的因特网应用所提供的服务模型(服务抽象) 数据可以通过一条可靠的信道进行传输.借助于可靠的信道,传输比特就不会受到损坏或丢失,而且所有数据都是按其发送顺序进行交付. 可靠传输协议 实现服 ...
- 计网必会:UDP差错检测,检验和、可靠数据传输原理
文章目录 [前言] UDP套接字 无连接运输 UDP 的优势 UDP的差错检测 可靠数据传输 可靠传输的方式总结 构造可靠数据传输协议 可靠信道 具有比特差错的信道 三种可能 [前言] 之前一节我们介 ...
- [计算机网络] 可靠数据传输 rdt1.0 2.0 2.1 2.2 3.0;GBN;SR
(给爷整吐了 还有状态机要背) 可靠数据传输原理 可靠数据传输的问题在运输层.链路层及应用层都会出现. 数据通过一条可靠的信道传输 即传输的数据不出错,丢失,并按照发送的顺序传送 可靠传输实现 设计可 ...
最新文章
- 一起谈.NET技术,通过16道练习学习Linq和Lambda
- python语言中整型对应的英文_Python基本数据类型详细介绍(转)
- 开机自启动脚本_使用xtu降低笔记本(游戏本)cpu电压及功耗·游戏本延时(以及试着解决开机自启动的问题)...
- LeetCode: Convert BST to Greater Tree
- 有了docsify神器,从此爱上看文档
- (35)FPGA原语设计(BUFGCTRL)
- Java内存溢出定位和解决方案(new)
- Windows 下使用苹果鼠标、键盘
- 安装element ui
- 移动光猫RAISECOM的配置方法
- 采用KubeSphere的kk,部署安装多节点服务的kubernetes-v1.18.6和kubesphere-v3.0.0的踩坑过程记录,及反思
- java自下而上和自上而下_编程中自上而下和自下而上方法的区别
- 研究生查分方式-查分时间大汇总-文都管联院
- 添加多浏览器支持是什么意思_低gi什么意思,减肥期间一定要多吃低gi的食物吗?- 理财技巧...
- 2023杭州之江中复百日誓师动员大会
- 统计Excel数据的重复个数(两个方法)
- 淘宝订单、API获取订单
- 全球与中国能力和技能管理软件市场深度研究分析报告
- three.js 后期处理通道postprocessing
- 物流设计大赛优秀作品_第四届广东省大学生物流设计大赛之五邑大学校园选拔赛通知...
热门文章
- 浏览器页面前端自适应方案
- Python图像处理笔记——形态学处理(skimage.morphology)
- QGIS:让数据随时间动起来
- 基于matlab的眼部疲劳检测
- ENVI 5.3 计算NDVI的几种方法及结果的差异分析
- HTML5--表单新特性使用自定义错误提示消息validity属性
- 商城尺码选择效果 jquery
- Tensorflow中的数据对象Dataset.shuffle()、repeat()、batch() 等用法
- 计算机桌面图标有双影,win7图标重影怎么办_win7电脑桌面图标有重影如何解决
- 小白应该如何选择国内服务器?腾讯云、阿里云、小鸟云?