第 3 章 下載路徑:平行下載、復原與重組(重點)

對收件者而言,「更快」主要體現在兩方面:平行擷取多個區塊以提升吞吐量,以及在網路不佳或切換網路時能夠復原,而不必從頭開始。 從工程角度來看,下載路徑與上傳路徑是對稱的。

3.1 下載物件與清單

  • 下載之前,用戶端 SHOULD 先取得清單(manifest),以得知區塊總數、順序,以及如何定位每個物件。
  • 清單 MUST 能唯一定位每個區塊(透過物件鍵規則或等效的索引)。

3.2 平行下載

  • 用戶端 SHOULD 同時下載多個區塊,以更接近頻寬上限。
  • 用戶端 SHOULD 使用有限的並行數,並在錯誤率上升時降低並行數。
  • 當跨區域 RTT 較高時,並行帶來的效益通常更大,因為單一連線更容易受 RTT 與抖動限制。

3.3 可續傳下載

  • 用戶端 MUST 能記錄已完成的區塊集合(例如點陣圖/索引集合)。
  • 中斷之後,用戶端 SHOULD 只擷取缺少的區塊,而不是重新下載整個檔案。
  • 如果伺服器限制下載次數,用戶端 SHOULD 在復原時盡量減少重複下載,以免浪費次數。

3.4 重組

  • 用戶端 MUST 依 chunkIndex 順序重組輸出檔案。
  • 用戶端 SHOULD 使用串流寫入/漸進式重組,以降低記憶體峰值(特別是超大型檔案)。
  • 若多個檔案被打包,用戶端 MAY 逐檔輸出,或使用容器格式(視產品設計而定)。

3.5 完整性檢查(簡述)

  • 下載完成後,用戶端 SHOULD 驗證區塊(例如雜湊/長度一致性)。
  • 若驗證失敗,MUST 失敗即關閉,並重試對應的區塊。
  • 關於加密/驗證失敗的邊界,請參閱安全與隱私白皮書中的相關章節。