美文网首页
Http2简单解析-帧格式(三)

Http2简单解析-帧格式(三)

作者: 百花鱼藤 | 来源:发表于2018-03-05 10:20 被阅读0次

     Data帧

          DATA类型的帧包含的字节长度不定。换言之,这些帧包含了请求和发送的对象。如果超出帧容许的最大长度,资源数据会被切分到一个或者多个帧里面去。Data帧结构

    Data帧结构

    HEADERS帧

    HEADER帧用以创建流,并向另一端发送消息首部。

    HEADERS帧结构 HEADERS帧字段 HEADERS帧标识位

    PRIORITY帧

      发送PRIORITY帧是为了标识流的优先级。它可以多次发送,后面指定的优先级会覆盖之前的。

    PRIORITY帧

    RST_STREAM帧

      如果要终止一个流,可以将RST_STREAM加在该流的两端。这通常是为了处理某种错误。帧里的Error Code(错误码)字段用来标注重置的原因。

    RST_STREAM帧

    SETTINGS帧

    SETTINGS帧包含了若干有序的键/值对2。键/值对的数量等于帧长度除以单组设置的长度。动态表的最大字节数由 SETTINGS_HEADER_TABLE_SIZE 来控制

    SETTINGS帧

    PUSH_PROMISE帧

    服务端发送PUSH_PROMISE帧来告诉客户端,它将发送一份客户端尚未明确请求的资源。PUSH_PROMISE帧实际上是对客户端发送的HEADERS帧的补充。

    PUSH_PROMISE帧 PUSH_PROMISE帧标识

    PING帧

    PING帧用以计算两端之间的往返时间。此帧有一个标识位ACK(0x1)。如果一端收到一个不带ACK的PING帧,它就必须返回一个PING帧,这个帧必须设置ACK标识,并且包含同样的数据内容(Opaque Data)。需要注意的是,PING帧不属于任何一个流(它们是连接层的),因此它们的流ID要设置为0x0。

    PING帧

    GOAWAY帧

    GOAWAY帧用以礼貌地关闭连接。这是连接层的帧,并且发送时流ID要设置为0x0。通过发送GOAWAY帧,当前端可以清晰地告诉接收端,它接收到了什么、未接收到什么,以及什么原因(如果有的话)导致了GOAWAY。并且Last Stream ID(最后一个流ID)会被设置为曾经处理过的最大的流ID。如果没有错误发生,而当前端要断开连接(浏览器标签页关闭以及连接超时等情况),那就发NO_ERROR(0x0)这个错误码,并且Last Stream ID被设置为231-1。

    GOAWAY帧 GOAWAY帧字段

     WINDOW_UPDATE帧

    WINDOW_UPDATE帧用来做流量控制——发送方发送WINDOW_UPDATE帧,告诉接收方自己此时期望接收多少字节。流量控制可以应用到单个的流,也可以应用到连接承载的所有流(流ID为0x0)。需要注意的是,在单个流上指定的WINDOW_UPDATE帧也会作用于连接层的流量控制。

    WINDOW_UPDATE帧字段

    CONTINUATION帧

    CONTINUATION帧包含之前的HEADERS、PUSH_PROMISE,或者CONTINUATION帧的附加首部。

    CONTINUATION帧 CONTINUATION帧字段 CONTINUATION帧标识位

    相关文章

      网友评论

          本文标题:Http2简单解析-帧格式(三)

          本文链接:https://www.haomeiwen.com/subject/joiffftx.html