HTTP发展史

HTTP0.9 只有get方法,没有请求头响应头状态码 只能发送html内容;
HTTP1.0 增加了请求头响应头状态码 增加了POST方法;支持了其他内容的传输;但是,还是有一些缺点 比如说 连接无法重复使用啊,下一个请求必须等前一个请求返回后才可以发送;
HTTP1.1主要就是解决这些问题(当前主要是使用这个):1HTTP1.1增加了keep-Alive 可以实现HTTP连接的复用;2.使用了管线化 多个请求可以一起发送 3 : 增加了更多的缓冲策略 4 Host头处理 之前的1.0是没有主机名的 但是一个IP可能会有多个虚拟机 为了解决这个问题增加了HOST;
但是:HTTP1.1也是有自己的缺点的 比如说不安全,Header数据过多影响效率 会建立多个TCP请求;为此提出了HTTP2.0 它在传输层和网络层之间增加了一个二进制分帧层,将首部信息封装到Header 将请求体封装到Data中, 2 同一个域名信息都在一个tcp中进行传输3.当首部信息不变时,不在请求和发送。 但是HTTP2.0也是有缺点的 由于他是基于TCP 并且只有一个TCP当出现丢包时,就需要整个TCP进行等待重传 于是 HTTP3.0 出现了 他是基于UDP协议的QUIC 1.也是一个域名下一个QUIC并且也可以支持多个Stream来进行传输 ,当中间一个没有收到时,比如说Stream2 没收到时 不会影响后面的流 只要重传Stream2即可;2.所有Stream都经过加密 3.TCP连接是基于四元组的 但是OUIC是基于一个ID号的,也就是说 比如我IP 端口换了 但是ID没变就不会要重新建立连接;

补充http1.1和2.0的区别

http1.1 如果,是串行请求的话,那么,确实是复用一个http请求的;
但是,如果是并行请求的话,那么,,会建立多个连接,规定浏览器对一个域名,最多同时可以建立6个连接。
下面探讨一下,http1.1中的问题,以及http2.0是如何进行升级的;

  1. 在keep-alive中,TCP确实是可以进行复用的,但是,必须等待上一个请求完毕,就是一个请求发过去,然后,再收到回复;才可以复用这个TCP,发送下一个请求,所以,会收到前面请求的阻塞
  2. 如果使用管道,确实可以同时发送多个请求,但是,请求响应的顺序必须和请求发送的顺序一致,所以,如果这个期间有某个响应延迟了,那么,后面的响应就算完成了,也要等阻塞的请求响应先返回 这就是线头阻塞
    http2.0是如何解决这个问题的呢?
    http2.0 的传输时基于二进制帧的,每个TCP连接中,都有多个双向流通的流,每个流都有独一无二的标识和优先级,而流就是由二进制帧组成的。二进制帧的头部会标识自己是属于哪一个流的,所以,这些流可以交错传输,在接受端根据帧头组成完整的信息,这就解决了线头阻塞的问题,也提高了网络的利用率。
    http2.0 压缩头部
    如果,一个页面有100个请求 一个页面是有很多请求的,而每一个请求的头部可能到达1k 因为有cookie 那这样只是头部的传输就会达到100kb http2.0 可以维护一个头部字典,可以差异化更新头部,大大减少因头部传输产生的流量。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值