【计网 可靠数据传输RDT】 中科大笔记 (十 一)
目录
- 0 引言
- 1 RDT的原理
- RDT的原理:
- 2 RDT的机制与作用
- 2.1 重要协议
- 停等协议(Stop-and-Wait):
- 连续ARQ协议:
- 2.2 机制与作用
- 实现机制:
- RDT的作用:

- 🙋♂️ 作者:海码007
- 📜 专栏:计算机四大基础专栏
- 📜 其他章节:网络快速入门系列、计网概述、计网应用层详解、计网Web和HTTP、计网FTP、计网EMail、计网DNS、计网P2P
- 💥 标题:【计网 可靠数据传输RDT】 中科大笔记 (十 一)
- ❣️ 寄语:书到用时方恨少,事非经过不知难。
- 🎈 最后:文章作者技术和水平有限,如果文中出现错误,希望大家能指正!
0 引言
这是计算机网络TOP10问题之一,所以还是非常重要的。RDT在应用层、传输层和数据链路层都很重要
RDT(Reliable Data Transfer)是一个协议概念,通常用于在传输层(Transport Layer)上实现可靠的数据传输。在OSI模型中,传输层负责在网络中的端到端通信中提供可靠的数据传输服务。
具体来说,在TCP/IP协议族中,RDT的功能主要由传输层的TCP协议来实现。TCP是一个面向连接的协议,提供可靠的、字节流的数据传输。TCP通过序号、确认、重传、流控制等机制,确保数据在两个端之间的可靠传输,同时处理丢包、乱序、重复等问题。
因此,RDT的概念和机制通常体现在传输层协议中,如TCP,而不是在更低层的数据链路层或物理层。在传输层上实现可靠的数据传输允许应用程序在不可靠的网络上进行稳定的通信。(IP协议提供的就是不可靠的传输)
1 RDT的原理
将下层提供的不可靠服务,转换成可靠的服务并向上层提供。
RDT(Reliable Data Transfer)是一种可靠的数据传输协议,用于在不可靠的通信信道上提供可靠的数据传输。RDT的目标是确保数据在发送方和接收方之间的可靠交付,即使通信信道可能出现丢包、乱序或重复等问题。有两种主要的RDT协议:停等协议(Stop-and-Wait)和连续ARQ协议(Continuous Automatic Repeat reQuest)。
RDT的原理:
-
停等协议(Stop-and-Wait):
- 发送方发送数据帧,等待确认帧。
- 接收方接收数据帧,发送确认帧。
- 发送方等待确认,直到超时或接收到正确的确认。
- 如果超时,发送方重传当前帧。
-
连续ARQ协议:
- 发送方可以连续发送多个数据帧而无需等待确认。
- 接收方接收数据帧,发送确认帧。
- 发送方定期检查确认情况,如果收到确认,继续发送下一个数据帧。
- 如果发送方的某个帧超时没有收到确认,重传该帧及之后的所有帧。
-
数据帧结构:
- 每个数据帧都包含序列号,用于标识帧的顺序。
- 帧中可能包含校验和,用于检测传输中是否发生了错误。
- 帧中可能包含确认号,用于指示接收方期望接收的下一个帧。
-
超时处理:
- 发送方设置定时器,等待接收方的确认。
- 如果定时器超时,发送方认为帧丢失,触发重传机制。
-
确认机制:
- 接收方向发送方发送确认帧,确认已成功接收数据。
- 发送方根据确认情况决定是否继续发送下一个数据帧。
总的来说,RDT协议在面对不可靠的通信信道时,通过一系列的策略和机制,使得数据的传输更加可靠、有序、可控,确保了通信的稳定性和正确性。这对于网络通信和分布式系统等应用中非常重要。



2 RDT的机制与作用
RDT(Reliable Data Transfer)的实现通常发生在传输层,具体地说,是在OSI模型或TCP/IP协议栈的传输层。在这个层次上,RDT主要涉及两个重要的协议:停等协议(Stop-and-Wait)和连续ARQ协议(Continuous Automatic Repeat reQuest)。
2.1 重要协议
停等协议(Stop-and-Wait):
- 发送方:
- 发送方发送一个数据帧,然后等待接收方的确认。
- 如果在一定时间内未收到确认,发送方假定数据帧已丢失,触发重传。
- 接收方:
- 接收方收到数据帧后,发送确认。
- 如果收到重复的数据帧,只发送上一次正确接收的帧的确认。
连续ARQ协议:
- 发送方:
- 发送方可以连续发送多个数据帧而无需等待确认。
- 使用窗口(Window)机制控制发送的帧数,确保网络负载适中。
- 接收方:
- 接收方收到数据帧,发送确认。
- 接收方使用窗口机制来控制接收的帧数,确保按序接收。
2.2 机制与作用
实现机制:
-
序号与确认号:
- 每个数据帧都有一个唯一的序号,用于标识帧的顺序。
- 确认帧中包含确认号,表示接收到的下一个希望接收的序号。
-
校验和:
- 数据帧通常包含校验和,用于检测在传输过程中是否发生了错误。
-
定时器与超时处理:
- 发送方设置定时器,如果在规定时间内未收到确认,触发超时机制。
- 超时时,发送方重新发送相应的帧。
-
流控制:
- 使用滑动窗口(Sliding Window)等机制来控制发送和接收的速率。
-
确认和重传机制:
- 发送方接收到确认后,移动发送窗口。
- 如果发生超时或收到重复的确认,进行相应的重传。
RDT的作用:
-
可靠性: RDT协议通过重传机制、确认机制和校验和等手段,确保数据的可靠传输,即使在不可靠的通信信道上也能提供稳定的数据传输服务。
-
流控制: RDT协议通过控制发送方的发送速率,避免了数据的过快发送,以适应接收方的处理能力,防止数据的丢失或溢出。
-
错误检测与纠正: RDT协议在数据帧中使用校验和等机制,能够检测并有时纠正在传输过程中发生的错误,提高通信的可靠性。
-
顺序控制: RDT通过序列号的使用,保证数据帧的正确有序传输,防止数据帧的乱序到达。
总体而言,RDT的作用在于在不可靠的通信信道上提供可靠的数据传输服务,为应用层提供了一个稳定和有序的通信环境。 RDT的实现通常是TCP等协议的基础,为网络通信和分布式系统提供了可靠性和正确性。
相关文章:
【计网 可靠数据传输RDT】 中科大笔记 (十 一)
目录 0 引言1 RDT的原理RDT的原理: 2 RDT的机制与作用2.1 重要协议停等协议(Stop-and-Wait):连续ARQ协议: 2.2 机制与作用实现机制:RDT的作用: 🙋♂️ 作者:海码007📜 专栏&#x…...
ubuntu下训练自己的yolov5数据集
参考文档 yolov5-github yolov5-github-训练文档 csdn训练博客 一、配置环境 1.1 安装依赖包 前往清华源官方地址 选择适合自己的版本替换自己的源 # 备份源文件 sudo cp /etc/apt/sources.list /etc/apt/sources.list_bak # 修改源文件 # 更新 sudo apt update &&a…...
ROC及曲线面积汇总学习
目录 ROC基础 生成模拟数据 率的计算 R语言计算测试 ROCR: pROC ROC绘制 单个ROC 两个ROC Logistic回归的ROC曲线 timeROC ROC基础 ROC曲线的横坐标是假阳性率,纵坐标是真阳性率,需要的结果是这个率表示疾病阳性的率(…...
LeetCode Hot100 35.搜索插入位置
题目: 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 方法:灵神 二分查找 闭区间写法 c…...
Android frameworks 开发总结之八
Quick Settings增加一項 XXX device要求在quick settings中增加一項touch panel. 在/frameworks/base/packages/SystemUI/res/values/config.xml文件中的quick_settings_tiles_default string 中增加touch panel。並在String resource文件中增加顯示的title <!-- The def…...
Cortex-M与RISC-V区别
环境 Cortex-M以STM32H750为代表,RISC-V以芯来为代表 RTOS版本为RT-Thread 4.1.1 寄存器 RISC-V 常用汇编 RISC-V 关于STORE x4, 4(sp)这种寄存器前面带数字的写法,其意思为将x4的值存入sp4这个地址,即前面的数字表示偏移的意思 反之LOA…...
YashanDB入选2023年世界互联网大会领先科技奖成果集《科技之魅》
近日,由深圳计算科学研究院自主研发的“崖山数据库系统YashanDB”入编2023年世界互联网大会领先科技奖成果集《科技之魅》。此次入选,充分彰显了YashanDB在数据库技术领域的突破性创新成果。 《科技之魅》是世界互联网大会领先科技奖的重要成果ÿ…...
C语言基础程序设计题
1.个人所得税计算 应纳税款的计算公式如下:收入<=1000元部分税率为0%,2000元>=收入>1000元的部分税率为5%,3000元>=收入>2000元的部分税率为10%…...
Spring Boot实现图片上传和展示
Spring Boot实现图片上传和展示 本文将介绍如何使用Spring Boot框架搭建后端服务,实现接收前端上传的图片并保存到resources/images目录下。同时,我们还将展示如何在前端编写一个HTML页面,实现上传图片和从resources/images目录下获取图片并…...
大数据-之LibrA数据库系统告警处理(ALM-37015 Gaussdb进程可用文件句柄资源不足)
告警解释 操作系统环境文件句柄不足时,产生该告警。 告警属性 告警ID 告警级别 可自动清除 37015 严重 是 告警参数 参数名称 参数含义 ServiceName 产生告警的服务名称 RoleName 产生告警的角色名称 HostName 产生告警的主机名 Instance 产生告警…...
大一学编程怎么学?刚接触编程怎么学习,有没有中文编程开发语言工具?
大一学编程怎么学?刚接触编程怎么学习,有没有中文编程开发语言工具? 1、大一刚开始学编程,面对复杂的代码学习非常吃力,很难入门。建议刚接触编程可以先学习中文编程,了解其中的编程逻辑,学编程…...
GoWeb学习-第二天
文章目录 从零开始学Go web——第二天一、安装Go语言二、建立web目录2.1 创建GO语言包目录2.2 创建Go web文件 三、编译并运行Go web应用3.1 编译并运行3.2 查看结果 从零开始学Go web——第二天 第一天我们了解了与web息息相关的HTTP协议,聊了聊Go与web的关系等…...
04-鸿蒙4.0学习之样式装饰器相关
04-鸿蒙4.0学习之样式装饰器 styles装饰器:定义组件重用样式 /*** styles装饰器:定义组件重用样式*/ Entry Component struct StyleUI {State message: string stylesStyles commonStyle(){.width(200).height(100).backgroundColor(Color.Gray).marg…...
C# 线程(1)
目录 1 线程与进程2 创建线程3 线程等待4 线程优先级5 前台线程与后台线程6 Lock与线程安全7 Monitor8 死锁9 线程中异常处理 1 线程与进程 进程是计算机概念,一个程序运用时占用的的所有计算机资源(CPU、内存、硬盘、网络)统称为进程。 线程…...
冒泡排序以及改进方案
冒泡排序以及改进方案 介绍: 冒泡排序属于一种典型的交换排序(两两比较)。冒泡排序就像是把一杯子里的气泡一个个往上冒一样。它不断比较相邻的元素,如果顺序不对就像水泡一样交换它们的位置,直到整个序列像水泡一样…...
QTextEdit 是 Qt 框架中的一个类,用于显示和编辑多行文本内容的可编辑部件
QTextEdit 是 Qt 框架中的一个类,用于显示和编辑多行文本内容的可编辑部件。 QTextEdit 提供了一个用于显示和编辑富文本(包括格式化文本、图像和链接等)和纯文本的文本编辑器。它支持基本的文本操作(如复制、粘贴、撤销、重做等…...
vue+jsonp编写可导出html的模版,可通过外部改json动态更新页面内容
效果 导出后文件结果如图所示,点击Index.html即可查看页面,页面所有数据由report.json控制,修改report.json内容即可改变index.html展示内容 具体实现 1. 编写数据存储的json文件 在index.html所在的public页面新建report.json文件ÿ…...
查看各ip下的连接数
netstat -n | awk /^tcp/ {print $5} | awk -F: {print $1} | sort | uniq -c| sort -rn netstat -n:显示所有的网络连接,不包括任何服务名的解释。awk /^tcp/ {print $5}:使用awk命令过滤出tcp协议的连接,并打印出每个连接的第五…...
Linux—进程状态
目录 一.前言 1.1.通过系统调用获取进程标示符 1.2.通过系统调用创建进程 二.进程状态 三.Z(zombie)-僵尸进程 四.僵尸进程危害 一.前言 学习进程的状态,我们首先了解一下进程的基本数据 1.1.通过系统调用获取进程标示符 由getpid()…...
万宾科技可燃气体监测仪科技作用全览
燃气管网在运行过程中经常会遇到燃气管道泄漏的问题,燃气泄漏甚至会引起爆炸,从而威胁人民的生命和财产安全,因此对燃气管网进行定期巡检是十分必要的工作。但是传统的人工巡检已不能满足城市的需要,除了选择增加巡检人员之外&…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...
[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...
Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
