-
Notifications
You must be signed in to change notification settings - Fork 3.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
第 117 题:介绍下 http1.0、1.1、2.0 协议的区别? #232
Comments
http 1.0 构建可扩展 小白只知道这些了 |
http1.0 exprires last-modified 连接无法复用 |
HTTP/0.9已过时。只接受GET一种请求方法,没有在通讯中指定版本号,且不支持请求头。由于该版本不支持POST方法,因此客户端无法向服务器传递太多信息。 HTTP/1.0这是第一个在通讯中指定版本号的HTTP协议版本,至今仍被广泛采用,特别是在代理服务器中。 HTTP/1.1持久连接被默认采用,并能很好地配合代理服务器工作。还支持以管道方式在同时发送多个请求,以便降低线路负载,提高传输速度。
HTTP/2在 HTTP/2 的第一版草案(对 SPDY 协议的复刻)中,新增的性能改进不仅包括HTTP/1.1中已有的多路复用,修复队头阻塞问题,允许设置设定请求优先级,还包含了一个头部压缩算法(HPACK)[15][16]。此外, HTTP/2 采用了二进制而非明文来打包、传输客户端—服务器间的数据。[12] 帧、消息、流和TCP连接有别于HTTP/1.1在连接中的明文请求,HTTP/2与SPDY一样,将一个TCP连接分为若干个流(Stream),每个流中可以传输若干消息(Message),每个消息由若干最小的二进制帧(Frame)组成。[12]这也是HTTP/1.1与HTTP/2最大的区别所在。 HTTP/2中,每个用户的操作行为被分配了一个流编号(stream ID),这意味着用户与服务端之间创建了一个TCP通道;协议将每个请求分割为二进制的控制帧与数据帧部分,以便解析。这个举措在SPDY中的实践表明,相比HTTP/1.1,新页面加载可以加快11.81% 到 47.7%[17] HPACK 算法HPACK算法是新引入HTTP/2的一个算法,用于对HTTP头部做压缩。其原理在于: 客户端与服务端根据 RFC 7541 的附录A,维护一份共同的静态字典(Static Table),其中包含了常见头部名及常见头部名称与值的组合的代码; 服务器推送网站为了使请求数减少,通常采用对页面上的图片、脚本进行极简化处理。但是,这一举措十分不方便,也不高效,依然需要诸多HTTP链接来加载页面和页面资源。 HTTP/2引入了服务器推送,即服务端向客户端发送比客户端请求更多的数据。这允许服务器直接提供浏览器渲染页面所需资源,而无须浏览器在收到、解析页面后再提起一轮请求,节约了加载时间。 |
http1.0 http1.1 http2.0 就当每天做面试题了 每天巩固提升一下 如果有面试标准答案请告诉我 /笑哭 |
http1.0 了解有限 劳烦大神指点 |
这道题,真是一点都不知道啊!学习了! |
HTTP/1.0 – 构建可扩展性HTTP/1.1 – 标准化的协议
HTTP/2
HTTP/2在HTTP/1.1有几处基本的不同:
|
|
http/1 :
http 1.1 :
http/2 :
|
HTTP1.0和HTTP1.1的一些区别: 1、缓存处理,在HTTP1.0中,使用 HTTP2.0 和HTTP1.X的区别: 1、新的二进制格式(Binary Format),HTTP1.x的解析是基于文本。基于文本协议的格式解析存在天然缺陷,文本的表现形式有多样性,要做到健壮性考虑的场景必然很多,二进制则不同,只认0和1的组合。基于这种考虑HTTP2.0的协议解析决定采用二进制格式,实现方便且健壮。 2、多路复用(MultiPlexing),即连接共享,即每一个request都是是用作连接共享机制的。一个request对应一个id,这样一个连接上可以有多个request,每个连接的request可以随机的混杂在一起,接收方可以根据request的 id将request再归属到各自不同的服务端请求里面。 3、header压缩,如上文中所言,对前面提到过HTTP1.x的header带有大量信息,而且每次都要重复发送,HTTP2.0使用encoder来减少需要传输的header大小,通讯双方各自cache一份header fields表,既避免了重复header的传输,又减小了需要传输的大小。 4、服务端推送(server push),同SPDY一样,HTTP2.0也具有server push功能。 |
原文地址:http1.0 http1.1 http2.0特性及区别 http1.0 http1.1 http2.0特性及区别http1.0特性
无状态对于无状态的特性可以借助cookie/session机制来做身份认证和状态记录 无连接无连接导致的性能缺陷有两种: 1. 无法复用连接 2. 队头阻塞 http1.1特性为了解决http1.0的性能缺陷,http1.1出现了 http1.1特性:
长连接http1.1默认保持长连接,数据传输完成保持tcp连接不断开,继续用这个通道传输数据 管道化基于长连接的基础,我们先看没有管道化请求响应: tcp没有断开,用的同一个通道
管道化的请求响应:
即使服务器先准备好响应2,也是按照请求顺序先返回响应1 虽然管道化,可以一次发送多个请求,但是响应仍是顺序返回,仍然无法解决队头阻塞的问题 缓存处理当浏览器请求资源时,先看是否有缓存的资源,如果有缓存,直接取,不会再发请求,如果没有缓存,则发送请求 通过设置字段cache-control来控制 断点传输在上传/下载资源时,如果资源过大,将其分割为多个部分,分别上传/下载,如果遇到网络故障,可以从已经上传/下载好的地方继续请求,不用从头开始,提高效率 在 Header 里两个参数实现的,客户端发请求时对应的是 Range 服务器端响应时对应的是 Content-Range http2.0特性
二进制分帧将所有传输的信息分割为更小的消息和帧,并对它们采用二进制格式的编码 多路复用基于二进制分帧,在同一域名下所有访问都是从同一个tcp连接中走,http消息被分解为独立的帧,乱序发送,服务端根据标识符和首部将消息重新组装起来 区别
|
http1.0不支持持久连接 |
HTTP1.0与HTTP1.1 长连接 host域 HTTP1.x与HTTP2.0 |
http1.0:无状态,无连接,默认不支持长连接(需要设置keep-alive参数指定),连接无法复用,不支持断点续传。 |
http1.0 http1.1: http2: |
那就把HTTP0.9一起写了吧:
|
HTTP-1.0
HTTP-1.1
HTTP-2.0
|
No description provided.
The text was updated successfully, but these errors were encountered: