gpt4 book ai didi

http2 - 分块下载在 http/2 中是如何工作的(或者更好的是什么是等效的?)

转载 作者:行者123 更新时间:2023-12-04 17:59:23 25 4
gpt4 key购买 nike

在分块下载中,每个 block 都有扩展,可以在浏览器中使用。如果我们流式传输一个大文件,最后一个 block 还可以包含定义诸如内容长度之类的可选 header ,我们可以在最后以 http header 的形式提供该信息。

这在 http/2 中是如何工作的?最后一 block 中是否有扩展名或标题。我看到有数据有效负载,但没有扩展名,也没有可选 header AFAICT。我只看到填充。

也许一个更好的问题是浏览器是否可以

  1. 利用最后一个 block 中的可选 header ?
  2. 在每个 block 中利用扩展?

也许程序可能会关心,但如果它是一个程序,我相信 http/2,服务器可能只是更好地定义了 api,并可能在发送响应+数据后使用推送机制?

如果我是为客户端定义 api 的服务器,那么在这个新的 http/2 世界中如何发送可选 header ?

我试图使用 wireshark 来捕获下载跟踪,但 chrome 似乎使用 QUICK,并且当我使用 firefox 和 drive.google.com 下载文件时,我似乎无法使用 wireshark 解密 SSL 这个用例(它在同一跟踪中保持加密状态,我实际上在 TLS 中看到一些 http2 流量用于其他一些服务工作得很好)。使用“(Pre)-Master-Secret 日志文件名”似乎只有一半时间有效,我不太清楚为什么。我最终不得不重新启动一切并重新运行我的案例。

此外,在服务器问候中,h2 是选择的协议(protocol),但是当我过滤到 ip.addr=(server hello google ip) 和 tcp.port=443 时,没有出现 http2 数据包

谢谢,院长

最佳答案

In chunked downloading, there are extensions on each chunk that can be leveraged when coming to a browser. the last chunk can also contain optional headers defining stuff like content-length if we streamed a big file through, we can provide that information at the very end in the form of a http header.

理论上(即标准)你有扩展和在末尾添加非必要(!)标题的可能性。在实践中,这些功能没有被使用。我不知道有任何定义的 block 扩展,这意味着浏览器会简单地忽略它们。并且定义内容长度的示例预告片没有意义,因为使用分块编码应该忽略任何内容长度 header 。可能有一些第三方库使用预告片。但由于对预告片的支持需要由客户端预先声明(使用 TE:trailers header ),因此浏览器不使用它。

如果我对 HTTP/2 的理解是正确的, block 扩展就会消失(没有丢失,它们从未被使用过)。预告片仍然是可能的,即您可以在发送所有数据后添加标题,请参阅 RFC7540: 8.1 HTTP Request/Response Exchange .

关于http2 - 分块下载在 http/2 中是如何工作的(或者更好的是什么是等效的?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37368220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com