最大 HTTP 数据包大小

Lor*_*oh. 5 get http network-protocols amazon-s3 packet

HTTP 数据包的最大大小是多少?我对 HTTP GET 请求的响应大小感兴趣(不是这个!这个问题是关于请求大小的)。有大小吗?如果我下载了一个 1GiB 的文件,那么它最终会成为 1 个 HTTP GET 请求吗?(直觉上,我不认为会发生这种情况 - 此外,部分下载/多线程下载器将不起作用)。

我知道 IP 数据包和 TCP 数据包的最大长度大于跨多个 IP 数据包分段的长度。HTTP 也会发生这样的事情吗?我正在寻找这个问题的答案的原因是为了弄清楚收取 1c / 10K get 请求的 AWS S3 计费方案。那么有多少 GET 请求开始为 1GiB 提供服务。

Lor*_*oh. 2

我在AWS S3 论坛上得到了Seungyoung Kim 的回答

如果您使用 GET 请求下载 5GiB 文件。S3 的计费系统将其计为 1 个 GET 请求和 5GiB 数据传输。仅供参考,如果您停止下载 5GiB 中的 2GiB 文件,那么它们将仅计算 2GiB 数据传输。

GET 请求通常不会分段,除非您将调用拆分为多个连续的 GET 范围调用。

因此,如果您使用每个 1GiB 数据块的范围标头发出 5 个单独的 GET 请求,它们会将其计为 5 个 GET 请求,但仍然是相同的 5GiB(1GiB x 5 次)数据传输。由于额外的 HTTP 协议标头,技术上仅略高于 5GiB。

如果这是正确的,则 HTTP GET 响应不存在数据包碎片(尽管它们遇到多个 TCP 数据包,并且丢失的 TCP 数据包由 TCP 处理,并且不会非法恢复另一个 GET 请求)