3运输层 - 可靠数据传输的原理rdt

article/2025/10/9 8:33:03

可靠数据传输的原理

  • 可靠数据传输——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:链路容量大(延迟大、带宽大),容易出错

在这里插入图片描述


http://chatgpt.dhexx.cn/article/LNCGxRRy.shtml

相关文章

java rdt_使用 Eclipse 和 RDT 开发Ruby应用程序

使用用 Eclipse 和 RDT 开发Ruby应用程序 RDT(Ruby Development Tools)&#xff0c;一组Eclipse插件&#xff0c;使得Eclipse能支持Ruby开发。 而Eclipse是一个功能强大的跨平台集成开发环境&#xff0c;支持对java&#xff0c;jsp&#xff0c;php等地开发。 使用用 Eclipse 和…

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

计算机实验三&#xff1a;Rdt协议对比 一、实验目的二、实验原理1.Rdt1.0&#xff1a;在可靠信道上进行数据传输2.Rdt2.0&#xff1a;有差错检测的传输信道3.Rdt2.1&#xff1a;解决Rdt2.0中ACK/NAK丢失的问题4.流水线协议——解决低效问题 三、实验步骤及分析(一)实验前准备(二…

可靠传输协议——Rdt演变历程

这次为分享一下有关于rdt的发展历程以及rdt协议演变&#xff0c;从rdt1.0-rdt2.0-rdt2.1-rdt2.2-rdt3.0的经历&#xff0c;使rdt一步步进行完善。 我们知道&#xff0c;TCP发送的报文段是交给IP层传送的。TCP下面的网络所提供的是不可靠的传输。因此&#xff0c;TCP要采用措施才…

可靠数据传输(rdt)的原理

可靠数据传输&#xff08;rdt&#xff09;的原理 rdt在应用层、传输层和数据链路层都很重要【不出错、不重复、不丢失】是网络TOP 10问题之一 【sending process&#xff1a;发送方进程&#xff1b;receiver process&#xff1a;接收方进程。要实现可靠数据传输&#xff0c;发…

【学习】可靠数据传输协议 RDT

转载自&#xff1a;https://blog.csdn.net/qq_38505990/article/details/80603007 计网刚开始学的时候完全没听懂 查了好多博文 这篇写得最清楚 仅供学习参考 在计算机网络中&#xff0c;可靠的数据传输&#xff0c;是一个较为重要的问题&#xff0c;最近在看书&#xff08;Com…

rdt(可靠运输协议)理解

逐步解决可靠运输 在这里我们介绍rdt(Reliable Data Transfer)协议,即可靠数据传输协议的逐步完善。 假如底层通道完全可靠(rdt1.0) 我们首先考虑最简单的情况,即底层通道完全可靠,不会发生错误,此时将协议定为rdt1.0。此时发送方和接受方的状态如下。rdt1.0发送方 发…

Rdt2.1 和 Rdt2.2的详细解释

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

rdt(可靠数据传输)

构造可靠数据传输 rdt&#xff08;reliable data transfer protocol&#xff0c;可靠数据传输协议&#xff09; 什么是可靠&#xff1f; 不错、不丢、不乱 1.rdt1.0&#xff1a;可靠信道上的可靠数据传输 最简单的情况即为底层信道是完全可靠的&#xff0c;则该协议非常简…

16、可靠数据传输(rdt)的原理

一、可靠的数据传输&#xff08;rdt&#xff09; 1、什么是可靠数据传输&#xff1a;不出错、不冲突、不失序、不丢失 2、如何实现可靠数据传输&#xff1f; 需要借助于下层提供的协议&#xff0c;但是如果下层提供服务不可靠呢&#xff1f;本层的协议机制&#xff0c;协议实体…

Rdt协议(可靠运输协议)

提示&#xff1a;文章写完后 文章目录 前言一、可靠数据传输原理二、Rdt协议1.Rdt 1.0(可靠信道)2.Rdt 2.0(ARQ重传)3.Rdt 2.1(序列号)4.Rdt 2.2(无NAK)5.Rdt 3.0(定时器) 总结 前言 提示&#xff1a;以下是本篇文章正文内容 一、可靠数据传输原理 可靠指数据在传输过程中不错…

RDT 协议 (可靠数据传输协议)

RDT &#xff08;reliable data transfer&#xff09;协议详解 零、文档目录 .名词解释 背景介绍 rdt协议的实现 总结 疑问解析 参考文献 一、名词解释 rdt协议&#xff08;reliable data transfer&#xff09;可靠数据传输协议 二、背景介绍 计算机网络通过对网络进行…

rdt 可靠数据传输协议

计算机网络的设计基本方案是复杂化&#xff0c;多功能化应用层&#xff0c;运输层的协议设计&#xff0c;从而使得网络层&#xff0c;链路层&#xff0c;物理层变得相对简单&#xff0c;网络搭建的物质条件变得简单。由于网络层较为简单&#xff0c;采用了无连接的协议&#xf…

前端开发学习之一------前端开发是什么以及我们要学什么

1.web前端开发工程师是做什么的 简单地说,就是要与网站打交道 2.成为一名web前端工程师需要具备的条件 ①兴趣 ②敲代码(实践、需要去练习) 3.Web前端开发工程师需要学习什么(重点:HTML,CSS,JavaScript硬性指标) ①软件(代码的辅助工具) 浏览器:浏览器有非常多,(…

前端学习.

前端学习 基础学习路线网页简介1.html2.网页 常用的浏览器Web标准HTML标签&#xff08;上&#xff09;HTML语法规范HTML基本结构标签网页开发工具HTML常用标签HTML中的注释和特殊字符 HTML标签&#xff08;下&#xff09;表格标签表格总结 列表标签列表总结 表单标签综合案例直…

我的前端学习经历

我最近在开发一个NFT相关的Saas&#xff0c;部分截图如下&#xff1a; 这是我一段时间前&#xff0c;朋友圈发的图&#xff0c;现在Saas在页面上有点变化&#xff0c;但懒得再截图了。客观而言&#xff0c;布局还可以&#xff0c;这一套的技术栈是&#xff1a;React TailwindC…

前端学习路线

这里写目录标题 1、产品经理。2、UI设计师。3、项目经理。4、最终用户。 一、基础二、JS1.JS变量2.JS运算符3.JS数组4.JS流程语句5.JS字符串函数6.JS函数基础7.JS基础DOM操作8.JS正则表达式9.JS数据类型 三、后端语言四、学习方法建议 前端开发工程师 不仅要掌握基本的Web前端开…

WEB前端开发学习5大网站,你用过几个?

“工欲善其事,必先利其器”,学习WEB前端开发也是一样。 一、前端视频教程-51自学网 我要自学网是由佛山市丰智胜教育咨询服务有限公司倾力打造的在线实用技能学习平台。该平台成立于2007年6月7日,是一家专业从事软件视频教程开发的教育服务机构。开发团队由奋战在教学第一线…

前端开发工程师学习路线图(收藏版)

在网上看到很多类似“前端现在是不是饱和了&#xff0c;是不是不好找工作了呀&#xff1f;”这类问题&#xff0c;就这类问题也和小伙伴进行了探讨&#xff0c;大家一致认为——不是前端饱和了&#xff0c;而是现在前端的工作在不断独立&#xff0c;门槛越来越高&#xff0c;再…

什么是前端开发及学习路线

一、什么是前端开发 前端开发是创建Web页面或app等前端界面呈现给用户的过程&#xff0c;在这个过程中需要学习并使用&#xff0c;HTML、CSS、JavaScript以及衍生出的各种技术、框架&#xff1b;其中最基础也最核心的就是&#xff1a;HTML、CSS、JavaScript&#xff0c;俗称“…

前端开发学习及工具网站(持续更新)

前端开发学习及工具网站 该文章主要是记录前端开发中好的学习网站或者工具网站 大部分实用网站来源抖音鱼皮大佬分享&#xff0c;这里分享给大家 1、w3cschool(编程狮) 这个网站适合0基础学前端的同学&#xff0c;内容简单易懂&#xff0c;在闯关中进行学习&#xff0c;能够刺…