【问题标题】:How do Download Managers download huge files on HTTP without multiple requests?下载管理器如何在没有多个请求的情况下通过 HTTP 下载大文件?
【发布时间】:2009-09-30 03:43:35
【问题描述】:

我昨天下载了一个 200MB 的文件,FlashGet 在统计中显示它使用的是 HTTP1.1 协议。
我的印象是 HTTP 是一种请求 - 响应协议,最常用于重几 KiB 的网页......我不太明白它如何下载 MB 或 GB 的数据,并且同时通过 5(或更多)不同的流。

【问题讨论】:

    标签: http download-manager


    【解决方案1】:

    HTTP/1.1 有一个“Range”标头,可以指定通过连接传输文件的哪个部分。下载管理器可以建立多个连接,指定不同的传输范围。然后它将块组合在一起以构建完整的文件。

    【讨论】:

    • 如果连接中断或中断,它如何知道从哪里重新开始?在这种情况下,它如何跟踪传输的字节等?
    • 下载者只需计算它收到的字节数就知道在给定连接上传输了多少数据。然后它可以建立一个新的连接并指定在传输字节之后开始传输的字节范围。下载过程基本上是: 1. 检索数据文件的长度 2. 计算要传输的块数,例如将文件分成 1MB 的块 3. 启动多个并行连接来传输这些块,即块将是字节 1-1000000、1000001-2000000 等。
    【解决方案2】:

    http 没有大小限制。它用于网页,但也用于在 Internet 上提供绝大多数内容。限制大小的更多是带宽问题,而不是协议本身。当然,这在早期是一个限制。 (而且,我想,那些还在拨号上网的人)

    【讨论】:

    • 下载管理器使用什么进程来下载具有多个流的大文件,只需少量请求?
    【解决方案3】:

    这些链接可能会有所帮助:

    HTTP

    HTTP Persistent Connections

    Chunked Transfer Encoding

    【讨论】:

    • 顺便说一句,我在 2 天前已经阅读了它们,但是我仍然无法理解下载管理器和 HTTP 1.1 的基础知识 ...
    猜你喜欢
    • 2010-11-05
    • 2017-11-02
    • 2020-04-08
    • 1970-01-01
    • 2019-09-20
    • 1970-01-01
    • 2011-05-03
    • 1970-01-01
    相关资源
    最近更新 更多