Logo

Capitolo 3 Percorso di download: download parallelo, ripristino e riassemblaggio (chiave)

Per i destinatari, "più veloce" si manifesta principalmente in due modi: recuperando più blocchi in parallelo per migliorare la velocità effettiva e potendo ripristinare in caso di reti deboli o cambio di rete senza riavviare. Dal punto di vista ingegneristico, il percorso di download è simmetrico al percorso di caricamento.

3.1 Scarica oggetti e manifest

  • Prima del download, il client DOVREBBE recuperare il manifest per conoscere il conteggio totale dei blocchi, l'ordine e come individuare ciascun oggetto.
  • Il manifest DEVE individuare in modo univoco ogni blocco (tramite regole oggetto-chiave o un indice equivalente).

3.2 Scaricamento parallelo

  • Il client DOVREBBE scaricare più blocchi contemporaneamente per avvicinarsi al limite della larghezza di banda.
  • Il client DOVREBBE utilizzare una concorrenza limitata e ridurla quando i tassi di errore aumentano.
  • Il vantaggio della concorrenza è spesso maggiore con un RTT elevato tra regioni, poiché una singola connessione è più facilmente limitata da RTT e jitter.

3.3 Download ripristinabile

  • Il client DEVE essere in grado di registrare l'insieme di blocchi completati (ad esempio, bitmap/insieme di indici).
  • Dopo un'interruzione, il client DOVREBBE recuperare solo i pezzi mancanti, non scaricare nuovamente l'intero file.
  • Se il server impone limiti di conteggio dei download, il client DOVREBBE ridurre al minimo i download ridondanti durante il ripristino per evitare sprechi di conteggi.

3.4 Riassemblaggio

  • Il client DEVE riassemblare il file di output in ordine ChunkIndex.
  • Il client DOVREBBE utilizzare scritture in streaming/riassemblaggio progressivo per ridurre i picchi di memoria (specialmente per file molto grandi).
  • Se vengono confezionati più file, il client PUÒ produrre output per file o utilizzare un formato contenitore (a seconda della progettazione del prodotto).

3.5 Verifiche di integrità (breve)

  • Dopo il download, il client DOVREBBE verificare i blocchi (ad esempio, coerenza hash/lunghezza).
  • Se la verifica fallisce, DEVE fallire la chiusura e riprovare il blocco corrispondente.
  • Per i limiti relativi agli errori di crittografia/autenticazione, consultare le sezioni pertinenti nel Whitepaper su sicurezza e privacy.