美文网首页
HTTP1,2,3的一些特性

HTTP1,2,3的一些特性

作者: 风之化身呀 | 来源:发表于2019-11-14 13:09 被阅读0次

HTTP1.1 的问题

最核心的问题,在于带宽利用率不高,有三个原因:
1、TCP 慢启动机制
2、多个TCP连接之间会抢夺带宽资源,使得关键资源的下载不能得到更多的带宽
3、HTTP 队头阻塞问题(一个TCP连接同一时间只能处理一个请求,也就是串行的。下个请求必须等待上个请求完成才能开始,一旦上个请求被阻塞,下个请求就得跟着阻塞)

HTTP2

针对 HTTP1.1 的问题,HTTP/2 的解决方案可以总结为:一个域名只使用一个 TCP 长连接和消除队头阻塞问题。一个长连接就只会有一次慢启动,也不存在竞争资源(帧中可以指定流的优先级确保关键资源优先传输),也不会有HTTP队头阻塞,都是并行传输的。


HTTP2

该图就是 HTTP/2 最核心、最重要且最具颠覆性的多路复用机制。从图中你会发现每个请求都有一个对应的 ID,如 stream1 表示 index.html 的请求,stream2 表示 foo.css 的请求。这样在浏览器端,就可以随时将请求发送给服务器了。

  • 多路复用
  • 二进制帧
  • 头部压缩
  • 服务端推送

HTTP2 的缺陷

TCP队头阻塞问题,三次握手的网络延迟

HTTP3

基于 UDP 的 QUIC 协议

HTTPS的原理

握手过程

1、浏览器发送加密套件+client-random到服务器
2、服务器返回非对称加密套件+server-randow+数字证书到浏览器
3、浏览器验证数字证书后得到服务器公钥,再用公钥加密一个随机字符串pre-master发给服务器
4、服务器用私钥解密得到pre-master,并返回确认信息给浏览器
5、浏览器和服务器用 client-random+server-random+pre-master三者生成对称加密用的秘钥 master-secret并开始通信

问题1:浏览器如何确认服务器的正确性?
浏览器拿到数字证书后,会对证书上的明文信息加密得到信息摘要A,再用CA的公钥解密数字签名得到信息摘要B,若A=B,则服务器器合法。所以数字证书的关键在于CA用其自己的秘钥加密得到的数字签名

其他

  • 关于 OPTIONS 请求
    作用:获取服务器支持的HTTP请求方法 & 用来检查服务器的性能
    当发生接口跨域时,非简单请求会发生 OPTIONS 请求。简单请求一般满足两个条件
    1、请求方法为 GET,POST,HEAD
    2、请求头仅限于以下几类:
    Accept
    Accept-Language
    Content-Language
    Last-Event-ID
    Content-Type:只限于三个值application/x-www-form-urlencoded、multipart/form-data、text/plain
    不满足这两个条件的都叫非简单请求。所以对于 delete,put 请求一定会发生 OPTIONS 请求,对于请求类型为 application/json 也会发生 OPTIOINS 请求
    和跨域有关的请求头:
    Access-Control-Allow-Origin,Access-Control-Allow-Credentials(是否需要cookie),Access-Control-Allow-Headers
  • TCP 队头阻塞问题
    持久连接keep-alive虽然能减少 TCP 的建立和断开次数,但是它需要等待前面的请求返回之后,才能进行下一次请求。如果 TCP 通道中的某个请求因为某些原因没有及时返回,那么就会阻塞后面的所有请求,这就是著名的队头阻塞的问题。
  • RTT 概念
    我们把从浏览器发送一个数据包到服务器,再从服务器返回数据包到浏览器的整个往返时间称为 RTT
    参考:
    https://www.nihaoshijie.com.cn/index.php/archives/698/

相关文章

网友评论

      本文标题:HTTP1,2,3的一些特性

      本文链接:https://www.haomeiwen.com/subject/gljypxtx.html