HTTP0.9/1.0/1.1/2.0/3.0的区别和发展历程

HTTP0.9

        HTTP0.9是HTTP最早的版本,最开始的需求只是用来传输体积很小html文件,一个Get index.html就可以了,所以它有以下特点:

  • 只有一个请求行,没有请求头和请求体

  • 服务器也没有返回头信息,只需要返回数据就可以了

  • 以ASCII字符流进行传输

HTTP1.0

        随着时代的发展,简单的html网页已经无法满足人们的需求,所以HTTP升级了1.0版本,有以下特点:

  • 为了支持多类型文件下载,需要有文件编码、类型等信息,于是多加了请求头和响应头

  • 为了方便服务器统计客服端的信息,如windows系统用户数,加入了用户代理字段

  • 为了减轻服务器压力,提供了cache机制,缓存下载过的数据

  • 引入了状态码,告诉浏览器最终请求结果

HTTP1.1

        很快HTTP1.0也不能满足需求了,所以又做了大量的更新。

改进:

  • 改进持久连接,同一域名默认允许同时建立6个TCP连接 Connection: keep-alive

  • 虚拟主机技术发展,同一主机可以绑定多个域名,用host字段做不同处理,CDN实现域名分片机制,每个域名可以维护6个连接。

  • 动态生成技术发展,引进Chunk transfers机制,客户端不需要知道数据大小,每个数据块发送时会附上上个数据块的长度,最后使用一个零长度的块作为发送数据完成的标志。

  • 引入Cookie、同源策略等安全机制

不足:带宽利用率不高(核心问题)

  • 尝试用管线化技术解决队头阻塞问题(TCP通道请求未及时回复导致管道阻塞),但最终放弃

  • TCP慢启动,为了减少网络拥塞的一种策略,但对小文件传输而言效率太低

  • 容易受到Dos攻击

HTTP2.0

        HTTP2.0主要对HTTP1.1的慢启动问题和队头阻塞问题做出优化

  • 一个域名只使用一个TCP长链接,这样就只需要一次慢启动,同时也避免多个TCP竞争带宽

  • 多路复用技术解队头阻塞问题

        HTTP2.0实现多路复用的原理是在HTTP请求之后添加了一个二进制分帧层,将数据切成一个个带ID的帧,再通过底层传输。

        HTTP2.0相对于HTTP1.1改变的只是传输方式而已,在语义上是一样的,所以对于我们开发者来说使用起来不需要做出什么改变,对于HTTP2.0推广更加轻松。

HTTP2.0还有一些其他新加的特性:

  • 可以设置请求的优先级,对于一些优先级较高的资源可以优先处理

  • 服务器推送功能,比方当请求HTML文件时,服务器直接将对应CSS、JavaScript文件推送过去

  • 支持对请求头、响应头进行压缩

HTTP3.0

        HTTP2.0看似完美解决了TCP的队头阻塞问题,但对于TCP传输的过程的问题来说,却是无可奈何。

        你们是否还记得滑动窗口这个东西?如果单个数据包丢失,会导致滑动窗口停止,这种现象成为TCP上的队头阻塞。所以随着丢包率的增加,HTTP2.0效率也越来越差,当丢包率大于2%时,效率反而不如建立多个连接的HTTP1.0。

        我们是不是可以升级下TCP协议的版本呢?很难,互联网大量中间设备依赖一些很少更新的软件,像路由器、交换机、防火墙等,都使用了大量的TCP特性。而且TCP协议是通过操作系统的内核来实现的,所以想要更新TCP这种底层协议,需要软件、硬件大换血,十分困难。

        升级困难,发明一个新的传输协议同样也是面临这些问题,所以HTTP3.0大胆的舍弃了TCP协议,基于UDP协议来实现TCP多路复用、传输可靠等功能,这套功能称为QUIC协议。

 缺点:

  • 目前操作系统对UDP协议的优化远不如TCP

  • 网络硬件方面,对UDP的优化程度也远低于TCP

我相信,随着时间的推移和技术的发展,HTTP3.0也会逐渐站上历史的舞台。

参考资料:

        浏览器执行原理:https://time.geekbang.org/column/intro/100033601

        计算机网络(第7版) 谢希仁著

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值