热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

HTTP/2HEADERS和DATA帧

如何解决《HTTP/2HEADERS和DATA帧》经验,为你挑选了1个好方法。

我正在尝试详细了解HTTP/2.我读了这篇关于流,消息和框架的文章:https://hpbn.co/http2/#streams-messages-and-frames.我不知道我的概念是否正确.

我得出以下结论:

消息是HEADER帧和一个或多个DATA帧的组合.

DATA帧只能与HEADERS帧一起发送,因为我没有看到任何显示DATA帧流ID的指标(RFC 7540,6.1)

如果是这样,则只能在消息中发送数据帧

Stream可以分块为多个Frame,而Stream可以通过Stream ID与Stream相关联

此外:规范中如何表示消息?



1> sbordet..:

你有一些错误的东西.

消息是一个或两者的组合中HEADER的帧(携带HTTP头),零个或多个数据帧和一个可选的终端HEADER帧(携带HTTP拖车).您可以查看RFC 7540本节中的示例.100 Continue响应有一个特殊情况,可以从两个HEADERS而不是一个开始.在下文中我们可以忽略这种情况.

DATA确实有一个流ID,因为所有帧共享中定义的帧报头RFC 7540的这个部分.6.1节中描述的仅是DATA框架的主体.

消息是HTTP/2流的一半.消息表示HTTP请求或HTTP响应.

HTTP/2流是请求消息和响应消息的组合.请注意,这不应与flag_end_stream任何一个对等体发送给该特定流的最后一帧的信号相混淆.

GET然后,浏览器执行的典型请求将具有(假设流ID为13):

一个HEADERS帧与ID = 13,flag_end_headers=trueflag_end_stream=true(一个GET请求通常具有不体)

对该GET请求的典型响应将具有:

HEADERS帧ID = 13和flag_end_headers=true

一个或多个DATA帧,ID = 13; 最后一DATA帧将有flag_end_stream=true.

注意,由于多路复用,帧可以交错; 这意味着,如果您有两个并发响应(例如,对于流13和流15),您可以使用以下序列:

HEADERS(13) HEADERS(15) DATA(15) DATA(13) DATA(13] DATA(15) DATA(15]

括号]表示它是流中的最后一帧.


推荐阅读
author-avatar
多米音乐_35782132
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有