http协议发展史
超文本传输协议
http是一种用于分布式协作超媒体信息系统的应用程序级协议。它是一种通用的、无状态的协议,可用于超文本之外的许多任务,例如域名服务器和分布式对象管理系统。
HTTP允许浏览器和服务器进行通信。它构成了Web服务器执行最基本操作的基础。HTTP经历了多个阶段。超文本传输协议第3版(HTTP3)的最新草案于2021年5月27日发布。HTTP0。9
蒂姆伯纳斯李是一位英国计算机科学家,也是万维网的发明者。他在1989年创建了单行HTTP协议。它只是返回一个网页。这个协议在1991年被命名为HTTP0。9。
它是一个简单的一页规范。它只有一种方法,GET后跟文档地址和可选的端口地址,并以回车(CR)和换行(LF)结束:获取web。html响应可能是请求的HTML文件:HTML网页内容HTML或者响应可能是一个错误页面:HTML无法获取页面HTML
HTTP0。9有四个术语:连接、断开连接、请求和响应。
没有HTTP标头,没有状态错误代码,没有cookie,也没有其他现代功能。
HTTP0。9建立在TCP(传输控制协议)之上。响应后立即终止连接。HTTP1。0
1996年,HTTP1。0发布。该规范是显著扩大,并且支持三种请求方法:GET,Head,和POST。它还有其他术语:消息、资源、实体、客户端、用户代理、服务器、源服务器、代理、网关、隧道和缓存。
HTTP1。0相对于HTTP0。9的改进如下:
每个请求都附加了HTTP版本。
在响应开始时发送状态代码。
请求和响应都包含HTTP报文头。
报文头中的元数据使协议具有灵活性和可扩展性。
内容类型能够传输HTML文件以外的文档。
但是,HTTP1。0不是官方标准。HTTP1。1
HTTP的第一个标准化版本HTTP1。1(RFC2068)于1997年初发布,距HTTP1。0仅几个月之后。
HTTP1。1支持七种请求方法:OPTIONS,GET,HEAD,POST,PUT,DELETE,和TRACE。
HTTP1。1有额外的术语:表示、内容协商、变体、可缓存、第一手、显式过期时间、启发式过期时间、年龄、生命周期、语义透明和验证器。
HTTP1。1是HTTP1。0的增强:
虚拟主机允许从单个IP地址提供多个域。
持久连接和流水线连接允许Web浏览器通过单个持久连接发送多个请求。
缓存支持节省了带宽并使响应速度更快。
分块编码允许在知道其总长度之前发送响应。这将启用动态生成的页面。
内容协商,包括语言、编码或类型,允许客户端和服务器就最适合交换的内容达成一致。
HTTP1。1在接下来的15年左右将非常稳定。
在此期间,出现了HTTPS(安全超文本传输协议)。它是使用SSLTLS进行安全加密通信的HTTP的安全版本。
自2000年以来,WebAPI的真正潜力已得到认可。RoyFielding领导的一组专家发明了REST,即表示状态转移。REST是一种软件架构风格,它定义了一组在创建Web服务时要遵守的约束和标准。RESTAPI在HTTP1。1及更高版本上工作。HTTP2
HTTP2旨在更有效地使用网络资源并减少延迟感知。它引入了一个新的二进制帧层,它不向后兼容HTTP1。x服务器和客户端。
HTTP2的初稿使用SPDY作为其规范草案的工作基础。该规范于2015年发布。它具有附加术语:连接错误、端点、帧、对等方、接收方、发送方、流、流错误、中介和有效载荷主体。
HTTP2构建了对流量的并行化、优先化和流量控制:
通信是通过单个TCP连接与任意数量的双向流进行的。
它是一个多路复用协议。并行请求通过同一连接处理。
它提供了将一种资源优先于另一种资源的能力,从而将其置于响应行的头部。
它允许主动将表示从服务器推送到客户端。
它使用二进制协议而不是文本。这使其成为机器可读的并提高了性能。它还提高了整体的安全性。
请求和响应头被压缩。
帧在流上传送,数据帧有效载荷受流控制。HTTP3
随着越来越多的智能手机和便携式设备的出现以及越来越多的设备实现无线连接,整体网络响应时间也有所增加。HTTP2的队头阻塞问题会导致缓慢且无响应的用户体验。
由于TCP保证发送和接收数据包的顺序,丢失的数据包将停止所有流,即使它可能只影响其中一个。
HTTP2没有强制加密,容易受到流重用攻击以及压缩页头和cookie攻击。
HTTP3可以解决这些问题。
HTTP3是继HTTP1。1和HTTP2之后的第三次重大修订。
目前,它仍然是一个草案。最新规范于2021年5月27日发布。它具有附加术语:中止、HTTP3连接和内容。
HTTP3是一种新的、快速、可靠且安全的协议,适用于所有形式的设备。HTTP3没有使用TCP,而是使用谷歌在2012年开发的新协议QUIC。QUIC运行在UDP(用户数据保护协议)之上。QUIC提供本地多路复用,丢失的数据包仅影响数据丢失的流程。这解决了HTTP2中的队头阻塞问题。
QUIC为流数据和在流上发送的所有HTTP3帧类型提供流量控制。
因此,所有帧头和有效载荷都受到流量控制。
请求和响应头由QPACK压缩,而不是HTTP2中的HPACK。
几个HTTP3帧用于管理服务器推送。
HTTP3包括TLS1。3加密。实际上,它充当HTTPS。
HTTP3带来了革命性的变化,以提高Web性能和安全性。设置HTTP3网站需要服务器和浏览器支持。
目前,谷歌云、Cloudflare和Fastly支持HTTP3。
Chrome、Firefox、Edge、Opera和一些移动浏览器支持HTTP3。
我们可以去https:caniuse。com?searchhttp3
检查更新的浏览器的支持性。结论
我们已经走过了HTTP0。9、HTTP1。0、HTTP1。1、HTTP2和HTTP3。
未来的还会有哪些HTTP协议,我们无法预知,但是可以想到的是,一定会有新的协议出现,因为技术前进的脚步是从来不会停止的。