HTTP系列之HTTP版本 1.0 1.1 2.0 3.0 主要特性对比

文章目录

  • HTTP1.0 HTTP1.1 HTTP2.0 主要特性对比
    • HTTP1.0
    • HTTP1.1
    • HTTP2.0
    • HTTP3.0
    • websocket
    • HTTP2和websocket的服务端推送区别
      • 单工、半双工、全双工

HTTP1.0 HTTP1.1 HTTP2.0 主要特性对比

HTTP1.0

无状态无连接:HTTP1.0默认浏览器和服务器保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器处理完成后立即断开TCP连接(无连接),服务器不跟踪每个客户端也不记录过去的请求(无状态)。

这种无状态性可以借助cookie/session机制来做身份认证和状态记录。而无连接就比较麻烦了。
无连接的特性导致最大的性能缺陷就是无法复用连接。每次发送请求的时候,都需要进行一次TCP的连接,而TCP的连接释放过程又是比较费事的。这种无连接的特性会使得网络的利用率非常低。

HTTP1.1

1、默认长连接:也就是多个请求和响应可以利用同一个 TCP 连接,而不是每一次请求响应都要新建一个TCP连接,减少了建立和关闭连接的消耗和延迟。
2、管道机制:HTTP/1.1 采用了长连接的方式,这使得管道(pipeline)网络传输成为了可能。即可在同一个 TCP 连接里面,客户端可以发起多个请求,只要第一个请求发出去了,不必等其回来,就可以发第二个请求出去,可以减少整体的响应时间。虽然引进了管道机制,但是当前存在诸多问题,且默认处于关闭状态。
服务器还是按照顺序,先回应 A 请求,完成后再回应 B 请求。要是前面的回应特别慢,后面就会有许多请求排队等着。这称为「队头堵塞」。
3、带宽优化:HTTP 1.1支持只发送header信息(不带任何body信息),如果服务器认为客户端有权限请求服务器,则返回100,否则返回401。客户端如果接受到100,才开始把请求body发送到服务器。
这样当服务器返回401的时候,客户端就可以不用发送请求body了,节约了带宽。
4、断点传输:在 HTTP/1.1 版本中,可以不必等待数据完全处理完毕再返回,服务器产生部分数据,那么就发送部分数据。这是支持文件断点续传的基础。
5、host:在HTTP 1.1中增加Host请求头字段后,WEB浏览器可以使用主机头名来明确表示要访问服务器上的哪个WEB站点,这才实现了在一台WEB服务器上可以在同一个IP地址和端口号上使用不同的主机名来创建多个虚拟WEB站点。

HTTP2.0

1、二进制传输:http2.0将请求和响应数据用帧的形式发送,并且它们采用二进制编码(http1.0基于文本格式)。多个帧之间可以乱序发送,根据帧首部的流标志可以重新组装。(从应用层解决队头阻塞但是传输层依然有该问题)
2、多路复用:基于二进制基础,可以只通过一个TCP链接就可以传输所有的请求数据。
3、Header压缩:http2.0开发了专门的“HPACK”算法,大大压缩了Header信息。
4、服务端推送:服务器不再完全被动地响应请求,也可以新建“流”主动向客户端发送消息。(例如,浏览器在刚请求html的时候就提前把可能会用到的JS,CSS文件发送给客户端,减少等待延迟,这被称为“服务端推送Server Push”)

缺点:
1、TCP以及TCP+TLS/SSL建立连接的延迟
2、TCP的队头阻塞没有彻底解决(http2.0中,多个请求是跑在一个TCP管道中的,一旦丢包,TCP就要等待重传(丢失的包等待重新传输确认),从而阻塞该TCP连接中的所有请求)

HTTP3.0

1、集成了TLS加密功能
2、实现了快速握手功能,相当于TLS和TCP同时握手了
2、基于UDP,但是在上层的QUIC中实现了类似TCP的协议,同时也彻底解决TCP中队头阻塞的问题(单个“流”是有序的,可能会因为丢包而阻塞,但是其他流不会受到影响)

HTTP1.1的缺点:安全性不足和性能不高;
HTTP2.0是更安全更快的HTTPS,头部压缩,多路复用等技术充分利用了带宽,降低了延迟。
HTTP3.0的底层支撑协议QUIC基于UDP实现,又含TCP的特点,实现了又快又可靠的协议。

websocket

HTML5 开始提供的一种浏览器与服务器进行全双工通讯的网络技术,属于应用层协议。它基于 TCP 传输协议,并复用 HTTP 的握手通道。
WebSocket 使用 HTTP 协议进行连接,然后升级为 WebSocket 协议。在需要双向通信的应用场景下非常有用,实时性非常高且不受跨域限制。
特点:
双向通信:WebSocket 允许在同一个连接上同时发送和接收数据,从而实现实时双向通信。
持久连接:一旦建立了 WebSocket 连接,它会保持打开状态,直到显式关闭连接。
低延迟:WebSocket 的双向通信性质使得数据传输更加即时,相比传统的 HTTP 请求,减少了通信延迟。
轻量级:与 HTTP 相比,WebSocket 协议头较小,减少了数据传输时的开销。
支持跨域:WebSocket 允许在不同域名之间进行通信,通过协议和安全措施确保通信安全性。

HTTP2和websocket的服务端推送区别

1、http2.0需要客户端发起请求以后,进行相应,再附带推送,需要客户端发起请求。websocket不需要客户端发请求,就能实现推送。
2、http2.0的推送内容只是浏览器能够感知即存放在浏览器的缓存中,代码是无法获取到数据的,所以还得配合SSE获取数据。http2.0的推送内容典型场景:向后端请求一个html,服务器把html页面中的css,js等资源也推送到了浏览器,这是客户端发起请求时,直接在缓存中读取。websocket可以拿到数据,在代码中使用。

WebSocket 更适合实时、双向通信的场景,而 HTTP/2 的服务器推送更适合通过提前推送相关资源来提高性能的场景。

单工、半双工、全双工

单工:只支持数据在一个方向上传输
半双工:允许数据在两个方向上传输,但是在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信。
全双工:允许数据同时在两个方向上传输,它要求发送设备和接收设备都有独立的接收和发送能力。

tcp是全双工的,但它的上层可能支持半双工,比如http1.1,也有可能支持全双工,比如http2.0。

参考:
https://www.cnblogs.com/lzcnblogs/p/16667190.html
https://blog.csdn.net/weixin_53186633/article/details/123624445
https://www.bilibili.com/video/BV1vv4y1U77y
https://blog.csdn.net/weixin_43801836/article/details/127695498
https://blog.csdn.net/qq_44036439/article/details/129107830

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

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

相关文章

一分钟了解自动化测试【建议收藏】

引子 写在最前面:目前自动化测试并不属于新鲜的事物,或者说自动化测试的各种方法论已经层出不穷,但是,能够明白自动化测试并很好落地实施的团队还不是非常多,我们接来下用通俗的方式来介绍自动化测试…… 本文共有2410…

Web Service接口测试

Web service 接口测试 一. web Service概念 Web service使用与平台和编程语言无关的方式进行通讯的一项技术, web service 是一个接口, 他描述了一组可以在网络上通过标准的XML消息传递访问的操作,它基于xml语言协议来描述要执行的操作或者要与另外一个web 服务交换数据, 一组…

C语言每日一题06

一、题目 二、解析 void main () { char c1,c2; int a1,a2; c1 getchar ();//读取第一个输入,c11 scanf (“%3d”,&a1&#xff…

2024上海慕尼黑正运动展位现场直击

3月20日,备受业界关注的、3C电子行业规模最大的会展活动“2024慕尼黑上海电子生产设备展”在上海新国际博览中心盛大开幕。 正运动技术本次以“打卡正运动,共同探讨国产全自主运动控制新发展”为主题,现场精心策划了一系列激动人心的有奖互动…

数据库:基本操作与用户授权

一 基本操作 1 SQL分类 数据库:database 表:table,行:row 列:column 索引:index 视图:view 存储过程:procedure 存储函数:function 触发器:trigger 事…

【开发环境搭建篇】MySQL服务器端安装和配置

作者介绍:本人笔名姑苏老陈,从事JAVA开发工作十多年了,带过刚毕业的实习生,也带过技术团队。最近有个朋友的表弟,马上要大学毕业了,想从事JAVA开发工作,但不知道从何处入手。于是,产…

高效低压电源——FP7195升降压芯片打造专属电源方案

目录 方案背景 产品介绍 升降压LED驱动电源参数介绍 FP7195芯片介绍 产品应用领域 电源板详解 总结 方案背景 目前市面上的低压LED驱动电源五花八门,升压,降压都包含在内,不过在实际使用时总会有一定限制要求,比如要求电源…

19---时钟电路设计

视频链接 时钟硬件电路设计01_哔哩哔哩_bilibili 时钟电路设计 晶振是数字电路的心脏,数字电路需要一个稳定的工作时钟信号,时钟电路至关重要! 1、晶振概述 晶振一般指晶体振荡器。晶体振荡器是指从一块石英晶体上按一定方位角切下薄片&…

(学习日记)2024.03.15:UCOSIII第十七节:任务的挂起和恢复

写在前面: 由于时间的不足与学习的碎片化,写博客变得有些奢侈。 但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。 既然如此 不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录&a…

virtualBox镜像复制

镜像复制 有一个镜像后,图方便,想直接使用这个vdi文件,但vdi有个uuid值,同一个虚拟机中不能同时存在两个同样的uuid的介质的,普通的复制文件所得到的uuid是一样的 ,所以需要用到自带的方法复制vdi文件&…

好用的高科技AI工具

好用的高科技AI工具汇总 1.stable video 只需输入文案就可以自动帮你做视频。 2.Mubert 只需输入文本就可以生成5秒到25分钟的音乐。生成的音乐可以下载。 3.SoulGen 只需在图片上拖动出你想拓展的范围,就能拓展图像,还能支持多张照片通过文案进行合成…

记录无线通信网站

https://www.rfwireless-world.com/ 包含许多无线知识的一个网站 包含了以上无线通讯协议 2.https://csa-iot.org/https://csa-iot.org/2.https://csa-iot.org/ connectivity standards alliance CSA-IOT 官网 推出的协议有: 如果想查找已认证CSA某种协议的产品…

啥是大语言模型LLM

引言: 在人工智能的世界里,有一种技术正迅速改变我们与机器交流的方式——这就是大语言模型LLM(Large Language Model)。它们像是拥有海量知识库的超级智能,能够理解和生成人类语言。那么,大语言模型LLM到底…

如何在Ubuntu系统搭建Excalidraw容器并实现公网访问本地绘制流程图

文章目录 1. 安装Docker2. 使用Docker拉取Excalidraw镜像3. 创建并启动Excalidraw容器4. 本地连接测试5. 公网远程访问本地Excalidraw5.1 内网穿透工具安装5.2 创建远程连接公网地址5.3 使用固定公网地址远程访问 本文主要介绍如何在Ubuntu系统使用Docker部署开源白板工具Excal…

微服务配置nacos

参考地址: Maven引入nacos的版本问题以及如何在阿里Maven仓库中找到想要的jar和Maven中的groupId、artifactId、version_cannot resolve com.alibaba.cloud:spring-cloud-star-CSDN博客 pom文件中报错: Could not find artifact com.alibaba.cloud:sp…

JavaSE、JavaEE和Jakarta EE的历史、区别与联系

JavaSE、JavaEE和Jakarta EE是Java平台中的三个重要组成部分,它们各自承担着不同的角色,同时也有着密切的联系。在理解它们之间的历史、区别和联系之前,我们首先需要了解它们的基本概念。 JavaSE(Java Standard Edition&#xff…

OpenCV图像处理模块详解

OpenCV 中的图像处理模块(Imgproc)提供了丰富的功能,用于对图像进行各种操作和处理。以下是对这些功能的详细说明: 图像变换(Image Transformation): 缩放(Resize)&#…

【Golang星辰图】 Go系统编程实战:利用Go-syslog、Go-procfs、Go-udev等库实现系统管理和监控

Go系统编程实战:从Go-syslog到Go-apparmor,掌握系统管理和监控技能 前言: 在Linux系统中,系统编程是指利用操作系统提供的接口和库,进行系统级别的编程。Go语言作为一种静态编译、垃圾回收、并发编程的现代编程语言&…

复用与多址的联系与区别

开头请记住一句话:复用针对资源,多址针对用户。 一、复用 1、复用是指一个信道传输多个信号,以提高资源利用率,针对的是信道资源。相当于高速公路上的车道,车道越多,传输速率越快,资源利用率也越…

Linux——进程信号(二)

目录 1、阻塞信号 1.1、信号其他相关常见概念 1.2、在内核中的表示 1.3、sigset_t 1.4、信号集操作函数 2、捕捉信号 2.1、内核如何捕捉信号 5.2、sigaction 1、阻塞信号 1.1、信号其他相关常见概念 实际执行信号的处理动作被称为信号递达(Delivery&#x…