Capitolo 3 Percorso di download: download parallelo, ripresa e riassemblaggio (punto chiave)
Per i destinatari, «più veloce» significa soprattutto due cose: scaricare più blocchi in parallelo per aumentare la velocità effettiva e poter riprendere dopo un problema, con reti deboli o cambi di rete, senza ricominciare da capo. Dal punto di vista ingegneristico, il percorso di download è simmetrico a quello di caricamento.
3.1 Oggetti di download e manifest
- Prima di scaricare, il client DOVREBBE recuperare il manifest per conoscere il numero totale di blocchi, il loro ordine e come individuare ogni oggetto.
- Il manifest DEVE individuare in modo univoco ogni blocco (tramite regole sulle chiavi degli oggetti o un indice equivalente).
3.2 Download parallelo
- Il client DOVREBBE scaricare più blocchi in contemporanea per avvicinarsi al limite di banda.
- Il client DOVREBBE usare una concorrenza limitata e ridurla quando i tassi di errore aumentano.
- Il vantaggio della concorrenza è spesso maggiore con un RTT elevato tra regioni diverse, perché una singola connessione viene limitata più facilmente da RTT e jitter.
3.3 Ripresa del download
- Il client DEVE essere in grado di registrare l'insieme dei blocchi completati (per esempio una bitmap o un insieme di indici).
- Dopo un'interruzione, il client DOVREBBE recuperare solo i blocchi mancanti, senza riscaricare l'intero file.
- Se il server impone limiti al numero di download, il client DOVREBBE ridurre al minimo i download ridondanti durante la ripresa, per non sprecare il conteggio.
3.4 Riassemblaggio
- Il client DEVE riassemblare il file di output in ordine di chunkIndex.
- Il client DOVREBBE usare scritture in streaming / riassemblaggio progressivo per ridurre i picchi di memoria (soprattutto per file molto grandi).
- Se più file vengono impacchettati, il client PUÒ produrre un output per file oppure usare un formato contenitore (a seconda della progettazione del prodotto).
3.5 Controlli di integrità (in breve)
- Dopo il download, il client DOVREBBE verificare i blocchi (per esempio la coerenza di hash e lunghezza).
- Se la verifica fallisce, DEVE fallire in modalità chiusa (fail closed) e riprovare il blocco corrispondente.
- Per i confini relativi agli errori di cifratura e autenticazione, consulta le sezioni pertinenti del Whitepaper su sicurezza e privacy.