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 地址和端口组合的新连接产生影响。例如,如果没有这个等待时间,旧连接的延迟数据包可能会被新连接误认为是新的数据,从而导致数据混乱。
  5. 网络:TCP分割数据以及MSL、MTU、MSS的关系_tcp msl-CSDN博客

计算机网络微课堂第026讲 可靠传输的实现机制 — 回退N帧协议(有字幕有背景音乐版)_哔哩哔哩_bilibili

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端(4)——demo分享

这两天需要用HTML、CSS和js简单组合一个html网页用于展示一些数据内容,这是我简单组合别人的一些文件形成的简单demo,大家也可以拿过去使用。 登录界面: 场景选择界面,有五个场景,每个场景中都需要展示一些特定的数据…

Java-空链处理

什么是 null 在 Java 中,null 是一个非常常见的关键字,用于表示“没有值”或“空”。然而,对于初学者来说,null 的本质可能会感到有些困惑。在本文中,我们将详细探讨 null 在 Java 中的含义和使用。 在 Java 中&…

PyTorch使用教程-深度学习框架

PyTorch使用教程-深度学习框架 1. PyTorch简介 1.1-什么是PyTorch ​ PyTorch是一个广泛使用的开源机器学习框架,特别适合深度学习的应用。它以其动态计算图而闻名,允许在运行时修改模型,使得实验和调试更加灵活。PyTorch提供了强大的GPU加…

供应链管理、一件代发系统功能及源码分享 PHP+Mysql

随着电商行业的不断发展,传统的库存管理模式已经逐渐无法满足市场需求。越来越多的企业选择“一件代发”模式,即商家不需要自己储备商品库存,而是将订单直接转给供应商,由供应商直接进行发货。这种方式极大地降低了企业的运营成本…

Pr:音频过渡

Adobe Premiere Pro 自带一组共三个音频过渡 Audio Transitions效果。 对音频剪辑之间应用交叉淡化 Crossfade过渡,操作方式类似于应用视频过渡效果。 对于交叉淡化,要保证前剪辑的出点之后及后剪辑的入点之前有足够的预留内容(也称“手柄”&…

前端页面开发步骤详解

目录 前言1. 页面搭建1.1 HTML 标签结构1.2 CSS 样式设计 2. 数据绑定与事件处理2.1 数据绑定2.2 表单校验 3. 调用后台接口3.1 接口文档与工具封装3.2 参数传递与接口调用 结语 前言 在前端开发过程中,从页面搭建到与后台接口对接是一个必不可少的完整流程。无论是…

A037-基于Spring Boot的二手物品交易的设计与实现

🙊作者简介:在校研究生,拥有计算机专业的研究生开发团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹 赠送计算机毕业设计600…

两行命令搭建深度学习环境(Docker/torch2.5.1+cu118/命令行美化+插件),含完整的 Docker 安装步骤

深度学习环境的配置过于繁琐,所以我制作了两个基础的镜像,希望可以帮助大家节省时间,你可以选择其中一种进行安装,版本说明: base 版本基于 pytorch/pytorch:2.5.1-cuda11.8-cudnn9-devel,默认 python 版本…

EXCEL延迟退休公式

如图: A B为手工输入 C2EOMONTH(A2,B2*12) D2EOMONTH(C2,IF(C2>DATEVALUE("2025-1-1"),INT((DATEDIF(DATEVALUE("2025-1-1"),C2,"m")4)/4),0)) E2EOMONTH(A2,B2*12IF(EOMONTH(A2,B2*12)>DATEVALUE("2025-1-1"),INT(…

区块链技术在数据安全中的应用

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 区块链技术在数据安全中的应用 区块链技术在数据安全中的应用 区块链技术在数据安全中的应用 引言 区块链技术基础 1.1 区块链的…

GIT 入门详解指南

前言: 注:本博客仅用于记录本人学习过程中对git的理解,仅供学习参考,如有异议请自行查资料求证 安装 使用git之前必须完成git的安装,Git 目前支持 Linux/Unix、Solaris、Mac和 Windows 平台上运行 git 安装教程 基本…

讯飞、阿里云、腾讯云:Android 语音合成服务对比选择

在 移动端 接入语音合成方面,讯飞和腾讯云等都是优秀的选择,但各有其特点和优势。咱们的需求是需要支持普通话/英语/法语三种语言,以下是对各个平台的详细比较: 一、讯飞语音合成介绍 与语音听写相反,语音合成是将一段…

HarmonyOS本地存储-Preferences(用户首选项)的使用

一,用户首选项简述 ohos.data.preferences (用户首选项) 用户首选项为应用提供Key-Value键值型的数据处理能力,支持应用持久化轻量级数据,并对其修改和查询。 数据存储形式为键值对,键的类型为字符串型,值的存储数据…

【机器学习】回归模型(线性回归+逻辑回归)原理详解

线性回归 Linear Regression 1 概述 线性回归类似高中的线性规划题目。线性回归要做的是就是找到一个数学公式能相对较完美地把所有自变量组合(加减乘除)起来,得到的结果和目标接近。 线性回归分为一元线性回归和多元线性回归。 2 一元线…

OceanBase 分区表详解

1、分区表的定义 在OceanBase数据库中,普通的表数据可以根据预设的规则被分割并存储到不同的数据区块中,同一区块的数据是在一个物理存储上。这样被分区块的表被称为分区表,而其中的每一个独立的数据区块则被称为一个分区。 如下图所示&…

【Android原生问题分析】夸克、抖音划动无响应问题【Android14】

1 问题描述 偶现问题,用户打开夸克、抖音后,在界面上划动无响应,但是没有ANR。回到Launcher后再次打开夸克/抖音,发现App的界面发生了变化,但是仍然是划不动的。 2 log初分析 复现问题附近的log为: 用户…

使用 K-means 算法进行豆瓣读书数据的文本聚类分析

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

Django5 2024全栈开发指南(二):Django项目配置详解

目录 一、基本配置信息二、资源文件配置2.1 资源路由——STATIC_URL2.2 资源集合——STATICFILES_DIRS2.3 资源部署——STATIC_ROOT2.2.4 媒体资源——MEDIA 三、模板配置四、数据库配置4.1 mysqlclient连接MySQL4.2 pymysql连接MySQL4.3 多个数据库的连接方式4.4 使用配置文件…

数据结构-二叉搜索树(Java语言)

目录 1.概念 2.查找search 3.插入insert ​编辑4.删除remove(难点) 5.性能分析 1.概念 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树 : 1.若它的左子树不为空,则左子树上所有节点的值都…

学习笔记:黑马程序员JavaWeb开发教程(2024.11.18)

9.8 Mybatis-基础操作-查询(条件查询) 需要模糊查询,根据要求,我们需要在关键词前后都加上%,但是我们不能使用‘%#{内容}%’的形式,因为#{内容}最终会变成?,而?不能放在‘’之中&#xff…