关于HTTP/2中END_STREAM标志帧与Trailers帧的技术问询
HTTP/2 相关问题解答
先收到带END_STREAM标志的Data帧后,还能收到Trailers帧吗?
不行。HTTP/2的规则里明确:只要某帧(不管是Data还是Headers帧)设置了END_STREAM标志,就代表该流的发送方向已经终止,发送方不能再向这个流发送任何后续帧。所以如果先收到带END_STREAM的Data帧,后续不可能再收到同流的Trailers帧——发送方在发送那个Data帧时就已经终结了流,没机会再发Trailers了。
带END_STREAM标志的帧是否意味着不会再发送其他帧?
没错。END_STREAM的核心作用就是标记流的发送端结束。一旦发送方在某帧上设置了这个标志,它就不能再向该流发送任何其他帧。接收方看到这个标志后,就可以确定这个流不会再有来自发送方的新帧了。
Trailers帧(本质是Headers帧)必须设置END_STREAM标志吗?
是的。Trailers是用来传输响应尾部元数据的特殊Headers帧,它只能作为流的最后一帧发送,因此必须设置END_STREAM标志。Trailers本身就是流的收尾环节,发送完毕后流就彻底结束,不会有后续帧了。
内容的提问来源于stack exchange,提问作者Ohad
相关产品推荐
相关产品推荐

