tcp 超时计时器

在 TCP(传输控制协议)中有以下四种重要的计时器:

  1. 重传计时器(Retransmission Timer)

    • 作用:用于处理数据包丢失的情况。当发送方发送一个数据段后,就会启动重传计时器。如果在计时器超时之前没有收到接收方对该数据段的确认(ACK),发送方就会认为这个数据段丢失了,进而重新发送这个数据段。
    • 示例:假设主机 A 向主机 B 发送一个数据段,发送后启动重传计时器,设置时间为 3 秒。如果 3 秒内没有收到主机 B 发送的 ACK 确认该数据段已接收,主机 A 就会重新发送这个数据段。
    • 原理细节:重传时间的计算是一个复杂的过程。它通常是根据往返时间(RTT,Round - Trip Time)来估算的。RTT 是指一个数据段从发送出去到收到对应的确认所经历的时间。最初,TCP 会对 RTT 进行一个初始估计,随着通信的进行,会不断根据实际的往返时间来更新这个估计值,从而动态地调整重传计时器的超时时间,使重传策略更加合理。
  2. 持续计时器(Persistent Timer)

    • 作用:主要用于处理零窗口大小通知的情况。当接收方的接收缓冲区已满,会向发送方发送一个窗口大小为 0 的通知。发送方收到这个通知后就会停止发送数据,直到接收方重新打开窗口。但是接收方可能由于某些原因(如进程繁忙等)无法及时发送新的窗口大小更新通知,这时候持续计时器就会起作用。当持续计时器超时,发送方会发送一个字节的数据段,接收方会在收到这个数据段后返回一个确认,这个确认中就包含了当前接收窗口的大小,这样发送方就可以根据这个窗口大小来判断是否可以继续发送数据。
    • 示例:主机 A 向主机 B 发送数据,主机 B 的接收缓冲区满了,给主机 A 发送窗口大小为 0 的通知。主机 A 收到通知后停止发送并启动持续计时器。假设持续计时器设置为 60 秒,60 秒后主机 A 发送一个字节的数据给主机 B,主机 B 收到后返回确认信息告知当前窗口大小,若窗口大小不为 0,主机 A 就可以继续发送数据。
    • 原理细节:这种机制可以有效地防止因为接收窗口长时间关闭而导致的死锁情况。持续计时器的值一般是通过系统设置的,并且可以根据网络环境等因素进行适当调整。
  3. 保活计时器(Keep - Alive Timer)

    • 作用:用于检测连接的对端是否还存活。在一个长时间没有数据交互的 TCP 连接中,发送方可以通过保活计时器来定期发送一个探测报文段,来检查连接是否还可用。如果连续发送多个探测报文段后都没有收到对方的响应,就可以认为连接已经中断,进而可以释放相关的资源。
    • 示例:有一个 TCP 连接在两个服务器之间建立,但是经过一段时间(比如 2 小时)没有数据传输。此时保活计时器开始工作,假设保活计时器设置为每 75 分钟发送一次探测报文段。发送方发送探测报文段后,如果在一段时间内没有收到对方的响应,经过几次尝试后,就可以判定连接失效,关闭连接并释放资源。
    • 原理细节:保活计时器的时间间隔和探测次数等参数通常是可以配置的。不同的操作系统可能有不同的默认设置。这个计时器的存在有助于及时清理那些实际上已经失效但没有被正常关闭的连接,节省系统资源。
  4. 时间等待计时器(Time - Wait Timer)

    • 作用:当 TCP 连接的一方主动关闭连接时,会进入 TIME - WAIT 状态,此时时间等待计时器开始计时。这个状态和计时器主要是为了确保连接的正常关闭,防止旧连接的重复数据包对新连接造成干扰。在 TIME - WAIT 状态下,该连接会停留一段时间,这个时间足以让网络中延迟的数据包全部到达目的地或者自然过期。
    • 示例:主机 A 主动关闭和主机 B 的 TCP 连接,主机 A 进入 TIME - WAIT 状态,时间等待计时器开始计时,假设计时时间为 2MSL(MSL 是最长报文段寿命,Maximum Segment Lifetime)。在这 2MSL 时间内,主机 A 会等待可能延迟的数据包到达,并且丢弃来自旧连接的迟到数据包,确保连接的干净关闭。
    • 原理细节:2MSL 的时间设置是基于网络数据包生存时间的考虑。一个数据段在网络中最多存活 MSL 时间,通过等待 2MSL 时间,可以保证在这个连接上发送的所有数据包都从网络中消失,避免对后续相同 IP 地址和端口组合的新连接产生影响。例如,如果没有这个等待时间,旧连接的延迟数据包可能会被新连接误认为是新的数据,从而导致数据混乱。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/19499.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Docker部署ES7.9.3单节点

Elasticsearch(简称ES)是一个分布式、可扩展、实时的搜索与数据分析引擎! Elasticsearch位于Elastic Stack核心,为所有类型的数据提供近乎实时的搜索和分析。无论是结构化或非结构化文本、数字数据还是地理空间数据,El…

ChromeDriver驱动下载地址更新(保持最新最全)

说明: ChromeDriver 是 Selenium WebDriver 用于控制 Chrome 的独立可执行文件。 为了方便下载使用,本文保持ChromeDriver的最新版本更新,并提供115.0.5763.0-133.0.6841.0版本的下载地址: 所有版本和下载地址: &am…

CSS:高级寄巧

精灵图 为什么需要精灵图呢? 一个网页中往往会应用很多小背景图作为修饰,当网页中的图像过多时,服务器就会频繁地接收和发送 请求图片,造成服务器请求压力过大,这将大大降低页面的加载速度。 因此,为了有…

AutosarMCAL开发——基于EB DsAdc驱动

目录 一、旋转变压器与DsAdc原理1.常见电机角度反馈方式2.可变磁阻旋变工作原理3.使用TC3XX EDSADC进行旋变软解码 二、EB配置1.载波输出2.通道配置3.调制器4.滤波链路5.整流6.积分 三、Mcal接口应用1.AUtosar标准API接口2.应用步骤 四、总结 一、旋转变压器与DsAdc原理 1.常见…

web应用安全和信息泄露预防

文章目录 1:spring actuator导致的信息泄露1.1、Endpoint配置启用检测1.2、信息泄露复现1.3、防御 2:服务端口的合理使用3:弱口令(密码)管理4:服务端攻击4.1、短信业务,文件上传等资源型接口1、…

C语言:链表

链表是一种常见的线性数据结构,其中每个元素(称为节点)包含两部分:数据和指向下一个节点的指针。链表的主要优点是插入和删除操作的时间复杂度较低,但随机访问的效率不如数组。 1. 链表的基本概念 节点(N…

webpack配置

4-3vue-loader测试_哔哩哔哩_bilibili 一.新建文件夹vue_todo,vscode打开 二.ctrl打开终端,输入npm init -y,快速生成一个默认的package.json文件 之后左边出现项目初始化文件package.json 三.接下来需要webpack完成打包,所以安装…

字节跳动辞退103人

大家好,我是程序员面试刷题平台的鸭鸭! 在前阵子实习生破坏大模型训练事件之后,字节又上了一次热搜。 鸭鸭吃完瓜,只能说,社会险恶啊同学们! 5 号,字节跳动内部发布了年内第四份《企业纪律与职…

大型语言模型综述 A Survey of Large Language Models

文章源自 2303.18223 (arxiv.org) 如有侵权,请通知下线 这是一篇关于大语言模型(LLMs)的综述论文,主要介绍了 LLMs 的发展历程、技术架构、训练方法、应用领域以及面临的挑战等方面,具体内容如下: 摘要…

服务器作业4

[rootlocalhost day04]# vim 10.sh [rootlocalhost day04]# cat 10.sh #通过shell脚本分析部署nginx网络服务 #1.接收用户部署的服务名称 read -p "服务名称:(nginx)" server if [ $server ! nginx ];then echo "输入的不是nginx,脚本退出" exit 1…

Linux基础(二十)——程序管理与 SELinux 初探

程序管理与 SELinux 初探 1. 程序和进程2.程序调用流程3. 一个bash中的多任务工作管理4.进程管理4.1 查询进程4.2 进程的执行顺序 5.系统资源的观察6. /proc/* 代表的意义7.SELinux 1. 程序和进程 2.程序调用流程 程序与进程之间的关系: 从上图可以看出&#xff0…

vue3 路由写法及传参方式 !超详细

Vue Router 是 Vue.js 官方的路由管理器。它主要用于单页面应用程序(SPA, Single Page Application)中,帮助解决页面导航、组件复用等问题。 基本的使用 1.router配置文件代码 创建一个ts文件,用来写路由器 // 创建一个路由器,并暴露出去 …

MATLAB绘制正四面体、正六面体

MATLAB绘制正四面体、正六面体 clc;close all;clear all;warning off;% clear all rand(seed, 100); randn(seed, 100); format long g;% 正四面体(Tetrahedron) % 顶点坐标(正四面体的顶点位于一个正方体的对角线上,并经过适当缩…

一文了解 inductive bias(归纳偏好)

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 归纳偏好(Inductive Bias)是机器学习中的一个非常基础但又非常重要的概念。为了更好地理解它,我们先从 “归纳” 和 “偏好” 这两个词开始讲解。 什么是归纳&#x…

leetcode844:比较含退格的字符串

题干 题目分析 两个字符串要进行比较,#代表着回车,也就是删除之前的字符。 若按照遍历的惯例,选择从前到后遍历,但这样没法判断,因为#之前被删除的部分是不需要相同的。 因此考虑到#的含义,我们应该选择从…

【Python爬虫实战】从入门到精通:全面解析IP代理池的原理与实战应用

🌈个人主页:易辰君-CSDN博客 🔥 系列专栏:https://blog.csdn.net/2401_86688088/category_12797772.html ​ 目录 前言 一、IP代理池 (一)基本概念 (二)主要功能 (三…

c++_day2

第一题: 继续为 mystring类编写以下方法: 1:析构函数,释放buf指向的堆空间 2:编写 append(const mystring r) 为当前字符串尾部,拼接新的字符串r 3:编写 isEqual(const mystring r) 判断当前字符串和 字符串…

机器学习基础06

目录 1.梯度下降 1.1梯度下降概念 1.2梯度下降公式 1.3学习率 1.4实现梯度下降 1.5API 1.5.1随机梯度下降SGD 1.5.2小批量梯度下降MBGD 1.6梯度下降优化 2.欠拟合过拟合 2.1欠拟合 2.2过拟合 2.3正则化 2.3.1L1正则项(曼哈顿距离) 2.3.2…

基于一种基于OCR图像识别技术的发票采集管理系统及方法

本发明涉及了一种基于OCR图像识别技术的发票采集管理系统及方法,该系统的发票信息采集单元采集发票图片信息数据,OCR图像识别单元基于OCR图像识别技术并结合人工智能深度学习算法对发票图片信息数据进行识别读取以获得OCR图像识别结果,发票信…