【计算机网络】TCP如何保障传输可靠性_笔记

news2025/5/24 6:40:08

文章目录

  • 一、传输可靠性的6方面保障
  • 二、分段机制
  • 三、超时重传机制
  • 四、流量控制
  • 五、拥塞控制


提示:以下是本篇文章正文内容,下面案例可供参考 源网站
按TCP/IP 4层体系,TCP位于传输层,为应用层提供服务

一、传输可靠性的6方面保障

  1. 基于数据块的传输:待传输的数据被分割成TCP认为合适的数据块(报文段或段),再向下传给网络层
  2. 基于序号的数据包去重和重排:每个包有一个序列号,通过这个序列号进行排序和去重
  3. 校验和:保持头部和数据的校验和,防止数据中传输过程中发生变化。基于伪头部+反码计算。
  4. 超时重传机制:丢包或延迟的情况下重发数据包,直到接收到对方的ACK。重传机制主要有:基于计时器的重传、快速重传、选择性重传SACK和重复选择性重传D-SACK
  5. 流量控制:利用滑动窗口实现流量控制
  6. 拥塞控制:当网络拥塞时减少数据发送。TCP在发送数据时主要考虑1.接收方的接收能力;2.网络的拥塞程度。接收能力由滑动窗口表示,量化了接收方的剩余缓冲区的大小;拥塞程度由拥塞窗口表示,量化了发送方认为可以在网络中传输的数据量

三次握手和四次挥手机制也是保障可靠性的基础机制,有这个机制才能有上面的6个方面。

TCP报文头部:
在这里插入图片描述


二、分段机制

分段机制是将应用层数据分割成适合网络传输的报文段,分割逻辑是基于Maximum Segment Size(MSS,单个TCP报文段能携带的应用层数据最大长度)和滑动窗口动态调整的。

MSS的典型值:以太网(MTU=1500字节)下,MSS=MTU-IP(20)-TCP(20)=1460字节

MSS的作用:避免IP层分片,减小传输开销和丢包风险;确保报文段能适配路径上的最小MTU,避免在传输的时候被IP协议分片

分段的具体流程如下:

  1. 应用层程序调用send将数据存入发送缓冲区
  2. 按MSS分割数据:假设MSS=1460字节,应用层存入数据是3000字节,报文段1=1460字节,seq=1;报文段2=1460字节,seq=1461;报文段3=80字节,seq=2921;
  3. 给上面的报文段123添加TCP头部(如序列号、ACK号、窗口大小)
  4. 滑动窗口发送:在窗口内的报文段立即发送,窗口外的存在缓冲区内等待发送

影响分段的动态因素: 路径MTU发现;拥塞窗口;接收窗口;

TCP分段是必要的机制,但是IP层分片则是需要尽可能避免的

三、超时重传机制

超时重传触发条件:发送方发送一个数据段后启动重传计时器RTO Timer,如果在RTO时间内没有收到对应的ACK就重传这个数据段。

重传的关键组件和流程:

  1. RTO Timer组件:每个已发送但未确认(未收到ACK)的报文段都会关联一个独立的RTO计时器。计时器到期后出发重传,重置计时器并将超时时间设置为上一次RTO的2倍。其中RTO最小在Linux系统里是1秒。
  2. 动态RTO计算:使用Jacobson/Karels算法,基于往返时间RTT动态调整RTO

常见重传场景:

  1. 首次超时重传:重传丢失报文段,并重置 RTO 计时器,将超时时间设置为上一次RTO的2倍。
  2. 快速重传:收到3个重复ACK时,立即重传丢失报文(不用等待RTO超时)
    发送方发送 Seq=1,2,3,4,5
    接收方收到 Seq=1,3,4,5(Seq=2 丢失)
    接收方连续回复 3 个 ACK=2
    发送方立即重传 Seq=2
  3. 选择性重传SACK:通过 SACK 选项明确通知发送方哪些数据已接收,哪些缺失。ACK=5001, SACK=6001-7000 (表示5000之前的数据已收到,但5001-6000丢失,6001-7000已接收)
  4. 重复选择性重传D-SACK:在 SACK 的基础上,额外携带信息,告知发送方有哪些数据包自己重复接收了

四、流量控制

TCP 利用滑动窗口实现流量控制。流量控制涉及到发送方和接收方的发送缓冲区和接收缓冲区,双方都维护一个发送窗口和接收窗口。
发送窗口: TCP发送窗口可以分成4部分

  1. 已经发送并且确认的 TCP 段(已经发送并确认);
  2. 已经发送但是没有确认的 TCP 段(已经发送未确认);
  3. 未发送但是接收方准备接收的 TCP 段(可以发送);
  4. 未发送并且接收方也并未准备接受的 TCP 段(不可发送);

TCP 接收窗口可以划分成三个部分:

已经接收并且已经

  1. 确认的 TCP 段(已经接收并确认);
  2. 等待接收且允许发送方发送 TCP 段(可以接收未确认);
  3. 不可接收且不允许发送方发送 TCP 段(不可接收)。

五、拥塞控制

为了进行拥塞控制,TCP 发送方要维持一个 拥塞窗口(cwnd) 的状态变量。拥塞控制窗口的大小取决于网络的拥塞程度,并且动态变化。发送方让自己的发送窗口取为拥塞窗口和接收方的接受窗口中较小的一个。TCP拥塞控制算法有4种:

  1. 慢开始:主机开始发送数据的时候,通过对cwnd加倍的方法从小到大增大发送窗口
  2. 拥塞避免:每经过一个往返时间 RTT, 就把发送方的cwnd加1, 让拥塞窗口 cwnd 缓慢增大
  3. 快重传和快恢复:当发送方连续收到3个重复的ACK时,立即重传丢失的报文段,而不等待RTO到期;在快重传触发后,不立即将cwnd降为1MSS,而是通过半窗恢复策略平滑过渡,避免吞吐量断崖式下降。
    在这里插入图片描述

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

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

相关文章

html主题切换小demo

主题切换功能为网页和应用程序提供了多样化的视觉风格与使用体验。实现多主题切换的技术方案丰富多样&#xff0c;其中 CSS 变量和 JavaScript 样式控制是较为常见的实现方式。 以下是一个简洁的多主题切换示例&#xff0c;愿它能为您的编程之旅增添一份趣味。 代码展示 <…

AI架构职责分配——支持AI模块的职责边界设计

职责分配——支持AI模块的职责边界设计 在传统系统中&#xff0c;职责分配通常围绕“控制层处理逻辑、服务层执行业务、数据层持久化”进行划分。这种分工逻辑在纯业务系统中足以支撑高效协作与系统演进。然而&#xff0c;随着AI模块的引入&#xff0c;系统中新增了如模型推理…

CARIS HIPS and SIPS 12.1是专业的多波束水深数据和声呐图像处理软件

CARIS HIPS 和 SIPS 是一套综合水文处理软件&#xff0c;主要用于海洋水道处理和测量领域‌。该软件集成了测深、水柱和海底图像处理功能&#xff0c;能够提高业务处理的精确度和效率‌。 主要功能和应用场景 ‌测深数据处理‌&#xff1a;HIPS主要用于处理大型测深数据。 ‌…

在 Ubuntu 24.04 LTS 上 Docker 部署 DB-GPT

一、DB-GPT 简介 DB-GPT 是一个开源的AI原生数据应用开发框架(AI Native Data App Development framework with AWEL(Agentic Workflow Expression Language) and Agents)。目的是构建大模型领域的基础设施&#xff0c;通过开发多模型管理(SMMF)、Text2SQL效果优化、RAG框架以及…

Axure高保真CRM客户关系管理系统原型

一套出色的CRM&#xff08;客户关系管理&#xff09;系统&#xff0c;无疑是企业管理者掌控客户动态、提升销售业绩的得力助手。今天&#xff0c;就为大家介绍一款精心打造的Axure高保真CRM客户关系管理系统原型模板&#xff0c;助你轻松开启高效客户管理之旅。 这款CRM原型模…

自学嵌入式 day 23 - 数据结构 树状结构 哈希表

一、树状结构 1.特征&#xff1a;在任意一个非空树中&#xff0c; &#xff08;1&#xff09;&#xff0c;有且仅有一个特定的根结点 &#xff08;2&#xff09;&#xff0c;当n>1 时&#xff0c;其余结点可分为m个互不相交的有限集合T1,T2,T3.。。。。Tm&…

JavaScript进阶(十二)

第三部分:JavaScript进阶 目录 第三部分:JavaScript进阶 十二、深浅拷贝 12.1 浅拷贝 12.2 深拷贝 1. 通过递归实现深拷贝 2. js库lodash里面cloneDeep内部实现了深拷贝 3. 通过JSON.stringify()实现 十三、异常处理 13.1 throw抛异常 13.2 try /catch捕获异常 1…

中文域名25周年,取得哪些里程碑式的进展?

二十五载中文域名路 第八届中文域名创新应用论坛在北京举办。与会领导专家回顾了中文域名发展历史&#xff0c;深入探讨了当下面临的机遇与挑战&#xff0c;并展望了未来的发展。 自2000年中国推出全球首个中文域名试验系统以来&#xff0c;中文域名已走过25年历程&#xff0c…

应对进行性核上性麻痹,健康护理铸就温暖防线

进行性核上性麻痹&#xff08;PSP&#xff09;是一种罕见的神经退行性疾病&#xff0c;主要影响患者的运动、平衡及吞咽等功能。针对这类患者&#xff0c;有效的健康护理对提升其生活质量、延缓病情发展至关重要。 在日常生活护理方面&#xff0c;由于患者存在平衡障碍和肌肉僵…

python邮件地址检验 2024年信息素养大赛复赛/决赛真题 小学组/初中组 python编程挑战赛 真题详细解析

python邮件地址检验 2024全国青少年信息素养大赛Python编程挑战赛复赛真题解析 博主推荐 所有考级比赛学习相关资料合集【推荐收藏】 1、Python比赛 信息素养大赛Python编程挑战赛 蓝桥杯python选拔赛真题详解 蓝桥杯python省赛真题详解 蓝桥杯python国赛真题详解 2、…

CAD球体功能梯度材料3D插件

插件介绍 CAD球体功能梯度材料3D插件可在AutoCAD内建立大小呈现梯度分布的球体及长方体孔隙三维模型。 功能梯度材料&#xff08;FGM&#xff09;模型包含大小梯度变化的球体及与之适配的长方体部件&#xff0c;可用于球体材料的梯度分布或梯度多孔结构材料建模。 插件支持…

自制操作系统day9内存管理(cache、位图、列表管理、内存的释放)(ai辅助整理)

day9内存管理 整理源文件&#xff08;harib06a&#xff09; 残留问题&#xff1a;鼠标指针的叠加处理不太顺利&#xff0c;以后处理 先介绍cache&#xff08;高速缓存&#xff09; 每次访问内存&#xff0c;都将所访问的地址和内容存入高速缓存&#xff0c; 往内存里写入数据…

JavaWebsocket-demo

Websocket客户端 pom依赖 <dependency><groupId>org.java-websocket</groupId><artifactId>Java-WebSocket</artifactId><version>1.4.0</version></dependency>客户端代码片段 Component Slf4j public class PositionAlarmL…

特征学习:赋予机器学习 “慧眼” 的核心技术

一、特征学习&#xff1a;从人工设计到智能发现的范式革新 1.1 核心定义与价值 特征学习的本质是让机器模仿人类大脑的认知过程 —— 例如&#xff0c;人类视觉系统通过视网膜→视神经→大脑皮层的层级处理&#xff0c;从像素中识别物体&#xff1b;特征学习则通过神经网络的卷…

3D个人简历网站 7.联系我

3D个人简历网站 7.联系我 修改Contact.jsx // 从 react 库导入 useRef 和 useState hooks import { useRef, useState } from "react";/*** Contact 组件&#xff0c;用于展示联系表单&#xff0c;处理用户表单输入和提交。* returns {JSX.Element} 包含联系表单的 …

软考中级软件设计师——计算机系统篇

一、数据的表示和运算 1、进制转换 1. 常见进制类型 二进制&#xff08;B&#xff09;&#xff1a;基数为2&#xff08;0,1&#xff09;&#xff0c;计算机底层使用。 八进制&#xff08;O&#xff09;&#xff1a;基数为8&#xff08;0-7&#xff09;&#xff0c;3位二进制…

甘特图(项目计划图)

甘特图是甘特在第一次世界大战时为了提供工人效率所创。 由时间&#xff08;顶部横坐标&#xff09;和工作事项&#xff08;左边纵坐标组成&#xff09; 假设&#xff0c;我要做大数据迁移&#xff08;一般半年&#xff0c;几PB的数据和上万个任务&#xff09; 类似于这种

windows服务器部署jenkins工具(一)

jenkins作为一款常用的构建发布工具&#xff0c;极大的简化了项目部署发布流程。jenkins通常是部署在linux服务上&#xff0c;今天给大家分享的是windows服务器上如何搭建jenkins发布工具。 1.首先第一步还是看windows安装docker 这篇文章哈&#xff0c;当然也可以不采用docke…

基于51单片机和8X8点阵屏、独立按键的飞行躲闪类小游戏

目录 系列文章目录前言一、效果展示二、原理分析三、各模块代码1、8X8点阵屏2、独立按键3、定时器04、定时器1 四、主函数总结 系列文章目录 前言 用的是普中A2开发板。 【单片机】STC89C52RC 【频率】12T11.0592MHz 【外设】8X8点阵屏、独立按键 效果查看/操作演示&#xff…

告别“盘丝洞”车间:4-20mA无线传输如何重构工厂神经网?

4-20ma无线传输是利用无线模块将传统的温度、压力、液位等4-20mA电流信号转换为无线信号进行传输。这一技术突破了有线传输的限制&#xff0c;使得信号可以在更广泛的范围内进行灵活、快速的传递&#xff0c;无线传输距离可达到50KM。达泰4-20ma无线传输模块在实现工业现场应用…