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

TCP-IP详解卷 TCP的超时与重传

TCP-IP详解卷1-21:TCP的超时与重传(Timeout and Retransmission)

一:介绍

1: 与数据链路层的ARQ协议相类似,TCP使用超时重发的重传机制。 即:TCP每发送一个报文段,就对此报文段设置一个超时重传计时器。 此计时器设置的超时重传时间RTO(Retransmission Time-Out)应当略大于TCP报文段的平均往返时延RTT,一般可取RTO=2RTT。 但是,也可以根据具体情况人为调整RTO的值,例如可以设置此超时重传时间RTO=90秒。 当超过了规定的超时重传时间还未收到对此TCP报文段的预期确认信息,则必须重新传输此TCP报文段。

二:四种定时器

  • 1: 重传计时器(retransmission timer):当TCP发送报文段时,就创建该特定报文段的重传计时器。可能发生两种情况:

A: 若在计时器截止时间到(通常是60秒)之前收到了对此特定报文段的确认,则撤销此计时器。 B: 若在收到了对此特定报文段的确认之前计时器截止期到,则重传此报文段,并将计时器复位。

  • 2: 坚持计时器(persist timer ) :为了对付零窗口大小通知,TCP需要另一个计时器。

假定接收TCP宣布了窗口大小为零。发送TCP就停止传送报文段,直到接收TCP发送确认并宣布一个非零的窗口大小。但这个确认可能会丢失。

我们知道在TCP中,对确认是不需要发送确认的。若确认丢失了,接收TCP并不知道,而是会认为它已经完成任务了,并等待着发送TCP接着会发送更多的报文段。但发送TCP由于没有收到确认,就等待对方发送确认来通知窗口的大小。双方的TCP都在永远地等待着对方。

要打开这种死锁,TCP为每一个连接使用一个坚持计时器。当发送TCP收到一个窗口大小为零的确认时,就启动坚持计时器。当坚持计时器期限到时,发送TCP就发送一个特殊的报文段,叫做探测报文段。这个报文段只有一个字节的数据。它有一个序号,但它的序号永远不需要确认;甚至在计算对其他部分的数据的确认时该序号也被忽略。探测报文段提醒对端:确认已丢失,必须重传。

坚持计时器的值设置为重传时间的数值。但是,若没有收到从接收端来的响应,则需发送另一个探测报文段,并将坚持计时器的值加倍和复位。发送端继续发送探测报文段,将坚持计时器设定的值加倍和复位,直到这个值增大到门限值(通常是60秒)为止。在这以后,发送端每隔60秒就发送一个探测报文段,直到窗口重新打开。

  • 3: 保活计时器(keepalive timer ) :保活计时器使用在某些实现中,用来防止在两个TCP之间的连接出现长时期的空闲。

假定客户打开了到服务器的连接,传送了一些数据,然后就保持静默了。也许这个客户出故障了。在这种情况下,这个连接将永远地处理打开状态。

要解决这种问题,在大多数的实现中都是使服务器设置保活计时器。每当服务器收到客户的信息,就将计时器复位。保活计时器通常设置为2小时。若服务器过了2小时还没有收到客户的信息,它就发送探测报文段。 若发送了10个探测报文段(每一个相隔75秒)还没有响应,就假定客户出了故障,因而就终止该连接。

  • 4: 时间等待计时器(2MSL timer ):时间等待计时器是在连接终止期间使用的。

当TCP关闭一个连接时,它并不认为这个连接马上就真正地关闭了。 在时间等待期间中,连接还处于一种中间过渡状态。 这就可以使重复的FIN报文段(如果有的话)可以到达目的站因而可将其丢弃。 这个计时器的值通常设置为一个报文段的寿命期待值的两倍。

三:拥塞控制用到的术语

数据段:一个数据段就是任意的TCP/IP数据或确认包(或两者兼备)。 发送端最大数据段尺寸(SMSS):SMSS是发送端能发送的最大数据段的尺寸。这个值是以网络最大传送单元(MTU),MTU路径发现算法,RMSS(见下一项),或其它因素为基础的。该尺寸不包括TCP/IP头和选项。 接收端最大数据段尺寸(RMSS):RMSS是接收端愿意接收的最大数据段的尺寸。这个值在连接开始时接收端发送的MSS选项中说明。又或者,如果MSS选项没有使用,就是536字节[Bra89].该尺寸不包括TCP/IP头和选项。 满尺寸数据段:一个包括允许最大数目数据的数据段(也就是说,一个包括SMSS字节数据的数据段)。 接收端窗口(rwnd):最近通知的接收端窗口。 拥塞窗口(cwnd):一个TCP状态参量,代表着一个TCP允许发送的最大数据量。在任意 一个给定的时刻,TCP不会发送序号大于最大确认序号和cwnd、rwnd中较小者的数据。 初始窗口(iw):初始窗口是三次握手完成后发送端的拥塞窗口的尺寸。 丢失窗口(lw):丢失窗口是在一个TCP根据它的重传定时器检测到了数据丢失之后,拥塞窗口的尺寸。 重启窗口(rw):重启窗口是TCP在一段闲置期之后重新开始传送后拥塞窗口的尺寸(如果使用慢启动算法;参见4.1节以获取更多的讨论)。

传送尺寸:已经被发送但还没有确认的数据的总量。

相关文章:

TCP-IP详解卷 TCP的超时与重传

TCP-IP详解卷1-21:TCP的超时与重传(Timeout and Retransmission) 一:介绍 1: 与数据链路层的ARQ协议相类似,TCP使用超时重发的重传机制。 即:TCP每发送一个报文段,就对此报文段设置…...

Linux服务器查看【可用端口号连接】的命令和方式【netstat,ss,lsof】

Linux服务器查看可用连接的端口号的命令和方式 前言:1. 使用netstat命令(netstat命令详解及使用指南)一、什么是netstat二、基本使用方法与参数解释三、输出结果字段含义:四、查找可用于SSH连接的端口示例五、部分高级用法&#x…...

【WPS】【WORDEXCEL】【VB】实现微软WORD自动更正的效果

1. 代码规范方面 添加 Option Explicit:强制要求显式声明所有变量,这样可以避免因变量名拼写错误等情况而出现难以排查的逻辑错误,提高代码的健壮性。使用 On Error GoTo 进行错误处理:通过设置错误处理机制,当代码执行…...

Attention计算中的各个矩阵的维度都是如何一步步变化的?

在Transformer模型中,各个矩阵的维度变化是一个关键的过程,涉及到输入、编码器、解码器和输出等多个阶段。以下是详细的维度变化过程: 输入阶段 输入序列:假设输入序列的长度为seq_len,每个单词或标记通过词嵌入&…...

【数模学习笔记】插值算法和拟合算法

声明:以下笔记中的图片以及内容 均整理自“数学建模学习交流”清风老师的课程资料,仅用作学习交流使用 文章目录 插值算法定义三个类型插值举例插值多项式分段插值三角插值 一般插值多项式原理拉格朗日插值法龙格现象分段线性插值 牛顿插值法 Hermite埃尔…...

探索 C++ 与 LibUSB:开启 USB 设备交互的奇幻之旅

一、引言 在当今数字化时代,USB(通用串行总线)设备无处不在,从常见的 U 盘、鼠标、键盘,到复杂的工业数据采集设备、医疗监测仪器等,它们以方便快捷的插拔式连接,为人们的生活和工作带来了极大…...

二、模型训练与优化(4):模型优化-实操

下面我将以 MNIST 手写数字识别模型为例,从 剪枝 (Pruning) 和 量化 (Quantization) 两个常用方法出发,提供一套可实际动手操作的模型优化流程。此示例基于 TensorFlow/Keras 环境,示范如何先训练一个基础模型,然后对其进行剪枝和…...

3D可视化产品定制,应用于哪些行业领域?

3D可视化定制服务已广泛渗透至众多行业领域,包括汽车、家居、时尚鞋服、珠宝配饰以及数码电器等: 汽车行业: 借助Web全景技术与3D模型,我们高保真地再现了汽车外观,为用户带来沉浸式的车型浏览体验。用户可在展示界面自…...

Avalonia 入门笔记(零):概述

Avalonia 是一个基于 .NET 和 Skia 的开源、跨平台 UI 框架,支持 Windows、Linux、macOS、iOS、Android 和 WebAssembly。Skia 是一个基于 C 的开源 2D 渲染引擎,Avalonia 通过 Skia 自绘 UI 控件,保证在全平台具有一致的观感 基于 .NET 的跨…...

Unity TextMesh Pro入门

概述 TextMesh Pro是Unity提供的一组工具,用于创建2D和3D文本。与Unity的UI文本和Text Mesh系统相比,TextMesh Pro提供了更好的文本格式控制和布局管理功能。 本文介绍了TMP_Text组件和Tmp字体资产(如何创建字体资产和如何解决缺字问题),还有一些高级功…...

[论文阅读] (35)TIFS24 MEGR-APT:基于攻击表示学习的高效内存APT猎杀系统

《娜璋带你读论文》系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢。由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正,非常欢迎大家给我留言评论,学术路上期…...

12 USART串口通讯

1 串口物理层 两个设备的“DB9接口”之间通过串口信号建立连接,串口信号线中使用“RS232标准”传输数据信号。由于RS232电平标准的信号不能直接被控制器直接识别,所以这些信号会经过“电平转换芯片”转换成控制器能识别的“TTL校准”的电平信号&#xff…...

CF 368A.Sereja and Coat Rack(Java实现)

问题分析 简而言之,小明要邀请m个绅士到家,家里有n个挂衣钩,一个挂衣钩要支付i元,如果挂衣钩不够了就要给每个绅士赔d元 思路分析 所以思路就很清楚了,获取n,d,m的值,并用数组存放每…...

清华大学、字节跳动等单位联合发布最新视觉语言动作模型RoboVLMs

近年来,视觉语言基础模型(Vision Language Models, VLMs)大放异彩,在多模态理解和推理上展现出了超强能力。现在,更加酷炫的视觉语言动作模型(Vision-Language-Action Models, VLAs)来了&#x…...

网络安全、Web安全、渗透测试之笔经面经总结

本篇文章涉及的知识点有如下几方面: 1.什么是WebShell? 2.什么是网络钓鱼? 3.你获取网络安全知识途径有哪些? 4.什么是CC攻击? 5.Web服务器被入侵后,怎样进行排查? 6.dll文件是什么意思,有什么…...

.NET Core NPOI 导出图片到Excel指定单元格并自适应宽度

NPOI:支持xlsx,.xls,版本>2.5.3 XLS:HSSFWorkbook,主要前缀HSS, XLSX:XSSFWorkbook,主要前缀XSS,using NPOI.XSSF.UserModel; 1、导出Excel添加图片效果&#xff0…...

python bs4 selenium 查找a href=javascript:();的实际点击事件和url

在使用 BeautifulSoup 和 Selenium 时,处理 href"javascript:;" 的链接需要一些额外的步骤,因为这些链接不直接指向一个 URL,而是通过 JavaScript 代码来执行某些操作。这可能包括导航到另一个页面、触发模态窗口、显示/隐藏内容等…...

三 BH1750 光感驱动调试1

一 扫描设备 查看手册 BH1750 光感模块 寄存器地址为 0x23 官方手册 : http://rohmfs.rohm.com/en/products/databook/datasheet/ic/sensor/light/bh1750fvi-e.pdf su 然后用 i2cdetect 扫描设备: 拨,插 对比, 探测设备挂载在 /dev/i2c-5 上, 从设备地址为 0x23 二 …...

UE材质节点Fresnel

Fresnel节点 ExponentIn 控制边缘透明度 BaseReflectFractionIn 控制中心透明度...

linux的大内核锁与顺序锁

大内核锁 Linux大内核锁(Big Kernel Lock,BKL)是Linux内核中的一种锁机制,用于保护内核资源,以下是关于它的详细介绍: 概念与作用 大内核锁是一种全局的互斥锁,在同一时刻只允许一个进程访问…...

5步解锁VMware的macOS支持:Unlocker工具全面解析与实践指南

5步解锁VMware的macOS支持:Unlocker工具全面解析与实践指南 【免费下载链接】unlocker VMware Workstation macOS 项目地址: https://gitcode.com/gh_mirrors/unloc/unlocker 在虚拟化技术日益普及的今天,许多开发者和技术爱好者希望在非苹果硬件…...

ComfyUI Essentials:填补ComfyUI核心缺失功能的必备插件指南

ComfyUI Essentials:填补ComfyUI核心缺失功能的必备插件指南 【免费下载链接】ComfyUI_essentials 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI_essentials ComfyUI Essentials是一款专门为ComfyUI用户设计的插件,它提供了ComfyUI核心…...

PINCache与App Extension:在扩展中安全使用缓存的完整方案

PINCache与App Extension:在扩展中安全使用缓存的完整方案 【免费下载链接】PINCache Fast, non-deadlocking parallel object cache for iOS, tvOS and OS X 项目地址: https://gitcode.com/gh_mirrors/pi/PINCache PINCache作为一款为iOS、tvOS和OS X打造的…...

利用快马ai快速原型ventoy图形化工具,三步制作多系统启动u盘

利用快马AI快速原型Ventoy图形化工具,三步制作多系统启动U盘 最近在折腾多系统启动盘,发现Ventoy这个开源工具确实好用——直接把ISO镜像扔进U盘就能启动,再也不用反复格式化。但命令行操作对新手不太友好,于是想做个图形化工具。…...

Windows Defender Remover:系统优化工具与安全组件管理指南

Windows Defender Remover:系统优化工具与安全组件管理指南 【免费下载链接】windows-defender-remover A tool which is uses to remove Windows Defender in Windows 8.x, Windows 10 (every version) and Windows 11. 项目地址: https://gitcode.com/gh_mirror…...

Qwen3.5-2B助力Anaconda环境管理:创建专属AI模型运行环境

Qwen3.5-2B助力Anaconda环境管理:创建专属AI模型运行环境 1. 为什么需要独立环境运行AI模型 当你开始接触各种AI模型时,可能会遇到一个常见问题:不同模型对Python包和框架版本的要求各不相同。比如Qwen3.5-2B可能需要PyTorch 2.0&#xff0…...

CCleaner Business 杀毒软件/电脑清理软件 下载安装

链接: https://pan.baidu.com/s/1KPHdTrkV5ElociuavFFrEA 提取码: j9c9此软件为免费开源软件,请勿利用于商业领域!!!...

别再手动排列了!用Python的permutations()函数3行代码搞定商品组合推荐

电商组合推荐新思路:用Python permutations()实现智能商品搭配 每次大促活动前,电商运营团队最头疼的就是如何设计吸引眼球的商品组合。传统人工排列不仅效率低下,还容易遗漏优质搭配方案。其实Python标准库中的itertools.permutations()函数…...

YOLOv11卷积模块深度剖析:从参数解析到实战应用

1. YOLOv11卷积模块设计精要 第一次接触YOLOv11的配置文件时,我和大多数开发者一样被那些看似简单却暗藏玄机的参数搞得一头雾水。特别是当我在backbone部分看到[-1, 1, Conv, [64, 3, 2]]这样的配置时,直觉告诉我输出通道数应该是64,但实际运…...

别再死记硬背了!用sklearn的LogisticRegression搞定手写数字识别,附完整代码与参数调优心得

逻辑回归实战:从参数困惑到手写数字识别调优指南 当你第一次面对sklearn的LogisticRegression那十几个参数时,是否感到无从下手?特别是当官方文档用专业术语解释solver、C、max_iter时,大多数教程只会告诉你"照这样设置就行&…...