前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HTTP1.0、HTTP1.1 、HTTP2.0和HTTP3.0 的区别【面试题】

HTTP1.0、HTTP1.1 、HTTP2.0和HTTP3.0 的区别【面试题】

作者头像
CBeann
发布2023-12-25 19:22:52
3070
发布2023-12-25 19:22:52
举报
文章被收录于专栏:CBeann的博客CBeann的博客

1 请你说一下HTTP1.0、HTTP1.1 HTTP2.0和HTTP3.0 的区别

1.1 HTTP1.0

  • HTTP/1.0仅定义了16种状态码
  • HTTP1.0默认是短连接,即每个HTTP请求都要使用TCP协议通过三次握手和四次挥手实现,每次建立TCP连接是十分消耗资源的。
  • HTTP/1.0提供的缓存机制非常简单。在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准。

1.2 HTTP1.1

  • HTTP1.1默认是长连接。在HTTP1.1中默认开启Connection: keep-alive,一定程度上弥补了HTTP1.0每次请求都要创建连接的缺点。
  • 缓存处理。HTTP1.1则引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。
  • 断点续传。HTTP1.1则在请求头引入了range头域,它允许只请求资源的某个部分,即返回码是206(Partial Content),这样就方便了开发者自由的选择以便于充分利用带宽和连接。
  • HTTP/1.1增加了多种状态码。在HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。
  • Host头处理。在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname)。但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。HTTP1.1的请求消息和响应消息都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误(400 Bad Request)。

1.3 HTTP2.0

1.3.1 header压缩

HTTP1.x的header带有大量信息,而且每次都要重复发送,HTTP2.0使用encoder来减少需要传输的header大小,通讯双方各自cache一份header fields表,既避免了重复header的传输,又减小了需要传输的大小。

1.3.2 多路复用与新的二进制帧格式

在HTTP1.1中是默认开启了Keep-Alive,他解决了多次连接的问题,但是依然有两个效率上的问题:

  • HTTP1.1客户端串行化处理,当请求a文件时,b文件只能等待,等待a连接到服务器、服务器处理文件、服务器返回文件,这三个步骤。即虽然共用TCP连接,但是请求是串行的,第二个请求只有子啊第一个请求结束后才能发送。
  • 浏览器和服务器建立TCP的连接有上限(google浏览器默认是6),所以当有7个请求同时访问时,最后一个请求会等待。

HTTP2.0使用了多路复用的技术,做到同一个连接并发处理多个请求,而且并发请求的数量比HTTP1.1大了好几个数量级。既然大家同时共用TCP连接,那么怎么区分不同的请求呢? 把请求在应用层切分成二进制帧并标上序号,服务器接收到二进制帧后组装成请求进行处理,从而达到并发发送请求的效果。而对于服务器端,响应可以通过序号确定是哪个请求,从而不会出现混乱的问题。

在这里插入图片描述
在这里插入图片描述
1.3.3服务器推送

服务端推送是一种在客户端请求之前发送数据的机制。网页使用了许多资源:HTML、样式表、脚本、图片等等。在HTTP1.1中这些资源每一个都必须明确地请求。这是一个很慢的过程。浏览器从获取HTML开始,然后在它解析和评估页面的时候,增量地获取更多的资源。因为服务器必须等待浏览器做每一个请求,网络经常是空闲的和未充分使用的。 为了改善延迟,HTTP2.0引入了server push,它允许服务端推送资源给浏览器,在浏览器明确地请求之前,免得客户端再次创建连接发送请求到服务器端获取。这样客户端可以直接从本地加载这些资源,不用再通过网络。

在这里插入图片描述
在这里插入图片描述

1.4 HTTP3.0(QUIC)

QUIC (Quick UDP Internet Connections), 快速 UDP 互联网连接。 QUIC是基于UDP协议的。

  • 线头阻塞(HOL)问题的解决更为彻底: 基于TCP的HTTP/2,尽管从逻辑上来说,不同的流之间相互独立,不会相互影响,但在实际传输方面,数据还是要一帧一帧的发送和接收,一旦某一个流的数据有丢包,则同样会阻塞在它之后传输的流数据传输。而基于UDP的QUIC协议则可以更为彻底地解决这样的问题,让不同的流之间真正的实现相互独立传输,互不干扰。
  • 切换网络时的连接保持: 当前移动端的应用环境,用户的网络可能会经常切换,比如从办公室或家里出门,WiFi断开,网络切换为3G或4G。基于TCP的协议,由于切换网络之后,IP会改变,因而之前的连接不可能继续保持。而基于UDP的QUIC协议,则可以内建与TCP中不同的连接标识方法,从而在网络完成切换之后,恢复之前与服务器的连接。

总结:基于UDP和应用层实现了TCP协议。

2 参考

HTTP1.0、HTTP1.1 和 HTTP2.0 的区别-掘金 浅析HTTP/2的多路复用 HTTP1.0和HTTP1.1和HTTP2.0的区别-csdn HTTP1.0、HTTP2.0、HTTP 3.0及HTTPS简要介绍

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-03-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 请你说一下HTTP1.0、HTTP1.1 HTTP2.0和HTTP3.0 的区别
    • 1.1 HTTP1.0
      • 1.2 HTTP1.1
        • 1.3 HTTP2.0
          • 1.3.1 header压缩
          • 1.3.2 多路复用与新的二进制帧格式
          • 1.3.3服务器推送
        • 1.4 HTTP3.0(QUIC)
        • 2 参考
        相关产品与服务
        轻量应用服务器
        轻量应用服务器(TencentCloud Lighthouse)是新一代开箱即用、面向轻量应用场景的云服务器产品,助力中小企业和开发者便捷高效的在云端构建网站、Web应用、小程序/小游戏、游戏服、电商应用、云盘/图床和开发测试环境,相比普通云服务器更加简单易用且更贴近应用,以套餐形式整体售卖云资源并提供高带宽流量包,将热门软件打包实现一键构建应用,提供极简上云体验。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档