Reliable Data Transfer (RDT) 可靠数据传输协议(2)

2023-11-02 05:10

本文主要是介绍Reliable Data Transfer (RDT) 可靠数据传输协议(2),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在Reliable Data Transfer (RDT) 可靠数据传输协议(1)(https://blog.csdn.net/woaidanyang/article/details/120699060)中我们提到了RDT 3.0协议,他是用来防止packet lost的。而之前提到的RDT 1.0-2.2是为了防止bit error。
本文讨论RDT 3.0 performance的情况。
由于RDT 3.0一次只能传输一个包,造成了物理资源的极大的浪费。如图所示其资源利用率很低。
在这里插入图片描述
因此,人们采用了Pipeline的方式,一次发送多个数据包。其中包含两种方法:
Go-back-N 以及 Selective Repeat

Go-back-N

sender:
在这里插入图片描述
N: pipeline 中最多的 unacknowledged packets 数量
base: sequence number of the oldest unacknowledged packet
nextseqnum:smallest unused sequence number

[0,base-1]: 已经发送和确认的数据包
[base,nextseqnum - 1]: 已经发送但尚未确认的报文
[nextseqnum,base + N - 1]: 用于可立即发送的报文
[≥≥base+N]: 在当前管道中未确认的包(即序列号为base的包)被确认之前,不能使用

就是说一次发送window size的N个数据包,其中黄色的部分是已经发送给出去,但是还没有接收到ACK回应的;蓝色部分是还没有发送出去的部分。绿色和白色分别对应着已经发送过的和还未在window中发送的数据。
在这里插入图片描述
在GBN当中,如果在window当中有一个packet丢失,sender就会重新从丢失的这个packet开始传输,比较影响效率,如图所示为N=4的情况pkt2丢失,然后在timeout之后重新从pkt2开始发送。
在这里插入图片描述

Selective Repeat

selective repeat这种方法:
1. 接收方单独确认所有正确收到的pkts
2. 发送方只重发pkts的ACK没有收到的
在这里插入图片描述

Reference:
[1]JamesF.Kurose, and KeithW.Ross. 计算机网络:自顶向下方法. 机械工业出版社, 2009.
[2]https://blog.csdn.net/xlinsist/article/details/75950327

这篇关于Reliable Data Transfer (RDT) 可靠数据传输协议(2)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/328328

相关文章

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

Java对接MQTT协议的完整实现示例代码

《Java对接MQTT协议的完整实现示例代码》MQTT是一个基于客户端-服务器的消息发布/订阅传输协议,MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛,:本文主要介绍Ja... 目录前言前置依赖1. MQTT配置类代码解析1.1 MQTT客户端工厂1.2 MQTT消息订阅适配器1.

Linux中的自定义协议+序列反序列化用法

《Linux中的自定义协议+序列反序列化用法》文章探讨网络程序在应用层的实现,涉及TCP协议的数据传输机制、结构化数据的序列化与反序列化方法,以及通过JSON和自定义协议构建网络计算器的思路,强调分层... 目录一,再次理解协议二,序列化和反序列化三,实现网络计算器3.1 日志文件3.2Socket.hpp

Linux中的HTTPS协议原理分析

《Linux中的HTTPS协议原理分析》文章解释了HTTPS的必要性:HTTP明文传输易被篡改和劫持,HTTPS通过非对称加密协商对称密钥、CA证书认证和混合加密机制,有效防范中间人攻击,保障通信安全... 目录一、什么是加密和解密?二、为什么需要加密?三、常见的加密方式3.1 对称加密3.2非对称加密四、

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优

关于WebSocket协议状态码解析

《关于WebSocket协议状态码解析》:本文主要介绍关于WebSocket协议状态码的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录WebSocket协议状态码解析1. 引言2. WebSocket协议状态码概述3. WebSocket协议状态码详解3

HTML5 data-*自定义数据属性的示例代码

《HTML5data-*自定义数据属性的示例代码》HTML5的自定义数据属性(data-*)提供了一种标准化的方法在HTML元素上存储额外信息,可以通过JavaScript访问、修改和在CSS中使用... 目录引言基本概念使用自定义数据属性1. 在 html 中定义2. 通过 JavaScript 访问3.

Qt 中集成mqtt协议的使用方法

《Qt中集成mqtt协议的使用方法》文章介绍了如何在工程中引入qmqtt库,并通过声明一个单例类来暴露订阅到的主题数据,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一,引入qmqtt 库二,使用一,引入qmqtt 库我是将整个头文件/源文件都添加到了工程中进行编译,这样 跨平台