4000 字详解TCP超时与重传,看完没收获算我输

tcp超时重传(RTO)之karn算法及其简要实验 我们都知道, tcp是面向连接的可靠传输, 其中的超时重传是可靠性保证之一。 好了, 不扯那么多理论了, 本来来玩一个简要的实验。         前面说过了, telnet ip port命令是在向ip, port发起tcp连接, 假如这个ip, port不存在, 那么客户端自然连接不上, 那么客户端不会因为一次失败而气馁。         试想一下, 你电话给你女朋友, 但你女朋友没有接, 阅读详情

我们都知道 TCP 协议具有重传机制,也就是说,如果发送方认为发生了丢包现象,就重发这些数据包。很显然,我们需要一个方法来「猜测」是否发生了丢包。最简单的想法就是,接收方每收到一个包,就向发送方返回一个 ACK,表示自己已经收到了这段数据,反过来,如果发送方一段时间内没有收到 ACK,就知道很可能是数据包丢失了,紧接着就重发该数据包,直到收到 ACK 为止。

你可能注意到我用的是「猜测」,因为即使是超时了,这个数据包也可能并没有丢,它只是绕了一条远路,来的很晚而已。毕竟 TCP 协议是位于传输层的协议,不可能明确知道数据链路层和物理层发生了什么。但这并不妨碍我们的超时重传机制,因为接收方会自动忽略重复的包。

超时和重传的概念其实就是这么简单,但内部的细节却是很多,我们最先想到的一个问题就是,到底多长时间才能算超时呢?

超时是怎么确定的?

一刀切的办法就是,我直接把超时时间设成一个固定值,比如说 200ms,但这样肯定是有问题的,我们的电脑和很多服务器都有交互,这些服务器位于天南海北,国内国外,延迟差异巨大,打个比方:

  • 我的个人博客搭在国内,延迟大概 30ms,也就是说正常情况下的数据包,60ms 左右就已经能收到 ACK 了,但是按照我们的方法,200ms 才能确定丢包(正常可能是 90 到 120 ms),这效率实在是有点低。
  • 假设你访问某国外网站,延迟有 130 ms,这就麻烦了,正常的数据包都可能被认为是超时,导致大量数据包被重发,可以想象,重发的数据包也很容易被误判为超时。。。雪崩效应的感觉

所以设置固定值是很不可靠的,我们要根据网络延迟,动态调整超时时间,延迟越大,超时时间越长。

在这里先引入两个概念:

  • RTT(Round Trip Time):往返时延,也就是**数据包从发出去到收到对应 ACK 的时间。**RTT 是针对连接的,每一个连接都有各自独立的 RTT。
  • RTO(Retransmission Time Out):重传超时,也就是前面说的超时时间。

比较标准的 RTT 定义:

Measure the elapsed time between sending a data octet with a particular sequence number and receiving an acknowledgment that covers tha

TCP重传机制:超时重传与快速重传双轨原理详解 TCP重传是保障可靠传输的核心机制,其本质是在IP层不可靠基础上构建确定性反馈闭环。它基于RTT测量与动态RTO计算实现自适应超时重传,同时依托重复ACK触发的快速重传实现毫秒级丢包响应。该机制融合了拥塞控制、乱序处理与SACK选择性确认等关键技术,显著提升弱网、高延迟及突发丢包场景下的吞吐效率与连接稳定性。理解其双轨协同逻辑,是优化HTTP/2、gRPC、长连接服务及移动端网络体验的关键基础。 阅读详情

相关推荐

TCP(六) -- 重传与确认

一:摘要概述 TCP是可靠的传输层协议,网络层采用不靠谱的IP协议导致其自身必须保证数据传输的可靠。其中最终要的就是将丢失的数据包进行重传,当数据包发送后TCP就会开启计时器,当计时器达到阈值且发送的数据包未被数据接收方确认就会重新传递丢失的数据包。当然,重传的前提就是需要确认机制。本文将详细介绍重传与确认,也会涉及到快速重传与延迟确认的概念 二:超时重传模拟 如下编辑一段packetdrill脚...

知识点滴 1800

互联网协议 — TCP — 确认与重传

目录 文章目录目录TCP 的重传机制(可靠性保障)超时重传快速重传SACK 方法Duplicate SACKACK 丢包场景网络延时场景 TCP 的重传机制(可靠性保障) 常见的重传机制有: 超时重传。 快速重传。 SACK(选择性确认)。 D-SACK(Duplicate SACK)。 超时重传 重传机制的其中一个方式,就是在发送数据时,设定一个定时器,当超过指定的时间后,没有收到对方的 ACK 确认应答报文,就会重发该数据,也就是我们常说的超时重传。 TCP 会在以下两种情况发生超时重传: 数据包

烟云的计算 8987

Rapid SCADA MQTT

一、配置RapidSCADA 1、准备KpMqtt.dll、Jint.dll库文件,从网盘下载。 2、将以上两个文件拷贝到SCADA安装目录的Comm/KP目录下,如下: C:\SCADA\ScadaComm\KP 3、新建SCADA项目 4、新建Line 5、新建Device 6、拷贝Config目录下的KpMqtt_001.xml文件、KpMqtt_Job.js文件到项目Comm\Config下,如下示例链接 C:\SCADA\Projects\MQTTProject\Instances\Defau

mumanquan1的博客 3008

Chapter 5 Gate Drivers and Level Shifters

Gate driver如下图所示, 包括功率管(带保护), Gate driver, Level shifter, Gate Supply 和Dead-time control.

2304_76736886的博客 2243

Win10平台下QT6.9.0 OpenCV 4.10.0从入门到精通

我最近开发一个视觉项目,我们从0开始记录在windows 10下 用QT6.9+OpenCV 4.10.0搞定整个项目的开发过程。以抛砖引玉,大家共同进步。

fds111111的博客 1713

PADS Layout差分对布线实战:从规则设置到高速信号优化

本文详细讲解了在PADS Layout中进行差分对布线的完整实战流程。从在Layout中定义差分对网络,到进入Router配置线宽、间距等关键规则,再到布线实战技巧与高速信号完整性优化,系统阐述了如何确保差分信号(如USB、HDMI)的稳定传输,是高速PCB设计的核心技能。

weixin_29274969的博客 524

第十七章:载板成本结构分析

本文分析了ABF和BT载板的成本结构,其中ABF载板材料成本占比50%(主要来自ABF薄膜),制造成本35%,利润15%;BT载板材料成本45%,制造成本40%。ABF薄膜价格预计将从2023年的80-90美元/panel上涨至2026年的120-150美元。良率每提升1%可降低成本约5%,产能利用率每提高10%可降本3-5%。通过设计优化(如减少层数)、工艺改进(提升良率)和供应链优化(材料国产化)可有效降低成本。预计2024-2028年AI用ABF载板成本将上涨10-15%,而手机用BT载板涨幅约5%。

Open 317

Apifox接口测试+自动化测试

Apifox 接口测试+自动化测试快速入门!

程序员小杨哥的博客 1万+

iOS远程真机之ios-minicap安装使用完全指南

minicap 是开源项目 STF 中的高速截图工具。STF利用此工具不断的传输图片信息并在web端绘制实现 以前只有Android版本,最近有新的ios版本,现在就安装过程中遇到的一些问题进行分享(ps:感谢sorccu 在issue里面给我的指点) 首先上地址:https://github.com/openstf/ios-minicap 你可以git clone或者直接下载zip包。

甫式人生 1万+

老 MacBook 部署 OpenClaw:比 Windows 更稳定

老款 MacBook 在运行 OpenClaw 时,Linux 系统相比 Windows 系统具有更好的稳定性和性能。本文将从多个维度对比 Linux 和 Windows 在老款 MacBook 上运行 OpenClaw 的表现,帮助您选择更合适的操作系统。

一键难忘的博客 2097

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

上一篇: Kafka 的这些原理你懂吗
下一篇: 3000字讲讲TCP协议,握手挥手不是你想的那么简单
JavaMonsterr
博客等级 码龄4年 211粉丝 481原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值