http相关的队头阻塞有哪些

队头阻塞/Head Of Line blocking,HOL 队头阻塞(Head-of-Line blocking,简写HOL blocking)是网络通信中常见的问题,特别是在使用TCP协议时。当一个TCP分节丢失,导致其后续分节不按序到达接收端时,就会发生队头阻塞。在这种情况下,后续分节将被接收端一直保持,直到丢失的第一个分节被发送端重传并到达接收端为止。这种延迟递送确保接收应用进程能够按照发送端的发送顺序接收数据。 阅读详情


前言

队头阻塞(Head-of-Line blocking, 简写:HOL blocking), 是http相关协议的一个著名问题, 它会导致延时的提高.
队头阻塞, 是指第一个数据包(队头)受阻而导致整列数据包传输受阻.
队头阻塞在OSI的多个层中都有, 那么有哪些队头阻塞呢?

  1. HTTP队头阻塞
  2. TLS队头阻塞
  3. TCP队头阻塞

1、应用层-HTTP队头阻塞

1.1 什么是HTTP队头阻塞

http协议是基于TCP协议的.
在http1.0中, http队头阻塞是指:

在同一个TCP通道上,
客户端的第一个http请求, 会阻塞该客户端后续的http请求,
直到客户端接收完毕第一个http请求的响应

在这里插入图片描述

http1.0中, 请求1发出后, 不能立即发出请求2, 要等响应1收到后, 才能发出请求2.

http1.0已经不大使用了, 目前常用的http版本是http1.1,
在http1.1中, http队头阻塞是指:

在同一个TCP通道上,
服务端的第一个http响应, 会阻塞服务端后续的http响应,
直到服务端发送完毕第一个http响应

在这里插入图片描述
http1.1使用了pipeline技术, 解决了http1.0中的客户端队头阻塞, 使得客户端请求可以连续发出,
然而仍然存在服务端的队头阻塞, 响应的顺序必须和请求的顺序保持一致.

1.2 如何应对HTTP队头阻塞

http队头阻塞的原因, 是因为http协议设计上, 不支持响应的乱序.
http的请求和响应是一一对应的, 要支持响应的乱序, 需要能够根据响应反推出是哪个请求,

应对方式: 请求和响应都带上同一个唯一ID

于是, 在http2中, 增加了streamId, 一对请求和响应, 会带有同一个streamId.

wireshark抓包, http2获取icon_wechat.png, 请求中带有streamId 3, 对应的响应也是streamId 3.在这里插入图片描述在这里插入图片描述

这种本质上是做异步的协议, 类似的设计还有mongo,
请求中带有requestId, 响应中带有responseTo, 值就是requestId
在这里插入图片描述


2、会话层-TLS队头阻塞

2.1 什么是TLS队头阻塞

https中的s, 代表了SSL/TLS协议, TLS协议是SSL协议的演进版本, 目前常用的TLS1.2和TLS1.3.
TLS协议, 位于http协议和TCP协议之间.
在这里插入图片描述
TLS会对发出的数据进行加密, 对收到的数据进行解密,
问题是, TCP会根据MSS(Maximum Segment Size ,TCP提交给IP层最大分段大小)进行分包,

发出时, TLS对发出的完整数据加密, 而TCP会把TLS加密后的数据进行分包,
接收时, TLS要等待完整的数据都收到后, 才能进行解密, 然后把解密后的数据交给应用层.

TLS队头阻塞是指:

在同一个TCP通道上,
接收端, 要等待组成完整数据的所有TCP包, 都接收完毕后, TLS才可以进行解密

2.2 如何应对TLS队头阻塞

QUIC的解决思路是这样的: 应用层分包, 然后对每个包单独进行加密

加解密会消耗CPU资源, 对每个包单独加解密, 解决了TLS队头阻塞的延时, 但是带来了频繁加解密的延时,
在低丢包率的网络上, 这个方案并不会有效降低延时.
TLS协议是为了保障数据安全, 为了安全, 这个延时开销省不了.


3、传输层-TCP队头阻塞

3.1 什么是TCP队头阻塞

TCP队头阻塞, 既包含了发送端的队头阻塞, 也包含了接收端的队头阻塞.
TCP发送端队头阻塞是指:

在同一个TCP通道上,
第一个TCP滑动窗口内的多个分组, 在全部发送且ack确认完成前, 会阻塞后续的滑动窗口的发送

TCP接收端队头阻塞是指:

在同一个TCP通道上,
如果sequence number较小的包丢失了,
则后续sequence number较大的包都会积压在接收端缓存中, 且无法被应用层获取到.

3.2 如何应对TCP队头阻塞

TCP协议本身也在尝试缓解这个问题, 例如, 快重传, SACK重传,
但是, 并未解决.

应对方式: 换传输层协议


总结

本文介绍了http相关的多种队头阻塞, 以及相关的应对.

基于matlab的心电信号预处理 这是前段时间做的一个课程设计,做的比较简单,没有考虑到太细,只是初步地达到了想要的效果。这次设计主要是对心电信号进行预处理,将其信号中包含的一些干扰滤除或者抑制掉。 一、心电信号 (1)心电信号的特性   人体心电信号是非常微弱的生理低频电信号,通常最大的幅值不超过5mV,信号频率在0.05~100Hz之间。心电信号是通过安装在人体皮肤表面的电极来拾取的。由于电极和皮肤组织之间会发生极化现象 阅读详情

相关推荐

神经算子:突破科学计算瓶颈的函数空间映射技术

神经算子(Neural Operators)是深度学习在科学计算领域的重要突破,它从根本上改变了处理连续物理问题的方式。与传统神经网络学习离散数据点映射不同,神经算子学习的是函数空间到函数空间的映射,这种范式转换使其具备离散化收敛性和超分辨率预测能力。在计算流体力学、天气预报等需要求解偏微分方程的场景中,神经算子能够在保持精度的同时将计算速度提升数个数量级。傅里叶神经算子(FNO)通过快速傅里叶变换实现高效计算,特别适合规则网格问题;而图神经算子(GNO)则擅长处理不规则网格和复杂几何形状。这种技术为参数敏

cuililai5127的博客 444

HTTP 队头阻塞

目录HTTP 1.0无连接队头阻塞HTTP 1.1长连接管道化HTTP 2.0二进制分帧多路复用 这里主要是对 HTTP 协议不同版本中队头阻塞问题的概述;思路是: 1.0 出现问题;1.1 改善问题-主流;2.0 解决问题; 个人笔记,难免有差错,敬请指正。 HTTP 1.0 无连接 HTTP 1.0,是一种无状态、无连接的应用层协议。其规定浏览器的每次请求都需要与服务器建立一个TCP连接,服务器处理完成后立即断开TCP连接(无连接),服务器不跟踪每个客户端也不记录过去的请求(无状态)。这可能就会引发

zhou 4558

从GWAS到单细胞:利用seismic包精准定位疾病相关的关键细胞亚群与驱动基因

本文详细介绍了如何利用seismic包将GWAS与单细胞测序数据结合,精准定位疾病相关的核心细胞亚群与驱动基因。通过创新的统计算法和实战案例,帮助研究者从遗传汇总数据中挖掘关键生物学机制,提升疾病研究的精准度和效率。

weixin_29215815的博客 442

HTTP:什么是队头阻塞以及怎么解决

短连接 HTTP协议最初(0.9/1.0)是个非常简单的协议,通信给出也采用了简单的“请求-应答”方式。 它底层的数据传输基于TCP/IP,每次发送请求前需要先与服务器建立连接,收到相应报文后会立即关闭连接。 因为客户端和服务器的整个连接给出很短暂,不会与服务器保存长连接的状态,所以就称为“短连接” 短连接的缺点相当严重,因为在TCP协议里,建立连接和关闭连接都是非常“昂贵”的操作。TCP建立连接要有“三次挥手”,发送3个数据包,需要1个RTT;关闭连接是“四次挥手”,4个数据包需要2个RTT。

OceanStar的博客 3831

VS2019+EasyX图形库实战:手把手教你用C语言打造消消乐小游戏(附完整源码)

本文详细介绍了如何使用VS2019和EasyX图形库从零开始构建一个C语言消消乐小游戏。通过环境配置、数据结构设计、界面绘制、交互实现到游戏逻辑完善的完整流程,帮助开发者掌握图形编程和游戏开发的核心技巧,并附有完整源码供参考。

bush的博客 186

浅谈迪杰斯特拉(Dijkstra)算法和A*算法原理及实现

迪杰斯特拉(Dijkstra)算法和A*算法的原理及实现。

Guo_Zhanyu 9600

​HTTP和TCP协议的队头阻塞​

队头阻塞(Head-of-line blocking)其实有两种,一种是TCP 队头阻塞,另一种是HTTP 队头阻塞,而这两者之前其实还存在一定的联系

互联网架构师笔记 2271

NX二次开发常用函数——从一个坐标系到另一个坐标系的转换(UF_MTX4_csys_to_csys )相同体坐标转化

本文介绍了在项目开发中实现坐标转换的方法,重点解析了两个关键函数UF_MTX4_csys_to_csys和UF_MTX4_vec3_multiply的使用。通过4个变换矩阵(transform1-4)实现工作坐标系与绝对坐标系之间的相互转换,并以圆柱体为例详细说明了坐标转换的具体实现过程,包括原点、X/Y轴方向的转换处理。相比之前采用的if-else判断方法,这种矩阵转换方式在代码复杂度和运行效率上都更具优势。

weixin_47753171的博客 600

什么是队头阻塞以及如何解决

独立的消息数据都在一个链路上传输,也就是有一个“队列”。比如TCP只有一个流,多个HTTP请求共用一个TCP连接队列上传输的数据有严格的顺序约束。比如TCP要求数据严格按照序号顺序,HTTP管道化要求响应严格按照请求顺序返回所以要避免队头阻塞,就需要从以上两个方面出发,比如quic协议不使用TCP协议而是使用UDP协议,SCTP协议支持一个连接上存在多个数据流等等。

ldxxxxll的博客 1936

69页完整版智慧港口综合解决方案

智慧港口需求4港机远程操控等自动化改造需求自动化码头AGV无线通信及专用视频系统需求安全生产视频监控类需求港机RCMS及设备管理需求岸边智能理货码头三维全景应用智慧港口解决方案5自动化码头AGV/跨运车/无人集卡无线接入港机远控视觉及冗余无线通信视觉集卡防吊起系统集装箱码头岸边智能理货港机RCMS系统无线接入港机智能化管理(无线高清视频监控、一键报警、远程抄表系统)港口拖轮无线接入岸边溢油监测系统TD-LTE覆盖及业务终端接入港口生产管理系统港口可视化集群调度港口GiNMS综合网络设备智能管理全球作业效率最

zuoan1993的博客 2130

【GameFramework框架内置模块】9、有限状态机(FSM)

这篇文章分享FSM有限状态机,了解过StarForce源码的同学相比都比较了解,GameFramework框架给我们抽象了一个Procedure流程的概念。这个Procedure流程可以方便的处理我们游戏从启动到游戏的各个流程阶段的处理逻辑,实现的核心就是FSM状态机,内部的Procedure流程就是不同的FsmState状态。接下来,就是FSM有限状态机的教程了。有限状态机(Finite-state machine,FSM)

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 2533

https,http1,http2,http3的一些知识

https,http1,http2,http3的一些知识温故知新,突然有人问我项目中🤔有使用http3么,一下不知从何说起,就有了这篇文章的出现。

caixin185的博客 1694

【爬虫实战】Instagram博主图片爬取:模拟登录+滚动加载,轻松抓取高清美图

在当今社交媒体时代,Instagram作为全球最受欢迎的图片分享平台之一,汇聚了无数优质博主的海量精美图片。对于数据爱好者、营销分析师、AI训练数据收集者来说,如何高效、稳定地爬取Instagram博主的图片,成为了一项极具实用价值的技术挑战。然而,Instagram的反爬机制日益严格,传统的静态页面请求已经无法满足需求。本文将带你从零开始,使用2024-2025年最新技术栈,实现模拟登录、滚动加载、高清图片下载的全流程爬虫。✅ 全流程代码可直接运行✅ 模拟手机端请求绕过反爬。

2201_76125261的博客 598

HTTP1、HTTP1.1、http2、http3的区别

我们知道HTTP/1和HTTP/2都是使用TCP协议来传输的,而如果使用HTTPS的话,还需要使用TLS协议进行 安全传输,而使用TLS也需要一个握手过程,这样就需要有两个握手延迟过程。这不同于HTTP/1.1,使用HTTP/1.1时,浏览器为每个域名开启了6个TCP连接,如果其中的1个TCP连接发生了队头阻塞,那么其他的5个连接依然可以继续传 输数。从上图可以看出,HTTP的持久连接可以有效减少TCP建立连接和断开连接的次数,这样的好处是减少了服务器额外的负担,并提升整体HTTP的请求时间。

lzg_na的博客 1858

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

计算机网络:HTTP 各版本差异

HTTP协议发展历程:1.0到2.0的演进 HTTP1.0采用短连接模式,每个请求都需要建立和销毁TCP连接,导致资源浪费和性能低下。HTTP1.1引入长连接和管道化技术,允许多个请求复用同一个TCP连接,但仍存在队头阻塞问题。 HTTP2.0通过二进制分帧实现真正的多路复用,解决了队头阻塞问题。它采用帧和流的概念,允许不同请求交替传输。同时还实现了头部压缩和服务器推送功能,显著提升了传输效率。 各版本核心区别在于连接管理方式:1.0短连接效率低,1.1长连接仍有限制,2.0通过二进制分帧彻底解决了复用问题

Ice_Sugar_7的博客 1094

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

HTTP各版本差异

HTTP1.0为每个请求单独新开一个TCP连接fill:#333;TCP三次握手,建立连接请求响应TCP四次挥手,销毁连接TCP三次握手,建立连接请求响应TCP四次挥手,销毁连接由于每个请求都是独立的连接,因此会带来下面的问题:连接的建立和销毁都会占用服务器和客户端的资源,造成内存资源的浪费连接的建立和销毁都会消耗时间,造成响应时间的浪费无法充分利用带宽,造成带宽资源的浪费TCP协议的特点是「慢启动」,即一开始传输的数据量少,一段时间之后达到传输的峰值。

qq_53461589的博客 840

12 DHCP的内容和HTTP的改良

DHCP需要熟练掌握,SPDY熟悉即可。HTTP 2/3要知道具体的作用。网络理论结束 了。接下来以操作系统理论和linux为主。

2401_82911768的博客 1257

HTTP/2做错了什么?刚刚辉煌2年就要被弃用了!?

△Hollis, 一个对Coding有着独特追求的人△这是Hollis的第323篇原创分享作者 l Hollis来源 l Hollis(ID:hollischuang)最近一段时间以...

weixin_44742132的博客 170

HTTP和HTTPS区别!

HTTP和HTTPS区别!

weixin_57031986的博客 6291

http/https

http/s

dingyahui的博客 1503

说一下 HTTP/3 新特性,为什么选择使用 UDP 协议?

引言 本文主要分为以下几个方面循序渐进走进 HTTP/3: HTTP/2 和 TCP 的致命缺陷 QUIC 协议为什么选择 UDP QUIC 和 HTTP/3 新特性 QUIC 和 HTTP/3 前景发展展望 HTTP/2 和 TCP 的缺陷 HTTP/2 使用二进制传输、Header 压缩(HPACK)、多路复用等,相较于 HTTP/1.1 大幅提高了数据传输效率,但它仍然存在着以下几个致命问题(主要由底层支撑的TCP 协议造成): 建立连接时间长 队头阻塞问题相较于 HTTP/1.1 更严重.

sisterAn的博客 570

HTTP3势头这么猛,它的优势在哪里?

HTTP/3正式发布:基于QUIC协议的重大升级 IETF近期正式发布了HTTP/3的RFC标准,这是HTTP协议的第三个主要版本。HTTP/3基于QUIC协议,采用UDP传输层协议,在保持TLS安全性的同时显著提升了性能。QUIC协议具有多项创新特性:1)0RTT快速建立连接,首次连接仅需1RTT;2)连接迁移能力,不受网络切换影响;3)彻底解决队头阻塞问题;4)改进的拥塞控制算法;5)多级流量控制机制。相比HTTP/2,HTTP/3在弱网环境下表现更优,通过数据包级别的加密和传输,避免了TCP和TLS层

974

HTTP/3 简介

前言 HTTP 2.0是由谷歌SPDY进化而来,现有的实现基本都是走SSL(说是可以不用SSL,但基本没这么干的),传输层使用TCP。HTTP 3.0是由谷歌QUIC进化出来的,QUIC没有大动HTTP 2.0,在把传输层调整为UDP后,为适应UDP而做了一些微调。 HTTP 2问题 前篇已整体介绍HTTP 2,就此,此篇只说下HTTP/2的问题 在底层使用了TCP的情况下,TCP...

weixin_30547797的博客 658

网络安全——浅谈HTTP协议

HTTP请求和响应中,状态行和请求/响应头都是些信息字段,并没有真正的数据,因此在2.0版本中将所有的信息字段建立一张表,为表中的每个字段建立索引,客户端和服务端共同使用这个表,他们之间就以索引号来表示信息字段,这样就避免了1.0旧版本的重复繁琐的字段,并以压缩的方式传输,提高利用率。新增了请求方式PUT、PATCH、DELETE等。这里的访客不是用户,而是电脑,一台电脑算一个访客,即使是同一台电脑的不同用户,访问同一个网站UV也只能加1,只有更换电脑才会使UV加1,因为服务端会记录客户端电脑的信息。

Hacker_xingchen的博客 846

http协议理解7

1.HTTPS优化 1. 硬件优化 1.更快的cpu 2. SSL加速卡 3. SSL加上服务器 2. 软件优化 1. 软件升级 2. 协议优化 1 .如果有可能,尽量采用TSL1.3 2 .如果只能使用1.2,那么也要开启Flase Start的。从第一次握手就开始发送内容 3. 会话复用 SessionID 服务端控制携带 4. 会话票证 Session Ticket---- Token 客户端携带 2. 如何迁移到HTTPS 1. 申请证书 let’s Encrypt 是著名免费CA,他只颁发

wangrong111222的博客 530
上一篇: 彻底理解非阻塞IO(NIO)
下一篇: 程序员绘图指南
lic721
博客等级 码龄17年 36粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值