HTTP协议发展和版本

简介: HTTP协议发展和版本

 http 协议在 1991 年发布第一个版本版本号为 0.9。随后 WWW 联盟 (WWW Consortium-W3C)于 1994 年成立,http 协议被纳入到 W3C 组织中进行维护和管理。

http 协议版本发展

1 http1.0

最早在 1996 年在网页中使用,内容简单,所以浏览器的每次请求都需要与服务器建立


一个 TCP 连接,服务器处理完成后立即断开 TCP 连接(无连接),服务器不跟踪每个客户端


也不记录过去的请求(无状态),请求只能由客户端发起(单向性)。


2 http1.1

到 1999 年广泛在各大浏览器网络请求中使用,HTTP/1.0 中默认使用 Connection: close。在 HTTP/1.1 中已经默认使用 Connection: keep-alive(长连接),避免了连接建立和释放的开 销,但服务器必须按照客户端请求的先后顺序依次回送相应的结果,以保证客户端能够区分出每次请求的响应内容。通过 Content-Length 字段来判断当前请求的数据是否已经全部接收。不允许同时存在两个并行的响应。


1.1 中最重要的一个特点是支持“长连接”,即“一次连接可以多次请求”。

20200625151700788.png



HTTP 1.1 支持持久连接(HTTP/1.1 的默认模式使用带流水线的持久连接),在一个 TCP连接上可以传送多个 HTTP 请求和响应,减少了建立和关闭连接的消耗和延迟。一个包含有许多图像的网页文件的多个请求和应答可以在一个连接中传输,但每个单独的网页文件的请求和应答仍然需要使用各自的连接。HTTP 1.1 还允许客户端不用等待上一次请求结果返回,就可以发出下一次请求,但服务器端必须按照接收到客户端请求的先后顺序依次回送响应结果,以保证客户端能够区分出每次请求的响应内容,这样也显著地减少了整个下载过程所需要的时间。


3 http2.0

3.1 长连接

在 HTTP/2 中,客户端向某个域名的服务器请求页面的过程中,只会创建一条 TCP 连接,即使这页面可能包含上百个资源。 单一的连接应该是 HTTP2 的主要优势,单一的连接能减少 TCP 握手带来的时延 。HTTP2 中用一条单一的长连接,避免了创建多个 TCP 连接带来的网络开销,提高了吞吐量。


3.2 多路复用 (Multiplexing)

HTTP2.0 中所有加强性能的核心是二进制传输,在 HTTP1.x 中,我们是通过文本的方式传输数据。在 HTTP2.0 中引入了新的编码机制,所有传输的数据都会被分割,并采用二进制格式编码。


20200625152314857.png


多路复用,连接共享。不同的 request 可以使用同一个连接传输(最后根据每个 request上的 id 号组合成正常的请求)。


HTTP2.0 中,有两个概念非常重要:帧(frame)和流(stream)。 帧是最小的数据单位,每个帧会标识出该帧属于哪个流,流是多个帧组成的数据流。 所谓多路复用,即在一个 TCP 连接中存在多个流,即可以同时发送多个请求,对端可以通过帧中的表示知道该帧属于哪个请求。在客户端,这些帧乱序发送,到对端后再根据每个帧首部的流标识符重新组装。通过该技术,可以避免 HTTP 旧版本的队头阻塞问题,极大提高传输性能。

20200625152400762.png



3.3 首部压缩(Header Compression)

由于 1.1 中 header 带有大量的信息,并且得重复传输,2.0 使用 encoder 来减少需要传输的 hearder 大小。


3.4 服务端推送(Server Push)

在 HTTP2.0 中,服务端可以在客户端某个请求后,主动推送其他资源。 可以想象一下,某些资源客户端是一定会请求的,这时就可以采取服务端 push 的技术,提前给客户端推送必要的资源,就可以相对减少一点延迟时间。在浏览器兼容的情况下也可以


使用 prefetch。


3.5 更安全

HTTP2.0 使用了 tls 的拓展 ALPN 做为协议升级,除此之外,HTTP2.0 对 tls 的安全性做了近一步加强,通过黑名单机制禁用了几百种不再安全的加密算法。

20200625152618498.png

目录
相关文章
|
2月前
|
监控 安全 搜索推荐
设置 HTTPS 协议以确保数据传输的安全性
设置 HTTPS 协议以确保数据传输的安全性
|
24天前
|
安全 网络协议 算法
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
125 4
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
|
7天前
|
网络协议 物联网 网络性能优化
物联网协议比较 MQTT CoAP RESTful/HTTP XMPP
【10月更文挑战第18天】本文介绍了物联网领域中四种主要的通信协议:MQTT、CoAP、RESTful/HTTP和XMPP,分别从其特点、应用场景及优缺点进行了详细对比,并提供了简单的示例代码。适合开发者根据具体需求选择合适的协议。
26 5
|
23天前
|
缓存 网络协议 前端开发
Web 性能优化|了解 HTTP 协议后才能理解的预加载
本文旨在探讨和分享多种预加载技术及其在提升网站性能、优化用户体验方面的应用。
|
25天前
|
存储 网络安全 对象存储
缺乏中间证书导致通过HTTPS协议访问OSS异常
【10月更文挑战第4天】缺乏中间证书导致通过HTTPS协议访问OSS异常
50 4
|
27天前
|
JavaScript 安全 Java
谈谈UDP、HTTP、SSL、TLS协议在java中的实际应用
下面我将详细介绍UDP、HTTP、SSL、TLS协议及其工作原理,并提供Java代码示例(由于Deno是一个基于Node.js的运行时,Java代码无法直接在Deno中运行,但可以通过理解Java示例来类比Deno中的实现)。
53 1
|
2月前
|
安全 网络协议 网络安全
在实现HTTPS时,有哪些常见的安全协议
在实现HTTPS时,有哪些常见的安全协议
|
2月前
|
前端开发 JavaScript 安全
深入解析 http 协议
HTTP(超文本传输协议)不仅用于传输文本,还支持图片、音频和视频等多种类型的数据。当前广泛使用的版本为 HTTP/1.1。HTTPS 可视为 HTTP 的安全增强版,主要区别在于添加了加密层。HTTP 请求和响应均遵循固定格式,包括请求行/状态行、请求/响应头、空行及消息主体。URL(统一资源定位符)用于标识网络上的资源,其格式包含协议、域名、路径等信息。此外,HTTP 报头提供了附加信息,帮助客户端和服务端更好地处理请求与响应。状态码则用于指示请求结果,如 200 表示成功,404 表示未找到,500 表示服务器内部错误等。
39 0
深入解析 http 协议
|
24天前
|
安全 应用服务中间件 Shell
网站在后台启用了https协议之后重新登录就不进去后台的解决方法
网站在后台启用了https协议之后重新登录就不进去后台的解决方法
|
2月前
|
JavaScript 网络协议 Windows