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,一经查实,立即删除!

相关文章

[前端面试]HTML AND CSS

HTML html语义化标签的理解 是什么: 在布局页面的时候,根据内容的结构与含义,选择合适的带语义的html标签 如header,footer,nav,article,main,aside,h标签等 好处: 增…

前端(4)——demo分享

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

【企业级分布式系统】 Kafka集群

文章目录 KafkaKafka 概述使用消息队列的好处 Kafka 的特性Kafka 系统架构Kafka 的应用场景Kafka 的优缺点 Kafka 集群部署下载安装包安装 KafkaKafka 命令行操作Kafka 架构深入 FilebeatKafkaELK 部署指南~部署 ZookeeperKafka 集群部署 Filebeat部署 ELK(Logstash…

高级java每日一道面试题-2024年11月07日-Redis篇-Redis有哪些功能?

如果有遗漏,评论区告诉我进行补充 面试官: Redis有哪些功能? 我回答: Redis 是一个开源的、基于键值对的 NoSQL 数据库,以其高性能、丰富的数据结构和多种功能而闻名。在高级 Java 面试中,了解 Redis 的核心功能和高级特性是非常重要的。以下是 Redi…

14天Java基础学习——第9天:异常处理机制

第9天 Java基础学习:异常处理机制 学习目标 在本日的学习中,我们将深入研究Java中的异常处理机制,包括以下几个方面: 异常与错误分类try-catch-finally语句throw与throws关键字自定义异常 一、异常与错误分类 Java中的异常主…

Java-空链处理

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

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

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

网络爬虫 Python 第二课

BeautifulSoup 高级用法: 标签查找与筛选:除了简单地通过标签名查找(如 soup.find(div) 查找第一个 div 标签),还可以利用属性来更精准地查找。例如,如果要查找所有 class 属性为 article 的 div 标签&…

供应链管理、一件代发系统功能及源码分享 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 语音合成服务对比选择

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

蓝牙 AVRCP 协议详解及 Android 实现

文章目录 前言一、什么是蓝牙 AVRCP 协议?1.1 定义与功能1.2 AVRCP 的设备角色1.3 AVRCP 的版本发展 二、AVRCP 的工作原理2.1 配对与连接2.2 命令与响应2.3 元数据传输 三、AVRCP 在 Android 中的典型应用场景3.1 音乐控制3.2 车载媒体交互3.3 蓝牙遥控器 四、Andr…

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

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

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

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