【问题标题】:Maximum HTTP Packet Size最大 HTTP 数据包大小
【发布时间】:2012-10-14 20:32:24
【问题描述】:

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

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

【问题讨论】:

  • 您当然可以使用单个 HTTP GET 请求下载整个 1Gb 文件。如果服务器支持字节范围的请求,HTTP 客户端可以轻松地发出 1,073,741,824 次 GET 请求并一次下载一个字节的文件。

标签: http get amazon-s3 network-protocols packet


【解决方案1】:

我在AWS S3 Forum 上得到了Seungyoung Kim 的答复

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

GET 请求通常不会分片,除非您拆分调用 进入几个连续的 GET 范围调用。

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

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

【讨论】:

  • 如果有人知道任何例外情况,请告诉我。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-07
  • 1970-01-01
  • 2020-05-25
  • 2015-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多