【HBZ分享】TCP可靠性传输如何保证的?
ACK机制
- ACK机制是发送方与接收方的一个相互确认
- 客户端向服务端发送连接请求,此时服务端要回馈给客户端ACK,以表示服务端接到了客户端请求,这是第一和的第二次握手
- 客户端接收到服务端响应后,同样也要回馈服务端的响应,告知服务端我收到了你的回馈,我们可以进行传输数据了,此时客户端就会带着数据发送给服务端。、
- 以上就是ACK机制,只有当双方都确认了,才会进行数据发送
流量控制
- 流量控制是接收方发起的,即服务器端
- 服务器端通过win来告知客户端自己还剩多少流量来接受数据
- 比如服务端告知客户端我只有200个字段的流量了,则此时服务端会携带一个rwnd = 200的报文给客户端,这是客户端就知道了服务端能接收的流量,那么客户端发送的数据包就不会超过200字节
拥塞控制
- 拥塞控制是发送方发起的,即客户端,是一种自适应算法,利用多种机制,根据网络状况自动调整发送频率,以避免网络拥堵
- 慢启动:发送端会以一个较小的窗口值开始发送,每收到一个ACK后,下一次窗口值就会翻倍增加,知道窗口值达到最大值位置。如果过程中没有丢包,那就会加快发送的速度频率,如果丢包,就会降低发送速度
- 快速重传:当发送端发送的数据报文没有在规定时间内收到ACK回复,发送端会认为该数据报文丢失了,那客户端就会立刻重传
- 拥塞避免:当收到3个重复ACK,注意,这里是收到。发送端会认为网络拥塞,他会减少发送速率。并降低发送端发送的数据量,从而减少网络拥塞现象
重传机制
- 触发重传也有很多种方式
- 超时重传:超过等待时间依然没有收到ACK响应,则会重传, 一般来说超时时间(RTO) > 往返时间(RTT), 往返时间就是发送到服务端,再由服务端返回的两段时间相加
- 快速重传(数据驱动): TCP会给每个包编号seq, 第一个包编号就是随机数,接收方收到多个包后,方便组装还原,如果发生丢包,可以知道是哪一个包丢了。
- 比如服务端收到6号包,但没有收到14号包,ACK就会记录,期待收到14号包。过了一段时间,14号包还是没收到,但是收到了24号包,ACK里面编号不会变化,会一直期待收到14号包。所以就会不断的重试。当客户端收到了3个连续的ACK回复 或 超时了还没收到ACK,会认为14号包丢失,会重新发14号包,因为14号包已经记录在ACK编号里面了,所以客户端收到的ACK就会有期待14号包的信息,重传成功后,双方才会进行正常通信。
- 缺点:快速重传解决了时间超时问题,但存在重传的时候,究竟是重传丢失的那一个包,还是重传丢失包之后的所有包。因为丢失的包会导致后面的包不会记录在ACK中,所以此时客户端时不知道后面的包是否已经收到
相关文章:
【HBZ分享】TCP可靠性传输如何保证的?
ACK机制 ACK机制是发送方与接收方的一个相互确认客户端向服务端发送连接请求,此时服务端要回馈给客户端ACK,以表示服务端接到了客户端请求,这是第一和的第二次握手客户端接收到服务端响应后,同样也要回馈服务端的响应,…...
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格式的数据,由专有的录入程…...
如何五分钟设计制作自己的蛋糕店小程序
在现如今的互联网时代,小程序已成为企业推广和销售的重要利器。对于蛋糕店来说,搭建一个小程序可以为其带来更多的品牌曝光和销售渠道。下面,我们将以乔拓云平台为例,来教你如何从零开始搭建自己的蛋糕店小程序。 首先,…...
(笔记二)利用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 点数少于多少时,…...
【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扩展 列转行方法(2*2矩阵转换)/// </summary>/// <param name"dtSource">数据源</param>/// <param name"columnFilter">逗号分隔 如SDateTime,PM25,PM10…...
Decomposed Prompting: A MODULAR APPROACH FOR SOLVING COMPLEX TASKS
本文是LLM系列文章,针对《Decomposed Prompting: A MODULAR APPROACH FOR SOLVING COMPLEX TASKS》的翻译。 分解提示:一种求解复杂任务的模块化方法 摘要1 引言2 相关工作3 分解提示4 案例5 结论 摘要 小样本提示是一种使用大型语言模型(L…...
Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...
iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信
文章目录 Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket(服务端和客户端都要)2. 绑定本地地址和端口&#x…...
论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...
