http1.0、1.1、2.0、 3.0

http1.0、1.1、2.0、 3.0

http1.1

  • 引入长连接,在1.0,每次请求都需要建立新的TCP连接,处理请求完毕后立即断开。就导致处理大量图片,链接等资源,需要大量的连接与断开,造成资源浪费和时间延迟。而长连接允许在一个TCP连接上,发起多次请求,减少连接建立和断开的开销,提高网络资源的利用率

  • 引入请求管道化,允许客户端同时发起多个请求,服务端根据接受到的请求依次处理回应,减少了等待时长,需要注意的是,请求管道化可以并发发送请求,但服务器仍依次回应

  • 引入更多的状态码,提供更加丰富的错误信息,方便开发人员定位问题,调试。

  • 引入缓存机制,允许服务器发送“ETag”和“Last-Modified”等响应头字段,便于客户端进行条件性请求,避免不必要的资源传输,提高网络利用率。

存在的问题

  • 请求 / 响应头部(Header)未经压缩就发送,首部信息越多延迟越大。只能压缩 Body 的部分;

  • 发送冗长的首部。每次互相发送相同的首部造成的浪费较多;

  • 服务器是按请求的顺序响应的,如果服务器响应慢,会招致客户端一直请求不到数据,也就是队头阻塞

  • 没有请求优先级控制;

  • 请求只能从客户端开始,服务器只能被动响应

http2.0

  • 二进制协议:使用二进制协议而不是文本格式来传输数据,解析更加高效。(头信息和数据体都是二进制,称为帧)里面还有个流标识符,就可以按照顺序组合,不用按帧顺序抵达对方那里,而且帧类型里面还可以设置优先级,这样来标注流的权重

  • 多路复用:一个TCP连接上可以同时进行多个HTTP请求和响应,解决了HTTP 1.x的队头阻塞问题。(请求管道化,仅请求加快)

  • 头部压缩:使用HPACK算法对头部进行压缩,减少了头部的大小,提高了传输效率,利用静态字典和动态字典来编码常见的头部值

  • 服务器推送:服务器可以主动向客户端推送资源,而不需要客户端明确请求

存在的问题

  • TCP 层队头阻塞问题依然存在:虽然 HTTP/2.0 解决了自身协议层面在同一个连接内的队头阻塞,但它仍然基于 TCP 协议传输,当 TCP 层面出现丢包等情况导致某个帧重传时,整个 TCP 连接上的其他帧都可能受到影响,仍会出现一定程度的队头阻塞,影响传输效率。

http3.0

  • 基于QUIC协议实现,而QUIC是基于UDP的传输协议,具有更低的延迟和更高的性能。

  • 支持连接迁移,当客户端的网络环境发生变化,可以更加平滑的切换新网络,无需重新建立连接

  • 在某些情况下,可以在第一个往返时间(RTT)内建立连接,减少了连接建立的延迟。

存在的问题

  • QUIC 是一个在 UDP 之上的 TCP + TLS + HTTP/2 的多路复用的协议。

    QUIC 是新协议,对于很多网络设备,根本不知道什么是 QUIC,只会当做 UDP,这样会出现新的问题,因为有的网络设备是会丢掉 UDP 包的,而 QUIC 是基于 UDP 实现的,那么如果网络设备无法识别这个是 QUIC 包,那么就会当作 UDP包,然后被丢弃。

    HTTP/3 现在普及的进度非常的缓慢

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

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

相关文章

跟着问题学15——GRU网络结构详解及代码实战

1 RNN的缺陷——长期依赖的问题 (The Problem of Long-Term Dependencies) 前面一节我们学习了RNN神经网络,它可以用来处理序列型的数据,比如一段文字,视频等等。RNN网络的基本单元如下图所示,可以将前面的…

pytest中使用conftest做测试前置和参数化

pytest中比较高阶的应用是,使用conftest去做测试前置工作、测试收尾工作和参数化。conftest是pytest的一个组件,用于配置测试环境和参数。通过conftest, 可以创建一个可复用的测试配置文件,以便在多个测试模块之间共享配置信息。即&#xff0…

04 创建一个属于爬虫的主虚拟环境

文章目录 回顾conda常用指令创建一个爬虫虚拟主环境Win R 调出终端查看当前conda的虚拟环境创建 spider_base 的虚拟环境安装完成查看环境是否存在 为 pycharm 配置创建的爬虫主虚拟环境选一个盘符来存储之后学习所写的爬虫文件用 pycharm 打开创建的文件夹pycharm 配置解释器…

mvn test 失败,单独运行单元测试成功

标题mvn test 失败,单独运行单元测试成功 使用junit4进行单元测试时是通过的,但是在执行maven的test与package时测试不通过 报错信息: parse data from Nacos error,dataId:guoyu-new-asset-dev.yml,data: ....... 配置文件内容 ....... o…

基于gitlab API刷新MR的commit的指定status

场景介绍 自己部署的gitlab Jenkins,并已经设置好联动(如何设置可以在网上很容易搜到)每个MergeRequest都可以触发多个Jenkins pipeline,pipeline结束后会将状态更新到gitlab这个MR上希望可以跳过pipeline运行,直接将指定的MR的指定pipeline状态刷新为…

android 富文本及展示更多组件

模拟微博 #热贴 和 用户 的这种 富文本形式组件,不说了, 直接上代码 package com.tongtong.feat_watch.viewimport android.content.Context import android.graphics.Color import android.util.AttributeSet import android.view.LayoutInflater impo…

YourPHPCMS checkEmail SQL注入漏洞复现

0x01 产品简介 Yourphp企业网站管理系统是一款完全开源免费的PHP+MYSQL系统。核心采用了ThinkPHP框架,同时也作为开源软件发布。 集众多开源项目于一身的特点,使本系统从安全,效率,易用及可扩展性上更加突出。程序内置

gitlab 生成并设置 ssh key

一、介绍 🎯 本文主要介绍 SSH Key 的生成方法,以及如何在GitLab上添加SSH Key。GitLab 使用SSH协议与Git 进行安全通信。当您使用 SSH密钥 对 GitLab远程服务器进行身份验证时,您不需要每次都提供您的用户名和密码。SSH使用两个密钥&#x…

保姆级教程Docker部署Nacos镜像

目录 1、创建挂载目录 2、拉取 Nacos 镜像 3、临时启动并复制文件 4、创建Nacos表结构 5、修改Nacos配置 6、正式启动 Nacos 7、登录Nacos 1、创建挂载目录 在宿主机上创建一个目录用于配置文件映射,这个目录将作为数据卷挂载到容器内部,使得我…

Python+onlyoffice 实现在线word编辑

onlyoffice部署 version: "3" services:onlyoffice:image: onlyoffice/documentserver:7.5.1container_name: onlyofficerestart: alwaysenvironment:- JWT_ENABLEDfalse#- USE_UNAUTHORIZED_STORAGEtrue#- ONLYOFFICE_HTTPS_HSTS_ENABLEDfalseports:- "8080:8…

【北京迅为】iTOP-4412全能版使用手册-第六十七章 USB鼠标驱动详解

iTOP-4412全能版采用四核Cortex-A9,主频为1.4GHz-1.6GHz,配备S5M8767 电源管理,集成USB HUB,选用高品质板对板连接器稳定可靠,大厂生产,做工精良。接口一应俱全,开发更简单,搭载全网通4G、支持WIFI、蓝牙、…

【银河麒麟操作系统真实案例分享】内存黑洞导致服务器卡死分析全过程

了解更多银河麒麟操作系统全新产品,请点击访问 麒麟软件产品专区:https://product.kylinos.cn 开发者专区:https://developer.kylinos.cn 文档中心:https://documentkylinos.cn 现象描述 机房显示器连接服务器后黑屏&#xff…

docker系统详解哟 以及相关命令 Centos Kali安装相关详解 Docker-Compose 亲测

目录 who Is Docker 概念 centos7 安装docker kali安装docker docker安装nginx Docker常用命令 容器得常用命令 Docker-Compose install 常用docker-compose命令 who Is Docker 软件的打包技术,就是将算乱的多个文件打包为一个整体,打包技术在没…

Java项目实战II基于微信小程序的旅游社交平台(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、核心代码 五、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。 一、前言 随着移动互联网的迅猛发展,旅游已经成为人…

Windows 和 Linux 系统命令行操作详解:从文件管理到进程监控

1.切换盘符与目录操作 在命令行中,切换盘符和目录是最常见的操作。尽管 DOS 和 Linux 在这些操作上有所不同,但它们都能实现相似的功能。 (1)切换盘符 ①DOS命令:在 DOS 中,切换盘符非常简单,使用 盘符名:&#xff…

【数据库】关系代数和SQL语句

一 对于教学数据库的三个基本表 学生S(S#,SNAME,AGE,SEX) 学习SC(S#,C#,GRADE) 课程(C#,CNAME,TEACHER) (1)试用关系代数表达式和SQL语句表示:检索WANG同学不学的课程号 select C# from C where C# not in(select C# from SCwhere S# in…

IS-IS二

目录 ISIS建立邻接关系的基本条件: 1、接口链路类型一致 2、广播型链路上,接口类型一致 3、Hello包级别和类型一致 4、L1区域的ID要一致,L2的邻居区域ID不做要求 5、L1-2在区域ID相同下,即建立L1也建立L2区域ID不同只能建立…

echarts全屏,vue

echarts实现全屏并且不失真&#xff0c;全屏图片需要自己换 html&#xff1a; <!-- 图表全屏盒子 --> <div style"position: relative;" ref"charts_orders"><!-- 图表 --><div class"chart_box" v-show"sho…

杂谈随笔-关于unity开发游戏

最近有在做unity的游戏开发&#xff0c;都是自学&#xff0c;甚至没有完整的课程体系…… 在犹豫要不要出系列教程&#xff0c;帮助新手快速入门的同时算是巩固一下基础知识。 那这篇文章先谈谈我对于引擎开发游戏的一些小观点&#xff0c;算是做了这么十几个星期的微不足道的…

️ 在 Windows WSL 上部署 Ollama 和大语言模型的完整指南20241206

&#x1f6e0;️ 在 Windows WSL 上部署 Ollama 和大语言模型的完整指南 &#x1f4dd; 引言 随着大语言模型&#xff08;LLM&#xff09;和人工智能的飞速发展&#xff0c;越来越多的开发者尝试在本地环境中部署大模型进行实验。然而&#xff0c;由于资源需求高、网络限制多…