http1,http1.1,http2及http3

68 篇文章 1 订阅
14 篇文章 0 订阅

http1的问题:

1.浏览器阻塞,浏览器对于同一个域名同时请求个数是有限制,根据浏览器内核不同,限制请求个数是不一,但基本是个位数,超过请求个数就会阻塞,必须等前面的请求完成
2.DNS查询,域名解析是比较费时的,但通常可以利用DNS缓存来减少域名解析时间,DNS查询顺序为:浏览器缓存-电脑hosts文件-本地DNS服务器-根域名服务器-顶级域名服务器
3.建立连接,http是基于tcp的,每次建立连接需要进行三次握手和四次挥手

http1.1

http1.1比http1多了:
1.长连接(默认开启)
2. 增加了更多的缓存策略,比如,Cashe-Control ,E-Tag、If-None-MatchHTTP1.0使用的是Expires,last-modified、If-Modified-Since
3.错误通知管理409和410 4.Host头域,在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname)。但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。4.HTTP1.1的请求消息和响应消息都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误(400 Bad Request)。
5. 带宽优化:在请求头中多了一个rang的区域,可以更加方便的传输部分数据,充分利用带宽

https://blog.csdn.net/mxw2552261/article/details/78898909

http1.0和http1.1现存的问题

http1.0
每一次传输数据都需要重新建立连接,延迟较多
传输均为明文,客户端和服务端均无法验证双方身份,存在一定的数据安全
请求的header部分内容较大,增加传输成本,且很多时候header部分是不变的

http1 状态行和头部却没有经过任何压缩,直接以纯文本传输

http1.1

http1.1的长连接+流水线;在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟,在HTTP1.1中默认开启Connection: keep-alive,一定程度上弥补了HTTP1.0每次请求都要创建连接的缺点。

http1.1长连接默认开启,会对队头堵塞,可使用pipline多并发但只支持get等幂等请求

队头堵塞:在请求应答过程中,如果出现任何状况,剩下所有的工作都会被阻塞在那次请求应答之后。这就是“队头阻塞”,它会阻碍网络传输和Web页面渲染,直至失去响应

http1.1 流水线(pipline)问题:因为返回的时候是会阻塞的(队头堵塞),并且指定不了优先级,谁先到达,谁先返回,顺序绝对不能乱。另一个pipeline限制是,只能是幂等请求(get、head等)才能应用

虽然http1.1有长连接的功能,但长连接使用过多也给服务端带来了更大的性能压力,特别是对于一些图片类视频类等资源型的服务器,如果长期保持长连接他是没必要的,但给服务器是大的性能浪费

http2.0

http2 多路复用允许单一的 HTTP/2 连接同时发起多重的请求-响应消息

多路复用(多路传输),能同时处理多个消息的请求和响应; 甚至可以在传输过程中将一个消息跟另外一个掺杂在一起。所以客户端只需要一个连接就能加载一个页面。

http1 状态行和头部却没有经过任何压缩,直接以纯文本传输

头部压缩 需要在支持 HTTP/2 的浏览器和服务端之间

https://blog.csdn.net/mxw2552261/article/details/78898909

node中配置开启http2

http://t.zoukankan.com/lydialee-p-9167781.html

http3.0

http3.0区别: 1.将帧的概念下移到了QUIC层 。QUIC特点:TCP 3次握手是1 RTT , 第三次握手才正式开始传输数据 2.不使用tcp协议,使用udp协议(这么说不准确,其实是使用了QUIC协议)

https://blog.csdn.net/Squid87/article/details/124407454

由于当下http3.0还是正式推出,Nginx当前最新版本也不支持配置,所以如果要自己在自己的网站上使用http3.0还是很麻烦的,还得自己编译一个nginx内核。

https://m.yisu.com/zixun/506316.html

体验感受一下http3.0请求,只需在最新版本的chrome浏览器,然后给它开启 QUIC 特性即可

https://cloud.tencent.com/developer/article/2016600

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值