
HTTP/2
文章平均质量分 79
jianfyun
在知识的海洋里,我们看起来都是好奇的小屁孩。
展开
-
(三) HTTP/2的帧
HTTP/2的连接建立之后,两个端点之间就可以开始交换“帧”了。帧的格式 +-----------------------------------------------+ | Length (24) | +---------------+---------------+---------------+ | Type (8原创 2015-08-26 19:08:57 · 1891 阅读 · 0 评论 -
(十一) HTTP/2的其它要求和注意事项
连接管理HTTP/2的连接是持久的。为了达到最佳性能,客户端不应该关闭连接,直到它确定不再需要与服务端进行通信了(例如,用户从一个特定的网页离开)或者服务端关闭了连接。对于一个给点的主机名和端口对,客户端不应该打开超过一个的HTTP/2连接,其中,主机名源自URI(一种替代服务)或者一个配置的代理。客户端可以创建额外的连接作为替代,用于替代即将耗尽的可用流标识符空间的流,或者为一个TLS连接刷新密钥原创 2016-01-06 15:11:49 · 5132 阅读 · 0 评论 -
(十) HTTP/2的消息交换
HTTP/2的目的是尽可能地兼容目前正在使用的HTTP协议。这意味着,从应用的角度来看,协议的大部分特性并没有改变。为了实现这个目标,所有请求和响应的语义都被保留,尽管表达这些语义的语法已经变化。因此,HTTP1.1协议中“语义和内容”、“有条件的请求”、“范围请求”、“缓存”和“认证”等规范和要求同样适用于HTTP/2。对于HTTP1.1“消息语法”和“路由”的选定部分,例如HTTP和HTT原创 2015-10-29 18:20:26 · 2610 阅读 · 0 评论 -
(四) HTTP/2的流状态
“流”是HTTP/2连接中客户端和服务端之间交换的独立的、双向的帧序列。流具有以下几个重要特性:一个单独的HTTP/2连接能够包含多个同时打开的流,流的两个端点从多个流中交叉存取帧。流可以被客户端或服务端单方面建立和使用,也可以被客户端和服务端共享。流可以被任意一端关闭。帧在流上发送的顺序很重要。接收方按照收到帧的顺序处理帧。特别地,HEADER和DATA帧的顺序在语义上是重要的。流以一个原创 2015-08-27 20:12:18 · 3967 阅读 · 2 评论 -
(八) HTTP/2的各种帧定义
HTTP/2定义了多种帧的类型,每种类型都有一个唯一的8字节类型编码。在整个TCP连接或者是各个独立的流的建立和管理过程中,每种类型的帧都为特定的目的而服务。DATA帧DATA帧(数据帧,类型是0x0)传输与流相关联的任意的、可变长度的字节序列。例如,使用一个或多个DATA帧携带HTTP的请求和响应的有效载荷。DATA帧可以包含填充字节序列。填充可以被添加到DATA帧,以掩盖消息的大小。因此,填充属原创 2015-10-01 16:37:47 · 5383 阅读 · 2 评论 -
(九) HTTP/2的错误码定义
HTTP/2的错误码是32比特位的字段,用在RST_STREAM帧和GOAWAY帧中传递流错误或连接错误的原因。所有错误码共享一个相同的错误码空间。一些错误码只适用于流或者整个连接,在其它上下文环境中没有预定义的语义。定义了以下错误码:NO_ERROR (0x0,没有错误):关联的条件不是错误的结果。例如,GOAWAY帧可以包含此错误码,表明优雅地关闭连接。PROTOCOL_ERROR (0x1原创 2015-10-02 16:35:36 · 5724 阅读 · 0 评论 -
(七) HTTP/2流的错误处理
HTTP/2的帧允许两类错误:使整个连接不可用的错误情况是“连接错误”; 在一个单独的流内部的错误是“流错误”。连接错误处理连接错误是指任何阻止帧层进一步处理或者破坏任何连接状态的错误。遇到连接错误的端点应该首先发送一个GOAWAY帧,带有成功从对端接收到的最后一个流的流标识符。GOAWAY帧包含一个说明为什么终止连接的错误码。发送完这个GOAWAY帧之后,端点必须关闭TCP连接。有可能GOA原创 2015-09-09 15:39:18 · 2093 阅读 · 0 评论 -
(六) HTTP/2流的优先级
客户端可以通过在打开流的HEADERS帧中包含优先次序信息来为一个新流指定优先级。在其它任意时间,可以使用PRIORITY帧来改变流的优先级。优先次序的目的是允许端点表达希望对端在管理并发流的时候如何分配资源。更重要的是,当发送能力受限的时候,优先级能够用来选择流发送帧。通过让流依赖其它流的完成,可以为流排列优先级。每个依赖都被分配了一个相对权重,即一个用来决定分配给依赖相同流的各个流的可用资源相对原创 2015-09-09 12:42:44 · 3843 阅读 · 0 评论 -
(二) HTTP/2起步
与HTTP1.x一样,HTTP/2仍然是建立在TCP连接之上的应用层协议,请求由客户端发起,并且,URI的基本规则保持不变。HTTP/2的版本标识对应URI中的http或https,HTTP/2有2个版本标识:“h2”对应以”https”开头的URI,表示HTTP/2是运行在TLS之上的,由TLS提供认证和加密等安全保障;“h2c”对应以”http”开头的URI,表示HTTP/2是运行在明文TC原创 2015-08-26 16:54:14 · 1649 阅读 · 0 评论 -
(五) HTTP/2的流量控制
HTTP/2利用流来实现多路复用,这引入了对TCP连接的使用争夺,会造成流被阻塞。流量控制方案确保在同一连接上的多个流之间不会造成破坏性的干扰。流量控制会用于各个独立的流,也会用于整个连接。HTTP/2通过使用WINDOW_UPDATE帧来进行流量控制。流量控制的原则HTTP/2“流”的流量控制的目标是:在不改变协议的情况下允许使用多种流量控制算法。HTTP/2的流量控制具有以下特原创 2015-08-28 19:04:24 · 4638 阅读 · 0 评论 -
(一) 初识HTTP/2
HTTP/2是HTTP协议家族的新成员,按照IETF的HTTP Working Group的规划,它将取代“历史悠久”的HTTP1.1协议。为什么修改HTTP呢?HTTP协议的上一个版本是HTTP1.1,在它“服役”超过16年的今天,Web的世界已经发生了巨大的变化。现在,浏览器打开一个新网页,下载的内容不仅仅包含一个HTML文件和少数资源文件了。实际情况可能是,浏览器发起了数十次,甚至数百次HTT原创 2016-01-07 17:46:28 · 1494 阅读 · 0 评论