专栏首页福大大架构师每日一题2020-08-31:描述HTTP的版本之间的区别,主要是1.0/1.1/2.0三个版本的区别。
原创

2020-08-31:描述HTTP的版本之间的区别,主要是1.0/1.1/2.0三个版本的区别。

福哥答案2020-08-31:

HTTP1.0与HTTP1.1的主要区别

1.长连接

HTTP1.0:需要使用keep-alive参数来告知服务器端要建立一个长连接。

HTTP1.1:默认支持长连接。

2.消息传递

HTTP1.0:允许即使有Body也不用Content-Length,可以用断开连接的方式表示Body结束。

HTTP1.1:要求必须使用Content-Length或者chunk-encode。

3.节约带宽

HTTP1.0:不支持部分发送信息。

HTTP1.1:①支持只发送header信息(不带任何body信息),如果服务器认为客户端有权限请求服务器,则返回100,否则返回401。客户端如果接收到100,才开始把请求body发送到服务器。这样当服务器返回401的时候,客户端就可以不用发送请求body了,节约了带宽。②另外还支持传送内容的一部分。这样当客户端已经有一部分的资源后,只需要跟服务器请求另外的部分资源即可。这是支持文件断点续传的基础。

4.HOST域

HTTP1.0:没有host域。

HTTP1.1:支持这个参数。

5.缓存处理

HTTP1.0:无。

HTTP1.1:添加更多的缓存控制策略(如:Entity tag,If-Match)。ETag头域。Cache-Control头域。Vary头域。

6.错误提示

HTTP1.0:只定义了16个状态响应码,对错误或警告的提示不够具体。

HTTP1.1:引入了一个Warning头域,增加对错误或警告信息的描述。此外,新增了24个状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。

HTTP1.1与HTTP2.0的主要区别

1.多路复用

HTTP1.1:可以多建立几个TCP连接,来支持处理更多并发的请求,但是创建TCP连接本身也是有开销的。

HTTP2.0:使用了多路复用的技术,做到同一个连接并发处理多个请求,而且并发请求的数量比HTTP1.1大了好几个数量级。

TCP连接有一个预热和保护的过程,先检查数据是否传送成功,一旦成功过,则慢慢加大传输速度。因此对应瞬时并发的连接,服务器的响应就会变慢。所以最好能使用一个建立好的连接,并且这个连接可以支持瞬时并发的请求。

2.二进制分帧

HTTP1.1:无。

HTTP2.0:应用层(HTTP/2)和传输层(TCP or UDP)之间增加一个二进制分帧层。

3.首部压缩

HTTP1.1:不支持header数据的压缩。

HTTP2.0:使用HPACK算法对header的数据进行压缩,这样数据体积小了,在网络上传输就会更快。

4.服务器推送

HTTP1.1:Server Push 让HTTP1.x时代使用内嵌资源的优化手段变得没有意义。

HTTP2.0:服务器可以对客户端的一个请求发送多个响应。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 2020-09-24:jvm监控系统是通过jmx做的么?

    [此答案来自知乎:](https://www.zhihu.com/question/422632973)

    福大大架构师每日一题
  • 2020-09-08:KVM和OpenStack的区别?

    [此答案来自知乎](https://www.zhihu.com/question/419987391)

    福大大架构师每日一题
  • 2020-08-23:描述HTTPS和HTTP的区别。

    [评论](https://user.qzone.qq.com/3182319461/blog/1598139756)

    福大大架构师每日一题
  • HTTP1.0、HTTP1.1和HTTP2.0的区别

    早在HTTP建立之初,主要就是为了将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。也是说对于前端来说,我们所写的HTML页面将要放在我们的w...

    Anymarvel
  • Head First Android Toolbar

    上一节我们介绍了ActionBar的使用,这一节我们介绍ActionBar 的替代者——Toolbar,看看它有多大的能耐!

    宅男潇涧
  • Linux/Unix 藏文件和文件夹

    Linux/Unix 下想藏 Webshell 或者后门什么的,可以利用一下隐藏文件夹和文件。

    周俊辉
  • Linux下手动编译安装PHP扩展的例子分享

    这篇文章主要介绍了Linux下手动编译安装PHP扩展的例子分享,本文以PDO_MYSQL为例,讲解手动编译安装PHP扩展的方法,需要的朋友可以参考下

    习惯说一说
  • 提交 BookReader Framework 到 CocoaPodsBookReaderCocoaPods

    https://github.com/kishikawakatsumi/BookReader

    iOSDevLog
  • Java进阶路线

    Linux系统常用诊断工具(uptime、dmesg、vmstat、mpstat、free、sar、top)

    Java学习录
  • Mantis2.16.0在CnetOS7上的安装配置

    解压到目录:/home/mantis/mantisbt-2.16.0 tar xf mantisbt-2.16.0.tar.gz -C /home/manti...

    飞狗

扫码关注云+社区

领取腾讯云代金券