HTTP不同版本的区别(速成)

http不同版本的区别


前言

参考了其他大佬的博文,自己做的精练总结,希望面试的时候能用上。
思维导图附上:(有水印,将就一下)
在这里插入图片描述

一、http0.9

最初版本,只支持GET请求,没有请求头和响应头概念。仅能请求访问HTML格式的资源。局限性很强。

二、http1.0

  • 请求方式新增了POST, DELETE, PUT, HEADER

  • 增添了请求头和响应头
    包含头信息(HTTP header)和其他元信息,包括状态码(status code)、多字符集支持、多部分发送(multi-part type)、权限(authorization)、缓存(cache)、内容编码(content encoding)

  • 支持图片,视频,二进制代码传输
    根据Content-Type可以支持多种数据格式,支持image,text等格式

  • 服务器连接后,立即断开tcp连接
    无法保持长连接,每次发送请求,都需要进行一次tcp连接(即3次握手4次挥手),使得网络的利用率非常低。

无连接带来的问题:

1.队头阻塞:
前一个请求收到响应之后,再发送下一个请求。如果前一个请求非常耗时则发生阻塞。后面请求回=会一直处于等待状态,获取不到资源

2.无法复用:发送相同请求需要重新建立一个tcp请求,经过三次握手四次挥手后,服务器返回结果。导致不必要的网络资源浪费。

三、http1.1

  • 长连接

发送相同请求不需要重新建立一个tcp请求,服务器直接返回结果,设置keeplive

  • 管道化

无需等上一个连接响应,下一请求发送。但响应结果必须按照顺序。无法解决队头阻塞。
缓存处理

  • 缓存处理

设置字段cache-control来控制缓存,如有发送请求的时候,如有缓存,直接返回结果。

  • 断点传输

在上传/下载资源时,如果资源过大,将其分割为多个部分,分别上传/下载,如果遇到网络故障,可以从已经上传/下载好的地方继续请求,不用从头开始,提高效率


四、http2.0

  • 二进制分帧

一个彻底的二进制协议,头信息和数据体都是二进制,并且统称为"帧"(frame):头信息帧和数据帧。帧带来的好处,解析速度快,提高传输效率

  • 多路复用

在一个连接里,客户端和浏览器都可以同时发送多个请求或回应,而且不用按照顺序一一对应,这样就避免了"队头堵塞"。
例如:请求A->请求B->响应B->响应A

  • 头部压缩

由于建立的是无状态的,每次都需带头部信息。造成网络资源大量浪费
一方面:客户端和服务器同时维护一张头信息表,,所有字段都会存入这个表,生成一个索引号。每次传输只需要传输索引号。即可。
另一方面:头信息使用gzip或compress压缩后再发送

  • 服务器推送

HTTP/2 允许服务器未经请求,主动向客户端发送资源

到这就结束了。

座右铭:

在因上努力,在果上随缘。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万希&

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值