Condivisione di file su internet
Lo scopo di quest’applicazione è la condivisione di file su internet tra un insieme di n host. Usando l’algoritmo Reed-Solomon, delle Socket e funzioni hash
Lo scopo di quest’applicazione è la condivisione di file su internet tra un insieme di n host, con la manipolazione del file attraverso l’algoritmo di codifica Reed-Solomon che ne aggiungerà informazioni aggiuntive, e in seguito dividere il file in n frammenti e inviare il proprio frammento ad ogni host.
Prima di inviare il frammento di file va verificato se l’host sia connesso, in caso contrario sarà sospeso l’invio e in seguito sarà l’host stesso a controllare se è aggiornato con tutto il sistema e ricavarsi il proprio frammento di file.
Nel caso della richiesta del file dal sistema invece il procedimento è diverso, grazie all’algoritmo di decodifica Reed-Solomon non avremo la necessità di avere tutti gli host online al momento della richiesta ma è sufficiente avere un numero di host che permetta, componendo i singoli frammenti, di avere un file con un numero di byte noti uguale alla grandezza in byte del file iniziale prima della codifica Reed-Solomon, i restanti byte sconosciuti vengono sostituiti con un carattere alternativo e conservate le loro posizioni. Se per esempio il nostro file iniziale è formato da 300 byte e dopo l’algoritmo di codifica sono aggiunti ulteriori 600 byte e si hanno 9 host, il file finale avrà la grandezza di 900 byte che sarà suddiviso per gli host con frammenti di grandezza 100 byte ciascuno, per ricostruire il file di partenza avremo bisogno di 3 frammenti di file, quindi soltanto 3 host connessi. Composti i vari frammenti di file, il risultato finale è mandato in decodifica assieme alle posizioni dei frammenti mancanti salvate e come output si avrà il file iniziale.
Gli host da selezionare per ricevere i frammenti di file sono selezionati tramite una funzione hash, è verificato se l’host restituito sia connesso e si procede, altrimenti è ricalcolata la funzione hash per avere un altro host. Questo è ripetuto finché ho raggiunto il numero di host connessi necessario per ricostruire il file.
In allegato la tesi sviluppata in quest’articolo: