当前位置: 首页 > news >正文

gbn,sr和tcp的区别

这是关于三种不同协议(GBN、SR、TCP)处理传输时序和丢包的行为比较。我们可以分别填充并解释它们的处理机制:

GBN(Go-Back-N)协议:

类型发送方的计时器保存的是啥接收方收到失序的分组怎么办超时的时候发送的超时的那个分组还是已经发送但是没有收到确认的分组
GBN发送窗口中最早未被确认的分组丢弃失序的分组,继续等待期望的分组重发所有从超时分组开始的分组(包括超时的分组)

解释:

  • 计时器保存的内容:在GBN中,发送方使用单个计时器来监控发送窗口中最早的未被确认的分组。如果该计时器超时,发送方将重发从该分组开始的所有分组。
  • 接收方处理失序分组:GBN的接收方只会接受按顺序到达的分组,对于失序到达的分组将直接丢弃,不会缓存。
  • 超时处理:当发送方的计时器超时时,发送方会重发从超时的那个分组开始的所有分组,即便有些分组已经成功到达接收方但未确认。

SR(Selective Repeat)协议:

类型发送方的计时器保存的是啥接收方收到失序的分组怎么办超时的时候发送的超时的那个分组还是已经发送但是没有收到确认的分组
SR每个未确认的分组都有一个独立的计时器缓存失序的分组,等待缺失分组到达后进行处理只重发超时的那个分组

解释:

  • 计时器保存的内容:在SR中,每个未被确认的分组都有一个独立的计时器,因此每个分组可以独立超时和重传。
  • 接收方处理失序分组:SR的接收方会缓存失序到达的分组,不会丢弃。当接收方收到期望的分组后,它会按照顺序交付缓存的分组。
  • 超时处理:如果某个分组超时,发送方只会重发这个超时的分组,而不会重发其他已经发送的分组。

TCP(Transmission Control Protocol):

类型发送方的计时器保存的是啥接收方收到失序的分组怎么办超时的时候发送的超时的那个分组还是已经发送但是没有收到确认的分组
TCP发送窗口中最早未被确认的字节(而非分组)丢弃 或者 缓存失序的分组,等待期望的分组后再按序交付重发从超时的字节开始的段,具体根据不同的拥塞控制算法决定重发策略

解释:

  • 计时器保存的内容:TCP使用字节流控制而不是基于分组,计时器通常用于监控发送窗口中最早未被确认的字节。
  • 接收方处理失序分组:TCP接收方会缓存失序到达的分组,等待期望的字节块到达后再按顺序交付数据。
  • 超时处理:TCP的超时重传机制依赖于拥塞控制算法。如果一个分组(段)超时,TCP将重传从超时的字节开始的段,根据算法(如快速重传、慢启动等)决定具体的重传范围。

这样填充和解释的表格有助于理解不同协议在数据传输中的错误处理和重传机制。


不同协议对发送窗口和接收窗口的大小有不同的规定,下面我们详细讨论 GBNSR(Selective Repeat)TCP 协议中窗口的管理。

1. GBN(Go-Back-N)协议

  • 发送窗口:大小为 ( 2 n − 1 ) (2^n - 1) (2n1),即最多可以有 ( 2 n − 1 ) (2^n - 1) (2n1)个未被确认的分组在网络中传输。这里 (n) 是用于序列号的比特数。例如,如果 (n = 3),那么发送窗口的大小最大为 7。
  • 接收窗口:固定为1。也就是说,接收方只能按顺序接收分组,无法接受和缓存失序的分组。如果接收到一个失序的分组,接收方会丢弃该分组并发回最后正确接收的分组的ACK。

2. SR(Selective Repeat)协议

  • 发送窗口:大小为 (W \leq 2^{n-1})。SR协议的发送窗口的最大值为 (2^{n-1}),与GBN相比略小一半。原因是SR需要在接收方缓存失序的分组,因此为了确保序列号不会出现混淆,发送窗口最大为 (2^{n-1})。如果窗口太大,接收方可能无法区分一个分组是重传的旧分组还是新的分组。
  • 接收窗口:接收窗口的大小等于发送窗口的大小,也就是 (W \leq 2^{n-1})。在SR协议中,接收方可以缓存失序的分组,因此它可以同时处理多个未按顺序到达的分组。接收方在收到某个丢失的分组后,会根据顺序依次交付缓存的分组。

3. TCP(Transmission Control Protocol)

  • 发送窗口:TCP中的发送窗口大小是动态调整的,取决于接收方的接收能力和网络的拥塞状况。TCP使用两个机制来调整发送窗口:

    1. 接收方的接收窗口(Receive Window, rwnd):这是接收方通告给发送方的可用缓冲区大小,限制了发送方最多可以发送多少未被确认的数据。
    2. 拥塞窗口(Congestion Window, cwnd):这是根据网络拥塞状况动态调整的一个窗口,发送方基于这个窗口控制发送速率,避免网络过载。

    TCP的发送窗口为接收窗口和拥塞窗口中的较小值发送窗口 = min(rwnd, cwnd)。因此,TCP的发送窗口可以根据网络状况和接收方的反馈实时变化。

  • 接收窗口:TCP的接收窗口同样是动态的,由接收方根据自身的缓冲区容量来通告。接收窗口的大小(rwnd)决定了接收方能够同时处理的未确认数据量,确保发送方不会发送超过接收方缓冲区容量的数据。

4. 总结对比

协议类型发送窗口大小接收窗口大小
GBN 2 n − 1 2^n - 1 2n1固定为 1
SR 2 n − 1 2^{n-1} 2n1 2 n − 1 2^{n-1} 2n1,与发送窗口相同
TCP动态调整: m i n ( r w n d , c w n d ) min(rwnd, cwnd) min(rwnd,cwnd)动态调整,取决于接收方缓冲区容量(rwnd)

补充:

  • GBNSR 都基于序列号的位数 (n) 来确定窗口大小,GBN最大窗口是 2 n − 1 2^n - 1 2n1,而SR由于需要处理失序分组,窗口大小限制为 2 n − 1 2^{n-1} 2n1
  • TCP 不使用固定的窗口大小,窗口根据网络拥塞状况和接收方的能力动态变化,因此更加灵活,适合互联网等复杂的网络环境。

相关文章:

gbn,sr和tcp的区别

这是关于三种不同协议(GBN、SR、TCP)处理传输时序和丢包的行为比较。我们可以分别填充并解释它们的处理机制: GBN(Go-Back-N)协议: 类型发送方的计时器保存的是啥接收方收到失序的分组怎么办超时的时候发…...

FastGPT本地开发 之 通过Navicat管理MongoDB、PostgreSQL数据库

1. 背景 前期已经完成FastGPT的本地化部署工作,通过Docker启动FastGPT的相关容器即可运行。(共6个容器) 2.本地化开发 2.1 前置依赖 2.2 源码拉取 git clone gitgithub.com:labring/FastGPT.git2.3 数据库管理 本地化运行的FastGPT使用…...

hardhat部署智能合约

Hardhat安装 安装node 可以使用 nvm 安装node GitHub - nvm-sh/nvm: Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions 安装Hardhat 打开命令行工具,输入: mkdir hardhat-demo cd hardhat-demo npm i…...

界面控件DevExtreme中文教程 - 如何与Amazon S3和Azure Blob存储集成?

DevExtreme拥有高性能的HTML5 / JavaScript小部件集合,使您可以利用现代Web开发堆栈(包括React,Angular,ASP.NET Core,jQuery,Knockout等)构建交互式的Web应用程序。从Angular和Reac&#xff0c…...

【ERROR】ubuntu source: not found

Ubuntu 24.04.1 LTS系统设置环境变量,执行 source ~/.bashrc出现错误: source command not found 解决方案:不需要处理( echo 以下你的环境变量,发现是生效的),ubantu系统 中 /bin/sh 通常链接到 dash,这…...

聚焦IOC容器刷新环节postProcessBeanFactory(BeanFactory后置处理)专项

目录 一、IOC容器的刷新环节快速回顾 二、postProcessBeanFactory源码展示分析 (一)模版方法postProcessBeanFactory (二)AnnotationConfigServletWebServerApplicationContext 调用父类的 postProcessBeanFactory 包扫描 …...

配置nginx服务通过ip访问多网站

过程概要 1.前提配置 关防火墙 关selinux 2.安装web服务程序nginx 3.查看nginx是否开启 4.为当前主机添加多地址(ip a) 5.自定义nginx配置文件通过多地址区分多网站 /etc/nginx/conf.d/test_ip.conf server { #标记为一个虚拟主机 } 6.根据配置…...

银河麒麟V10设置QT开发程序开机自启动

1、切换root用户: su root 2、进入/etc/xdg/autostart目录: cd /etc/xdg/autostart 3、创建一个test.desktop文件,文件名不一定命名为test,可以自己随意命名: touch test.desktop 4、完善test.desktop文件内容: …...

RabbitMQ高级特性详解

前言 RabbitMQ是一款广泛使用的开源消息队列软件,它基于AMQP(Advanced Message Queuing Protocol)标准实现。本文将带你深入了解RabbitMQ的一些高级特性,包括消息确认、死信队列、延迟队列、事务处理以及消息分发策略等&#xff…...

提升泛化能力的前沿方法:多任务学习在机器学习中的应用与实践

提升泛化能力的前沿方法:多任务学习在机器学习中的应用与实践 📋 目录 🧩 多任务学习的概念与动机🌐 多任务学习在自然语言处理中的应用案例🖼️ 多任务学习在计算机视觉中的应用案例⚙️ 项目实践:实现多…...

【小白学机器学习16】 概率论的世界观2

目录 一 从正态分布说起 1.1 正态分布是自然分布,是客观 1.2 万物不齐 1.3 中庸 1.4 动态平衡 正态分布,概率论都是一种世界观 一 从正态分布说起 1.1 正态分布是自然分布,是客观 世界是客观的,是不以人们的意志想法为转…...

洛谷 P9868 [NOIP2023] 词典

好久不写博客了,今天来水一篇 原题链接 初看此题在洛谷上的定位是黄题,实际上也并不是很简单。 其实主要就用到了贪心的思想,先说一下我在做题的时候是怎么想的吧。 先看了部分分,10分是很好拿的,再就分析题意&…...

跨浏览器免费书签管理系统

随着互联网信息的爆炸式增长,如何有效管理我们日常浏览中发现的重要网页,成为了每个重度互联网用户的需求。一个跨平台的书签管理网站能够帮助用户在不同设备之间无缝同步和管理书签。本文将分享如何使用 Python 和 SQLite 构建一个简单、易于维护的跨平…...

导出Excel的常用方法:从前端到后端的全面指南

导出Excel的常用方法:从前端到后端的全面指南 在现代Web应用中,导出数据为Excel文件是一个常见需求。无论是为了数据分析、记录保存还是简单的数据共享,Excel文件都因其广泛的兼容性和易用性而成为首选格式之一。本文将介绍几种常用的Excel导…...

uni-app中添加自定义相机(微信小程序+app)

一、微信小程序中 微信小程序中可以直接使用camera标签&#xff0c;这个标签不兼容app&#xff0c;官方文档 <cameradevice-position"back"flash"off":style"{ height: lheight px, width: lwidth px }"class"w-full"></c…...

Android中的SSL/TLS加密及其作用

Android中的SSL/TLS加密及其作用 SSL/TLS&#xff08;Secure Sockets Layer/Transport Layer Security&#xff09;加密技术是保护网络通信安全的关键技术之一&#xff0c;广泛应用于各种网络通信场景&#xff0c;包括Android应用开发。在Android中&#xff0c;SSL/TLS加密技术…...

东芝TLP176AM光耦合器:提升设计性能的关键元件

在当今快速发展的电子领域&#xff0c;精确性、可靠性和效率比以往任何时候都更加重要。作为工程师&#xff0c;我们不断寻找不仅能满足严格技术要求&#xff0c;还能提升整体设计性能的元件。其中&#xff0c;东芝的TLP176AM光耦合器正因其卓越的性能在业界备受关注。 什么是…...

MySQL数据库:基础介绍下载与安装

数据库基础知识先谈发音MySQL如何发音&#xff1f;在国内MySQL发音有很多种&#xff0c;Oracle官方文档说他们念作My sequal[si:kwəl]。 数据库基本概念 1。数据数据&#xff08;Data&#xff09;是指对客观事物进行描述并可以鉴别的符号&#xff0c;这些符号是可识别的、抽…...

原理代码解读:基于DiT结构视频生成模型的ControlNet

Diffusion Models视频生成-博客汇总 前言:相比于基于UNet结构的视频生成模型,DiT结构的模型最大的劣势在于生态不够完善,配套的ControlNet、IP-Adapter等开源权重不多,导致难以落地。最近DiT-based 5B的ControlNet开源了,相比于传统的ControlNet有不少改进点,这篇博客将从…...

【Pip】初识 Pip:Python 包管理的基本命令详解

目录 引言1. 什么是 pip&#xff1f;1.1 pip 的安装 2. pip 的基本命令2.1 pip install2.2 pip uninstall2.3 pip list2.4 pip show2.5 pip freeze2.6 pip search2.7 pip install -U2.8 pip install -r2.9 pip check2.10 pip cache 3. 使用示例3.1 安装多个包3.2 创建虚拟环境3…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中&#xff0c;高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司&#xff0c;近期做出了一个重大技术决策&#xff1a;弃用长期使用的 Nginx&#xff0c;转而采用其内部开发…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...