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

【HBZ分享】TCP可靠性传输如何保证的?

ACK机制

  1. ACK机制是发送方与接收方的一个相互确认
  2. 客户端向服务端发送连接请求,此时服务端要回馈给客户端ACK,以表示服务端接到了客户端请求,这是第一和的第二次握手
  3. 客户端接收到服务端响应后,同样也要回馈服务端的响应,告知服务端我收到了你的回馈,我们可以进行传输数据了,此时客户端就会带着数据发送给服务端。、
  4. 以上就是ACK机制,只有当双方都确认了,才会进行数据发送

流量控制

  1. 流量控制是接收方发起的,即服务器端
  2. 服务器端通过win来告知客户端自己还剩多少流量来接受数据
  3. 比如服务端告知客户端我只有200个字段的流量了,则此时服务端会携带一个rwnd = 200的报文给客户端,这是客户端就知道了服务端能接收的流量,那么客户端发送的数据包就不会超过200字节

拥塞控制

  1. 拥塞控制是发送方发起的,即客户端,是一种自适应算法,利用多种机制,根据网络状况自动调整发送频率,以避免网络拥堵
  2. 慢启动:发送端会以一个较小的窗口值开始发送,每收到一个ACK后,下一次窗口值就会翻倍增加,知道窗口值达到最大值位置。如果过程中没有丢包,那就会加快发送的速度频率,如果丢包,就会降低发送速度
  3. 快速重传:当发送端发送的数据报文没有在规定时间内收到ACK回复,发送端会认为该数据报文丢失了,那客户端就会立刻重传
  4. 拥塞避免:当收到3个重复ACK,注意,这里是收到。发送端会认为网络拥塞,他会减少发送速率。并降低发送端发送的数据量,从而减少网络拥塞现象

重传机制

  1. 触发重传也有很多种方式
  2. 超时重传:超过等待时间依然没有收到ACK响应,则会重传, 一般来说超时时间(RTO) > 往返时间(RTT), 往返时间就是发送到服务端,再由服务端返回的两段时间相加
  3. 快速重传(数据驱动): TCP会给每个包编号seq, 第一个包编号就是随机数,接收方收到多个包后,方便组装还原,如果发生丢包,可以知道是哪一个包丢了。
  4. 比如服务端收到6号包,但没有收到14号包,ACK就会记录,期待收到14号包。过了一段时间,14号包还是没收到,但是收到了24号包,ACK里面编号不会变化,会一直期待收到14号包。所以就会不断的重试。当客户端收到了3个连续的ACK回复 或 超时了还没收到ACK,会认为14号包丢失,会重新发14号包,因为14号包已经记录在ACK编号里面了,所以客户端收到的ACK就会有期待14号包的信息,重传成功后,双方才会进行正常通信。
  5. 缺点:快速重传解决了时间超时问题,但存在重传的时候,究竟是重传丢失的那一个包,还是重传丢失包之后的所有包。因为丢失的包会导致后面的包不会记录在ACK中,所以此时客户端时不知道后面的包是否已经收到

相关文章:

【HBZ分享】TCP可靠性传输如何保证的?

ACK机制 ACK机制是发送方与接收方的一个相互确认客户端向服务端发送连接请求,此时服务端要回馈给客户端ACK,以表示服务端接到了客户端请求,这是第一和的第二次握手客户端接收到服务端响应后,同样也要回馈服务端的响应&#xff0c…...

AI聊天机器人平台Poe发布更新;自然语言理解课程概要

🦉 AI新闻 🚀 AI聊天机器人平台Poe发布更新 突破功能限制 增加企业级服务 摘要:知名问答网站Quora旗下的AI聊天机器人平台Poe发布了一系列更新,包括推出Mac应用、支持同时进行多个对话、接入Meta的Llama 2模型等功能。用户只需支…...

电脑视频编辑软件前十名 电脑视频编辑器怎么剪辑视频

对于大多数创作者而言,视频后期工作基本都是在剪辑软件上进行的。一款适合自己的视频剪辑软件,能够节省出大量的时间和金钱成本,让剪辑师省钱又省心。那么有关电脑视频编辑软件前十名,电脑视频编辑器怎么剪辑视频的相关问题&#…...

Springboot整合AOP和注解实现日志记录——Java入职第十二天

前言 作为java开发工程师,日常curd工作少不了,特别是后台系统的操作,对于每一项操作我们都要记录,所以就得有操作日志,操作日志能够排除是开发的锅,是运营或者产品自己操作的。那么就有个问题,每次在业务处理最后,调用操作日志服务保存响应的日志,但是这段代码是很冗余…...

shell脚本监控ip和端口的运行状态并触发邮件告警

ping端口shell代码 ping不通发邮件通知 直到ping通再次发送成功邮件 #!/bin/bash Datedate -d "today" "%Y-%m-%dT%H-%M-%S" #echo "根据当前时间创建日志文件" mkdir -p /log/Ping/ping_server touch /log/Ping/${Date}_ping_server.log ip_li…...

二三维电子沙盘数字沙盘虚拟现实开发教程第14课

二三维电子沙盘数字沙盘开发教程第14课 很久没有写了,主要前段时间在针对怎么显示高精度的 倾斜数据而努力,现在终于实现了效果不错。以前的版本显示倾斜数据控制不太好。 对了。目前系统暂只支持smart3d生成的kml格式的数据,由专有的录入程…...

如何五分钟设计制作自己的蛋糕店小程序

在现如今的互联网时代,小程序已成为企业推广和销售的重要利器。对于蛋糕店来说,搭建一个小程序可以为其带来更多的品牌曝光和销售渠道。下面,我们将以乔拓云平台为例,来教你如何从零开始搭建自己的蛋糕店小程序。 首先&#xff0c…...

(笔记二)利用opencv调用鼠标事件在图像上绘制图形

目录 (1)查看cv2所支持的鼠标事件(2)通过鼠标事件在图像上做标记(3)高级操作:通过移动鼠标在图像绘制图形、曲线 该功能主要创建一个鼠标事件发生时执行的回调函数。鼠标事件可以是任何与鼠标有…...

FreeSWITCH 1.10.10 简单图形化界面4 - 腾讯云NAT设置

FreeSWITCH 1.10.10 简单图形化界面4 - 腾讯云NAT设置 0、 界面预览1、 查看IP地址2、 修改协议配置3、 开放腾讯云防火墙4、 设置ACL5、 设置协议中ACL,让PBX匹配内外网6、 重新加载SIP模块7、 查看状态8、 测试一下 0、 界面预览 http://myfs.f3322.net:8020/ 用…...

Debezium系列之:Debezium Server Offset编辑器

Debezium系列之:Debezium Server Offset编辑器 一、认识Offset编辑器二、Offset编辑器目录结构三、Offset编辑器系统环境要求四、pom.xml五、Main.java六、CommandLineInterface.java七、OffsetFileController.java八、OffsetEditorApp.java九、编译项目十、启动Offset编辑器一…...

缓存穿透、缓存击穿、缓存雪崩

一、概念介绍 缓存穿透: 定义:缓存穿透指的是请求查询缓存和数据库中都不存在的数据,从而导致每次请求都直接访问数据库。 原因:通常是由于恶意请求、非法输入或系统漏洞导致的。攻击者故意提交无效的查询,绕过缓存直…...

1978-2022年全国整体GDP平减指数计算模板(可任意调整基期)

1978-2022年全国整体GDP平减指数计算模板(可任意调整基期) 1、时间区间:1978-2022年 2、指标:名义GDP、实际GDP、GDP平减指数 3、中国GDP平减指数计算公式可以给定基期,自动计算平减指数,可根据需要任意…...

sklearn 笔记: neighbors.BallTree

球树结构 1 基本使用方法 sklearn.neighbors.BallTree(X, leaf_size40, metricminkowski, **kwargs) 2 主要参数说明 X 输入数据,维度为 (n_samples, n_features) n_samples 是数据集中点的数量n_features 是参数空间的维数leaf_size 点数少于多少时&#xff0c…...

【java】【已解决】IDEA启动报错:Lombok Requires Annotation Processing

解决办法: 1、根据异常提示操作: 直接点击错误提示后面的蓝色标识【Enable】(小编点完了所以变灰色),此操作等价于下面的步骤: 【File】-->【Settings】-->【Build】-->【Compiler】-->【Ann…...

生物笔记——暑期学习笔记(三)

生物笔记——暑期学习笔记(三) 文章目录 前言一、R篇1. 数据筛选2. 字符串处理3. 练习 二、生信篇1. blast 基因家族鉴定2. hmm鉴定3. 理化性质与亚细胞定位4. 基因重复类型分析5. 家族成员染色体位置分析6. 基因组共线性分析7. 多序列比对,构…...

EPICS自定义设备支持--longin记录的设备支持编写

以下详细描述了一个longin记录设备支持模块编写过程以及用于测试这个模块的IOC的操作步骤: 1)创建一个目录lidriver用于保存这个IOC目录结构: orangepiorangepi4-lts:~/epics$ mkdir lidriver orangepiorangepi4-lts:~/epics$ ls example …...

SpringCloud(十)——ElasticSearch简单了解(二)DSL查询语句及RestClient查询文档

文章目录 1. DSL查询文档1.1 DSL查询分类1.2 全文检索查询1.3 精确查询1.4 地理查询1.5 查询算分1.6 布尔查询1.7 结果排序1.8 分页查询1.9 高亮显示 2. RestClient查询文档2.1 查询全部2.2 其他查询语句2.3 排序和分页2.4 高亮显示 1. DSL查询文档 1.1 DSL查询分类 查询所有…...

Python Flask Web开发一:环境搭建

一、创建环境 创建一个项目文件夹和一个.venv文件夹 $ mkdir myproject $ cd myproject $ python3 -m venv .venv 二、激活环境 在开始项目之前,请激活相应的环境 激活成功的话会在开发工具自带的终端那里看到以(.venv)开头的 $ . .venv…...

DataTable扩展 列转行方法(2*2矩阵转换)

源数据 如图所示 // <summary>/// DataTable扩展 列转行方法&#xff08;2*2矩阵转换&#xff09;/// </summary>/// <param name"dtSource">数据源</param>/// <param name"columnFilter">逗号分隔 如SDateTime,PM25,PM10…...

Decomposed Prompting: A MODULAR APPROACH FOR SOLVING COMPLEX TASKS

本文是LLM系列文章&#xff0c;针对《Decomposed Prompting: A MODULAR APPROACH FOR SOLVING COMPLEX TASKS》的翻译。 分解提示&#xff1a;一种求解复杂任务的模块化方法 摘要1 引言2 相关工作3 分解提示4 案例5 结论 摘要 小样本提示是一种使用大型语言模型&#xff08;L…...

EmbeddingGemma-300M效果实测:Ollama部署下的中文语义相似度

EmbeddingGemma-300M效果实测&#xff1a;Ollama部署下的中文语义相似度 1. 轻量级嵌入模型的实用价值 在当今信息爆炸的时代&#xff0c;文本数据的处理和分析变得愈发重要。无论是构建智能搜索系统、实现文档聚类&#xff0c;还是开发个性化推荐引擎&#xff0c;文本嵌入技…...

Legacy-iOS-Kit:让旧设备重获新生的开源解决方案

Legacy-iOS-Kit&#xff1a;让旧设备重获新生的开源解决方案 【免费下载链接】Legacy-iOS-Kit An all-in-one tool to restore/downgrade, save SHSH blobs, jailbreak legacy iOS devices, and more 项目地址: https://gitcode.com/gh_mirrors/le/Legacy-iOS-Kit 当你的…...

手机号查QQ号终极指南:3分钟快速找回遗忘的QQ号码

手机号查QQ号终极指南&#xff1a;3分钟快速找回遗忘的QQ号码 【免费下载链接】phone2qq 项目地址: https://gitcode.com/gh_mirrors/ph/phone2qq 你是否曾因忘记QQ号而无法登录&#xff1f;是否因为更换手机需要重新绑定QQ却找不到账号信息&#xff1f;手机号查QQ号工…...

2026年3月Github开源项目精选Top10

&#x1f4c5;统计周期&#xff1a;2026-02-28 ~ 2026-03-29 &#x1f30b;数据来源&#xff1a;www.ffgithub.com &#x1f4da;数据更新&#xff1a;2026-03-29 Top1. 666ghj/MiroFish &#x1f53a; 总星标数量&#xff1a;43670⭐&#x1f53a; 周增长数量&#xff1a;63…...

Phi-3-mini-4k-instruct-gguf实战案例:用q4-GGUF模型实现10秒内短文本生成

Phi-3-mini-4k-instruct-gguf实战案例&#xff1a;用q4-GGUF模型实现10秒内短文本生成 1. 模型简介 Phi-3-mini-4k-instruct-gguf是微软Phi-3系列中的轻量级文本生成模型GGUF版本。这个经过优化的模型特别适合处理问答、文本改写、摘要整理和简短创作等任务。 与完整版Phi-3…...

告别Edge收藏夹翻页烦恼!用这个免费插件实现多列平铺,效率翻倍

Edge浏览器收藏夹效率革命&#xff1a;多列平铺插件实战指南 每次打开Edge浏览器&#xff0c;面对那串长得仿佛没有尽头的单列收藏夹&#xff0c;你是不是也感到一阵无力&#xff1f;滚动、翻页、再滚动——找个书签比找停车位还费劲。作为一名每天要和上百个书签打交道的效率控…...

Phi-3-vision-128k-instruct Vue3前端集成实战:构建智能图像分析Web应用

Phi-3-vision-128k-instruct Vue3前端集成实战&#xff1a;构建智能图像分析Web应用 1. 引言&#xff1a;当Vue3遇见多模态AI 想象一下&#xff0c;你正在开发一个电商网站&#xff0c;需要让系统自动识别用户上传的商品图片并生成详细描述。传统方案要么依赖人工标注&#x…...

告别复杂配置!Phi-3-Mini-128K一键部署实测:7GB显存跑通,小白也能玩转大模型

告别复杂配置&#xff01;Phi-3-Mini-128K一键部署实测&#xff1a;7GB显存跑通&#xff0c;小白也能玩转大模型 1. 为什么选择Phi-3-Mini-128K 如果你正在寻找一个既强大又轻量的大语言模型&#xff0c;Phi-3-Mini-128K绝对值得考虑。这个由微软开发的模型虽然只有3.8亿参数…...

如何3步完成语雀文档迁移:新手终极免费指南

如何3步完成语雀文档迁移&#xff1a;新手终极免费指南 【免费下载链接】yuque-exporter export yuque to local markdown 项目地址: https://gitcode.com/gh_mirrors/yuq/yuque-exporter 还在为语雀平台策略调整而烦恼吗&#xff1f;担心自己的创作内容无处安放&#x…...

为什么钉钉、飞书、企微都在做 CLI?这个开源项目给出了最极致的答案

❝AI Agent 很聪明&#xff0c;但面对真实的专业软件&#xff0c;它就是个"睁眼瞎"。CLI-Anything 说&#xff1a;我来治。❞先说一个扎心的事实2026年了&#xff0c;AI Agent 能写代码、能做分析、能聊天能画画——但你让它打开 Blender 建个模&#xff1f;让它用 G…...