Kapitel 3 Download-Pfad: paralleler Download, Wiederaufnahme & Zusammensetzen (Kernthema)

Für Empfänger zeigt sich „schneller“ vor allem auf zwei Arten: Mehrere Chunks werden parallel abgerufen, um den Durchsatz zu verbessern, und bei schwachen Netzen oder Netzwechseln kann ohne Neustart fortgesetzt werden. Aus technischer Sicht ist der Download-Pfad symmetrisch zum Upload-Pfad aufgebaut.

3.1 Download-Objekte und Manifest

  • Vor dem Download SOLLTE der Client das Manifest abrufen, um die Gesamtzahl der Chunks, ihre Reihenfolge und die Auffindbarkeit jedes Objekts zu erfahren.
  • Das Manifest MUSS jeden Chunk eindeutig lokalisieren (über Objektschlüssel-Regeln oder einen gleichwertigen Index).

3.2 Paralleler Download

  • Der Client SOLLTE mehrere Chunks gleichzeitig herunterladen, um näher an die Bandbreitenobergrenze zu kommen.
  • Der Client SOLLTE eine begrenzte Parallelität verwenden und sie verringern, wenn die Fehlerraten steigen.
  • Der Nutzen der Parallelität ist bei hoher RTT zwischen Regionen oft größer, weil eine einzelne Verbindung durch RTT und Jitter leichter ausgebremst wird.

3.3 Fortsetzbarer Download

  • Der Client MUSS die Menge der abgeschlossenen Chunks erfassen können (z. B. als Bitmap / Indexmenge).
  • Nach einer Unterbrechung SOLLTE der Client nur fehlende Chunks abrufen und nicht die gesamte Datei erneut herunterladen.
  • Wenn der Server Limits für die Anzahl der Downloads durchsetzt, SOLLTE der Client redundante Downloads bei der Wiederaufnahme minimieren, um keine Zählungen zu verschwenden.

3.4 Zusammensetzen

  • Der Client MUSS die Ausgabedatei in der Reihenfolge des chunkIndex zusammensetzen.
  • Der Client SOLLTE Streaming-Schreibvorgänge / progressives Zusammensetzen verwenden, um Speicherspitzen zu verringern (besonders bei sehr großen Dateien).
  • Wenn mehrere Dateien gepackt werden, KANN der Client pro Datei ausgeben oder ein Containerformat verwenden (je nach Produktdesign).

3.5 Integritätsprüfungen (kurz)

  • Nach dem Download SOLLTE der Client die Chunks prüfen (z. B. Konsistenz von Hash/Länge).
  • Schlägt die Prüfung fehl, MUSS er im Fail-Closed-Modus abbrechen und den betreffenden Chunk erneut abrufen.
  • Zu den Grenzen bei Verschlüsselungs- und Authentifizierungsfehlern siehe die entsprechenden Abschnitte im Whitepaper zu Sicherheit und Datenschutz.