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

【HBZ分享】TCP可靠性传输如何保证的?以及传输优化之Nagle算法

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中,所以此时客户端时不知道后面的包是否已经收到

TCP传输优化-Nagle算法,即流量控制算法

  1. TCP协议中,无论发送多少大小的数据,每次都会带上协议头
  2. 如果数据量太小,甚至小于协议头的数据量,并且请求频率极高,那么就会浪费资源,协议头的内容就会占很大资源,并且频率高,数据小,也会造成拥塞,并占用资源
  3. TCP默认开启了Nagle算法
  4. Nagle算法会将多个小包囤积 并 合并,然后一起发送,类似于kafka的buffer机制。
  5. Nagle算法只有当收到服务器响应的时候,才会发送第二个包,否则不会发送。当然也不会一直等,当长时间没收到服务器响应,超过了超时时间,则会立即发送,即使每收到服务器响应也会发送。或者数据长度达到了MSS大小时,即使没收到服务端响应,也会立即发送第二个数据包
  6. 缺点:实时性差,延迟很大,因为正常情况下只有收到服务器响应,才会发送第二个数据包,所以当实时性是强需求时,需要关闭Nagle算法

相关文章:

【HBZ分享】TCP可靠性传输如何保证的?以及传输优化之Nagle算法

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

智能电销机器人,主要体现的价值是什么

21世纪科技的迅速发展,人工智能逐渐走入大家的视线,越来越多的机器人出现在我们生活中。见的最多的有电销公司的智能语音机器人、在仓库拣货打包的机器人、商场店铺供娱乐对话的机器人。机器人活跃在各行各业中,降低了人工成本,代…...

Win7系统电脑开机总出现硬盘自检的简单解决方法

你是不是经常会遇到电脑开机进行硬盘自检,而且每次开机都检查很久不能跳过;怎么才能跳过这一步骤呢?下面教大家如何让Win7系统电脑在开机的时候跳过硬盘自检这一步骤,加快开机时间。 解决步骤: 1、按下“Win R”快捷键…...

计网第四章(网络层)(五)

目录 静态路由配置 默认路由: 特定主机路由: 示例: 广播域和冲突域: 静态路由配置 在第四节(计网第四章(网络层)(四)_永无魇足的博客-CSDN博客)有提到过…...

ios 手机浏览器,点击输入框页面会放大

一个普通的h5静态页面,在ios手机上用浏览器打开,发现每次聚焦输入框的时候整个页面都会放大! 解决办法在html的头部meta标签中设置 user-scalableno viewport meta 标记 - HTML(超文本标记语言) | MDN...

全局异常处理

案例一: 自定义异常 public class StudentException extends RuntimeException {private Integer code;private String msg;public StudentException(Integer code, String msg) {this.code code;this.msg msg;}/*** 这里需要重写 getMessage方法,否…...

更健康舒适更科技的照明体验!SUKER书客护眼台灯 L1上手体验

低价又好用的护眼台灯是多数人的需求,很多人只追求功能性护眼台灯,显色高、无频闪、无蓝光等基础需求。但是在较低价格中很难面面俱到,然而刚发布的SUKER书客L1护眼台灯却是一款不可多得的性价比护眼台灯,拥有高品质光源&#xff…...

Locked勒索病毒:最新变种.locked袭击了您的计算机?

导言: 在今天的数字时代,勒索病毒已经不再是仅仅让数据变得不可访问的小威胁。 .locked 勒索病毒,作为其中的一种,以其高度复杂的加密算法和迅速变化的攻击手法而备受恶意分子喜爱。本文91数据恢复将带您深入了解 .locked 勒索病毒…...

随机森林算法

介绍 随机森林是一种基于集成学习的有监督机器学习算法。随机森林是包含多个决策树的分类器,一般输出的类别是由决策树的众数决定。随机森林也可以用于常见的回归拟合。随机森林主要是运用了两种思想。具体如下所示。 Breimans的Bootstrap aggregatingHo的random …...

如何将国标规范用EndNote插入到英文期刊中,自定义文献插入指南

EndNote自定义文献 1.插入国标JTG 2034-2020这种新建一个Standard![](https://img-blog.csdnimg.cn/406cf11d1496431a9cf784f3ab71c6a1.png)Reference填入信息参考 插入英文期刊规范ASTM 1.插入国标JTG 2034-2020这种 首先找到大家要投稿的英文期刊,然后去找那些中…...

重写 UGUI

重写Button using UnityEngine; using UnityEngine.UI; public class MyButton : Button {[SerializeField] private int _newNumber; }using UnityEditor;//编辑器类在UnityEditor命名空间下。所以当使用C#脚本时,你需要在脚本前面加上 "using UnityEditor&q…...

合宙Air724UG LuatOS-Air LVGL API控件--容器 (Container)

容器 (Container) 容器是 lvgl 相当重要的一个控件了,可以设置布局,容器的大小也会自动进行调整,利用容器可以创建出自适应成都很高的界面布局。 代码示例 – 创建容器 cont lvgl.cont_create(lvgl.scr_act(), nil) lvgl.obj_set_auto_re…...

代码随想录训练营第41天|343.整数拆分,96.不同的二叉搜索树

代码随想录训练营第41天|343.整数拆分,96.不同的二叉搜索树 343.整数拆分文章思路代码 96.不同的二叉搜索树文章思路代码 总结 343.整数拆分 文章 代码随想录|0343.整数拆分 思路 二刷不难 d p [ i ] M a x j ( m a x ( j 1 , d p [ j ] ) ∗ ( i − j ) ) \…...

高防服务器与云防产品都适用哪些情况

高防服务器与云防护产品(如高防IP,高防CDN)都可以对DDOS、CC等攻击进行防护,在现如今的互联网市场上,不法分子经常会通过DDOS、CC等攻击服务器,干扰业务正常运行,以此来获得利益。 高防服务器是…...

【广州华锐互动】AR远程连接专家进行协同管理,解放双手让协同更便捷

AR远程协同系统是一种基于AR技术,实现远程设备维修和技术支持的系统。该系统通过将虚拟信息叠加在现实世界中,实现对设备的全方位监控和管理,并可以通过AR眼镜等终端设备,实时查看设备的各项数据和信息,为设备维修提供…...

PNG图片压缩原理

png??png的图片我们每天都在用,可是png到底是什么,它的压缩原理是什么? 很好,接下来我将会给大家一一阐述。 什么是PNG PNG的全称叫便携式网络图型(Portable Network Graphics)是…...

[ Linux Audio 篇 ] Linux Audio 子系统资料集锦

Linux Audio 子系统资料 背景OSS VS ALSAALSA 驱动ALSA libALSA Plugin音频延迟音频调试音频书籍 背景 最近需要准备Linux Audio 相关的PPT,于是将以往的知识点和遇到的问题进行整理和梳理,以便向大家讲解。同时,还整理了在这个过程中发现的…...

VR全景对行业发展有什么帮助?VR全景制作需要注意什么?

引言: 虚拟现实(Virtual Reality,简称VR)早已不再是科幻电影的概念,而是在以惊人的速度改变着我们的世界。VR全景,作为其中的重要组成部分,正为多个行业带来了全新的机遇。 一、VR全景的应用领…...

Unity网络请求队列

引子 最近的一个项目中由于某个需求,需要多次请求后台接口数据,就自己封装了一下网络请求的队列;刚刚好给大家分享一下,互相交流学习 简述 Unity 的网络请求队列是由 UnityWebRequestQueue 类实现的。这个类继承自 MonoBehaviou…...

【Spring Boot】使用XML配置文件实现数据库操作(一)

使用XML配置文件实现数据库操作(一) 1.SQL映射文件 SQL映射文件就是我们通常说的mapper.xml配置文件,主要实现SQL语句的配置和映射,同时实现Java的POJO对象与数据库中的表和字段进行映射关联的功能。 1.1 mapper.xml的结构 下…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

MySQL:分区的基本使用

目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区(Partitioning)是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分(分区)可以独立存储、管理和优化,…...

HybridVLA——让单一LLM同时具备扩散和自回归动作预测能力:训练时既扩散也回归,但推理时则扩散

前言 如上一篇文章《dexcap升级版之DexWild》中的前言部分所说,在叠衣服的过程中,我会带着团队对比各种模型、方法、策略,毕竟针对各个场景始终寻找更优的解决方案,是我个人和我司「七月在线」的职责之一 且个人认为&#xff0c…...

Python竞赛环境搭建全攻略

Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型(算法、数据分析、机器学习等)不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...

加密通信 + 行为分析:运营商行业安全防御体系重构

在数字经济蓬勃发展的时代,运营商作为信息通信网络的核心枢纽,承载着海量用户数据与关键业务传输,其安全防御体系的可靠性直接关乎国家安全、社会稳定与企业发展。随着网络攻击手段的不断升级,传统安全防护体系逐渐暴露出局限性&a…...

起重机起升机构的安全装置有哪些?

起重机起升机构的安全装置是保障吊装作业安全的关键部件,主要用于防止超载、失控、断绳等危险情况。以下是常见的安全装置及其功能和原理: 一、超载保护装置(核心安全装置) 1. 起重量限制器 功能:实时监测起升载荷&a…...