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将重传从超时的字节开始的段,根据算法(如快速重传、慢启动等)决定具体的重传范围。
这样填充和解释的表格有助于理解不同协议在数据传输中的错误处理和重传机制。
不同协议对发送窗口和接收窗口的大小有不同的规定,下面我们详细讨论 GBN、SR(Selective Repeat) 和 TCP 协议中窗口的管理。
1. GBN(Go-Back-N)协议:
- 发送窗口:大小为 ( 2 n − 1 ) (2^n - 1) (2n−1),即最多可以有 ( 2 n − 1 ) (2^n - 1) (2n−1)个未被确认的分组在网络中传输。这里 (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使用两个机制来调整发送窗口:
- 接收方的接收窗口(Receive Window, rwnd):这是接收方通告给发送方的可用缓冲区大小,限制了发送方最多可以发送多少未被确认的数据。
- 拥塞窗口(Congestion Window, cwnd):这是根据网络拥塞状况动态调整的一个窗口,发送方基于这个窗口控制发送速率,避免网络过载。
TCP的发送窗口为接收窗口和拥塞窗口中的较小值:
发送窗口 = min(rwnd, cwnd)。因此,TCP的发送窗口可以根据网络状况和接收方的反馈实时变化。 -
接收窗口:TCP的接收窗口同样是动态的,由接收方根据自身的缓冲区容量来通告。接收窗口的大小(rwnd)决定了接收方能够同时处理的未确认数据量,确保发送方不会发送超过接收方缓冲区容量的数据。
4. 总结对比:
| 协议类型 | 发送窗口大小 | 接收窗口大小 |
|---|---|---|
| GBN | 2 n − 1 2^n - 1 2n−1 | 固定为 1 |
| SR | 2 n − 1 2^{n-1} 2n−1 | 2 n − 1 2^{n-1} 2n−1,与发送窗口相同 |
| TCP | 动态调整: m i n ( r w n d , c w n d ) min(rwnd, cwnd) min(rwnd,cwnd) | 动态调整,取决于接收方缓冲区容量(rwnd) |
补充:
- GBN 和 SR 都基于序列号的位数 (n) 来确定窗口大小,GBN最大窗口是 2 n − 1 2^n - 1 2n−1,而SR由于需要处理失序分组,窗口大小限制为 2 n − 1 2^{n-1} 2n−1。
- 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,…...
【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的一些高级特性,包括消息确认、死信队列、延迟队列、事务处理以及消息分发策略等ÿ…...
提升泛化能力的前沿方法:多任务学习在机器学习中的应用与实践
提升泛化能力的前沿方法:多任务学习在机器学习中的应用与实践 📋 目录 🧩 多任务学习的概念与动机🌐 多任务学习在自然语言处理中的应用案例🖼️ 多任务学习在计算机视觉中的应用案例⚙️ 项目实践:实现多…...
【小白学机器学习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标签,这个标签不兼容app,官方文档 <cameradevice-position"back"flash"off":style"{ height: lheight px, width: lwidth px }"class"w-full"></c…...
Android中的SSL/TLS加密及其作用
Android中的SSL/TLS加密及其作用 SSL/TLS(Secure Sockets Layer/Transport Layer Security)加密技术是保护网络通信安全的关键技术之一,广泛应用于各种网络通信场景,包括Android应用开发。在Android中,SSL/TLS加密技术…...
东芝TLP176AM光耦合器:提升设计性能的关键元件
在当今快速发展的电子领域,精确性、可靠性和效率比以往任何时候都更加重要。作为工程师,我们不断寻找不仅能满足严格技术要求,还能提升整体设计性能的元件。其中,东芝的TLP176AM光耦合器正因其卓越的性能在业界备受关注。 什么是…...
MySQL数据库:基础介绍下载与安装
数据库基础知识先谈发音MySQL如何发音?在国内MySQL发音有很多种,Oracle官方文档说他们念作My sequal[si:kwəl]。 数据库基本概念 1。数据数据(Data)是指对客观事物进行描述并可以鉴别的符号,这些符号是可识别的、抽…...
原理代码解读:基于DiT结构视频生成模型的ControlNet
Diffusion Models视频生成-博客汇总 前言:相比于基于UNet结构的视频生成模型,DiT结构的模型最大的劣势在于生态不够完善,配套的ControlNet、IP-Adapter等开源权重不多,导致难以落地。最近DiT-based 5B的ControlNet开源了,相比于传统的ControlNet有不少改进点,这篇博客将从…...
【Pip】初识 Pip:Python 包管理的基本命令详解
目录 引言1. 什么是 pip?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…...
visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...
Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能
1. 开发环境准备 安装DevEco Studio 3.1: 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK 项目配置: // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...
ThreadLocal 源码
ThreadLocal 源码 此类提供线程局部变量。这些变量不同于它们的普通对应物,因为每个访问一个线程局部变量的线程(通过其 get 或 set 方法)都有自己独立初始化的变量副本。ThreadLocal 实例通常是类中的私有静态字段,这些类希望将…...
Spring事务传播机制有哪些?
导语: Spring事务传播机制是后端面试中的必考知识点,特别容易出现在“项目细节挖掘”阶段。面试官通过它来判断你是否真正理解事务控制的本质与异常传播机制。本文将从实战与源码角度出发,全面剖析Spring事务传播机制,帮助你答得有…...
LINUX编译vlc
下载 VideoLAN / VLC GitLab 选择最新的发布版本 准备 sudo apt install -y xcb bison sudo apt install -y autopoint sudo apt install -y autoconf automake libtool编译ffmpeg LINUX FFMPEG编译汇总(最简化)_底部的附件列表中】: ffmpeg - lzip…...
