5

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

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

4

1 回答 1

2

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

如果您使用 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 请求)

于 2012-10-25T20:19:06.887 回答