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

数据通信——传输层TCP(超时时间选择)

引言

  TCP每一次发送报文段,就会对这个报文段设置一次计时器。如果时间到了却没有收到确认报文,那么就要重传该报文。

  这个之前在TCP传输的机制中提到过,这个章节就来研究一下超时时间问题。

 关于加权的概念

有必要提及一下加权的概念,这属于数学知识,但可用帮助我们理解超时重传机制。 

权是在测量时不同的精准度,加权就是乘上权重/系数的含义,加权是对精准度的一种测量。

    比如说:你参加了一个竞赛,专家、老师和学生分别为你打分。最后分数进行计算后作为总成绩。我们下意识认为是(8+6+7)/3=7这样通过加法平均数的方式进行计算。但是在你看来不公平!因为你认为专家是懂竞赛的,不应该因为老师的打分和学生的随意而影响了总成绩。因此赛事委员设置专家的权重和老师及学生的权重为0.5:0.3:0.2,那么加权后就是8*0.5+6*0.3+7*0.2=7.2。这样相对更加公平。下图就是加权的计算方式。

好了,此时就能对超时重传时间进行描述了。

超时重传时间

    下图所示,TCP数据报文发送直到TCP确认报文回馈的这段时间为一个RTT时间。这个之前也提到过。

但是会出现以下两种情况:

    一,超时重传时间远远小于一个RTT时间,那么就会导致ACK信息还没到达前,请求重传就发出了,结果ACK到达了,重传发出后的请求又导致重复的信息再次发送了。占用了大量带宽!

    二,如果超时重传时间远远大于一个RTT时间,那么一旦出现问题需要重传了,超时重传的请求隔了很久才到达,大大影响了网络使用空间。

上图是两种可能发生的情况 

    为了避免上述情况的发生,超时重传的时间应该略微大于RTT时间,可是问题来了,怎么保证呢?这时就要采用加权计算的方式了。

    我们知道每个报文在一段时间内的传输速率不同,因此重传时间不应该是一个固定值,而是随着RTT值的变动而变动且要略大于RTT值。我们此时假设RTO为超时传输时间,RTTs为加权的平均往返时间。那么就有如下计算方式:

  我们得出了加权的RTTs的值,这个数值决定了各个阶段RTT在加权情况下的往返时间,随后,我们要使得RTTO略微大于RTTs即可,那么有以下计算公式:

 我们知道RTTs是上述的加权平均往返时间,那么RTTD是什么呢?

    RTTD为RTT的偏差的加权平均值。官方建议这样计算:第一次测量时,RTTD的值取为测量到的RTT样本值的一半。在以后的测量中,使用以下公式计算加权平均RTTD的值。

    它的计算方式和RTTs计算方式大同小异,我认为RTTD是为了进一步精准确定RTTs的范围,将RTTs的加权平均值和4倍的RTTD的偏差加权平均值放在一起就能得到RTO的值。

    好了,确定了RTO的数值,我们就可以重传了,而每一次重传又会发生两种情况好了,新问题又来了:

  也就是说,重传时,问题又会出现之前RTT的情况,此时的RTO如果不进行更改,那么问题会再次显现。 

    那么此时引入了一个算法(Karn算法),公式是:

     其中“r”的值为2,每一次重传都会将旧的超时重传时间扩大2倍。当报文段不再重传时,才会根据报文段的往返时延更新平均往返时延RTT和超时重传时间RTO的数值。这样的好处是,我不需要对重传报文的往返时间重新计算了。

相关文章:

数据通信——传输层TCP(超时时间选择)

引言 TCP每一次发送报文段,就会对这个报文段设置一次计时器。如果时间到了却没有收到确认报文,那么就要重传该报文。 这个之前在TCP传输的机制中提到过,这个章节就来研究一下超时时间问题。 关于加权的概念 有必要提及一下加权的概念&#x…...

【数据库索引优化】

文章目录 数据库索引优化1. 选择合适的字段创建索引2. 限值每张表上的索引数量3. 被频繁更新的字段应该慎重建立索引4. 尽可能考虑简历联合索引而不是单列索引5. 避免冗余索引6. 字符串类型的字段使用前缀索引代替普通索引7. 避免索引失效8. 删除长期未使用的索引 数据库索引优…...

WebGL 选中物体

目录 前言 如何实现选中物体 示例程序(PickObject.js) 代码详解 gl.readPixels()函数规范 示例效果 前言 有些三维应用程序需要允许用户能够交互地操纵三维物体,要这样做首先就得允许用户选中某个物体。对物体…...

科目二倒车入库

调整座位和后视镜 离合踩到底大腿小腿成130-140 上半身90-100 座椅高度能看到前方全部情况 后视镜调节到能看到后门把手,且后门把手刚好在后视镜上方边缘、离车1/3处。 保持直线: 前进: 车仪表盘中央的原点和地面上的黄线擦边&#xff…...

PostgreSQL如何支持PL/Python过程语言

瀚高数据库 目录 环境 文档用途 详细信息 环境 系统平台:Linux x86-64 Red Hat Enterprise Linux 7 版本:10.4 文档用途 本文档主要介绍PostgreSQL如何支持PL/Python过程语言,如何创建plpython扩展。 详细信息 一、PostgreSQL支持python语言…...

【C++】STL之适配器---用deque实现栈和队列

目录 前言 一、deque 1、deque 的原理介绍 2、deque 的底层结构 3、deque 的迭代器 4、deque 的优缺点 4.1、优点 4.2、缺点 二、stack 的介绍和使用 1、stack 的介绍 2、stack 的使用 3、stack 的模拟实现 三、queue 的介绍和使用 1、queue 的介绍 2、queue 的使用 3、qu…...

PHY6230低成本遥控灯控芯片国产蓝牙BLE5.2 2.4G SoC

高性价比的低功耗高性能蓝牙5.2系统级芯片,适用多种PC/手机外设连接场景。 高性能多模射频收发机: 通过硬件模块的充分复用实现高性能多模数字收发机。发射机,最大发射功率10dBm;BLE 1Mbps速率接收机灵敏度达到-96dBm&#xff1…...

OceanBase杨传辉传递亚运火炬:国产数据库为“智能亚运”提供稳稳支持

9 月 14 日,亚运火炬传递到了浙江台州,OceanBase 的 CTO 杨传辉作为火炬手交接了第 89 棒火炬。 2010 年,杨传辉作为创始成员之一参与自研原生分布式数据库 OceanBase。十年磨一剑,国产数据库 OceanBase 交出了一张优秀的成绩单&a…...

分布式锁实现方法

分布式锁 什么时候需要加锁 有并发,多线程有写操作有竞争关系 场景: 电商系统,下单流程:用户下单–>秒杀系统检查redis商品库存信息–>用户锁定并更新库存(mysql)—>秒杀系统更新redis 问题&…...

软件测试缺陷报告详解

【软件测试行业现状】2023年了你还敢学软件测试?未来已寄..测试人该何去何从?【自动化测试、测试开发、性能测试】 缺陷报告是描述软件缺陷现象和重现步骤地集合。软件缺陷报告Software Bug Report(SBR)或软件问题报告Software Pr…...

pytorch冻结参数训练的坑

由于项目需要训练一个主干网络接多个分支的模型,所以先训练一个主干网络加第一个分支,再用另外的数据训练第二个分支,训练的过程中需要冻结主干网络部分,后面的分支训练过程也一样需要冻结主干网络部分。 冻结模型的方式 for nam…...

P1827 [USACO3.4] 美国血统 American Heritage(前序 + 中序 生成后序)

P1827 [USACO3.4] 美国血统 American Heritage(前序 中序 生成后序) 一、前言 二叉树入门题。涉及到树的基本知识、树的结构、树的生成。 本文从会从结构,到完成到,优化。 二、基础知识 Ⅰ、二叉树的遍历 前序遍历&#xff…...

【四、centOS安装docker】

安装docker sudo yum install -y yum-utils device-mapper-persistent-data lvm2 如果以上报错 备份系统自带yum源配置文件 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup进入 /etc/yum.repos.d cd /etc/yum.repos.d删除文件 rm -f *.r…...

想学嵌入式开发,薪资怎么样?

想学嵌入式开发,薪资怎么样? 对于嵌入式工程师来说呢,它重点学习内容就是首先一定要打好基础,如果从编程语言角度来讲,那么可以在语言上选C或者C,你可以选择其中任何一门语言作为你的入门。 最近很多小伙伴…...

SQL死锁进程内容查询语句

1.方式1 SELECT object_name(A.resource_associated_entity_id) as TABLENAME, A.request_session_id AS SPID,DB_NAME(B.dbid) AS DBName,B.blocked,B.dbid,B.program_name,B.waitresource,B.lastwaittype,B.loginame,B.hostname,B.login_time,B.last_batch--,B.* FROM sy…...

Ubuntu 20.04中Nightingale二进制部署

参考博客《【夜莺监控】初识夜莺,强!》 lsb_release -r可以看到操作系统版本是20.04,uname -r可以看到内核版本是5.5.19。 sudo apt-get update进行更新镜像源。 完成之后,如下图: sudo apt-get upgrade更新软件…...

深入探讨Java面试中内存泄漏:如何识别、预防和解决

引言 在编写和维护Java应用程序时,内存泄漏是一个重要的问题,可能导致性能下降和不稳定性。本文将介绍内存泄漏的概念,为什么它在Java应用程序中如此重要,并明确本文的目标,即识别、预防和解决内存泄漏问题。 内存泄…...

win10 安装.net framework 3.5,错误代码0x8024401C

win10 安装.net framework 3.5,错误代码0x8024401C 参考链接:https://www.gxlsystem.com/diannaowenti-386775.html 解决方法如下,cmd中执行: net stop wuauserv reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\W…...

杂记 | Langchain中few-shot提示词模板的使用(给提示词添加示例)

文章目录 01 普通的提示词模板02 few-shot提示词模板 Langchain是一个集成多个大语言模型的开源框架,可以使用它来快速开发大语言模型应用。 本文的代码使用到的模块: from typing import List, Dict from langchain import PromptTemplate, FewShotPr…...

SVN -基础

SVN - 基础 概念操作步骤开发实际经验 概念 带SVN路径 有隐藏文件,记录repo的一些信息,与repo进行关联,可以与repo进行同步 不带SVN路径 只是单纯的文件,与repo独立 操作步骤 checkout 具有路径 URLcheckout dir 输出目标文件夹…...

给IPC相机调图像,别再瞎调了!一份保姆级的ISP线性模式调试顺序图(附避坑要点)

IPC相机图像调试实战指南:从线性模式到专业级画质优化 刚接触IPC相机图像调试的工程师们,常常会陷入参数迷宫——面对AE、AWB、Gamma、3DNR等数十个模块,该从何处入手?调试顺序的错误可能导致反复返工,甚至影响最终成像…...

跨端三维GIS实战:uni-app集成Cesium.js的RenderJS方案解析

1. 为什么需要跨端三维GIS解决方案 最近几年三维GIS应用越来越普及,从传统的Web端到移动端APP,开发者都希望实现"一次开发,多端运行"的目标。uni-app作为跨端开发框架,天然具备这个优势。但当我们想在uni-app中集成Cesi…...

【研报 A110】物理AI时代的具身数据采集需求研究:国家级训练场落地,开源生态加速建设

摘要:物理AI时代,具身智能与世界模型的发展,推动具身数据采集成为下一代数据基建的核心浪潮。具身大模型对数据有着EB级的海量需求,同时对多模态、异构性与质量要求极高,当前数据缺口成为制约具身智能发展的核心瓶颈&a…...

K8s原生ML编排进入“编译期优化”时代(SITS 2026首次披露:eBPF驱动的模型感知调度器Alpha版已交付头部5家云厂商)

更多请点击: https://intelliparadigm.com 第一章:AI原生Kubernetes编排:SITS 2026 K8s for ML工作负载 SITS 2026 引入了专为机器学习工作负载深度优化的 AI-native Kubernetes 编排层,突破传统 K8s 在资源弹性、异构设备调度与…...

设计师连夜删稿的真相:Onion Skin未启用导致版本错位!3分钟紧急修复+历史帧自动锚定脚本

更多请点击: https://intelliparadigm.com 第一章:设计师连夜删稿的真相:Onion Skin未启用导致版本错位!3分钟紧急修复历史帧自动锚定脚本 当动画师在 Toon Boom Harmony 或 Adobe Animate 中反复导出“看似正确”的中间帧&#…...

服务器运维与DevOps融合:迈向智能化运维的新纪元

在数字化浪潮席卷全球的今天,企业对IT基础设施的依赖程度日益加深,服务器运维作为支撑业务连续性和系统稳定性的核心环节,正面临前所未有的挑战与机遇。传统运维模式依赖人工干预、响应滞后、效率低下,已难以满足现代业务快速迭代…...

5步精通:Windows风扇智能控制终极指南

5步精通:Windows风扇智能控制终极指南 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/FanControl.Rel…...

5步快速搭建微信机器人:WeixinBot完整使用指南

5步快速搭建微信机器人:WeixinBot完整使用指南 【免费下载链接】WeixinBot 网页版微信API,包含终端版微信及微信机器人 项目地址: https://gitcode.com/gh_mirrors/we/WeixinBot 在当今自动化办公和智能交互的时代,拥有一个能够自动处…...

从Java后端到AI风口:转型踩坑一年,我悟了!涨薪30%的真相是…

做了八年Java后端,去年咬牙转型AI应用开发。这一年踩过坑、加过班、也被面试官问倒过。但回头看,这条路选对了——薪资涨了30%,职业空间也打开了。我必须告诉那些还在犹豫要不要从后端跳出来的同行——现在的AI应用开发社招,确实是…...

SAP-ABAP:ABAP Development Tools(ADT)安装配置学习分享教程(四篇连载)第四篇:ADT连接故障排查与环境迁移教程

ABAP Development Tools(ADT)安装配置学习分享教程(四篇连载) 第四篇:ADT连接故障排查与环境迁移教程 ADT连不上SAP后端?刚刚还好好的系统突然报错了?换了新电脑要重建整个开发环境&#xff1f…...