Nel trasferimento di file ci sono due protocolli:

Protocollo FTP

Definizioni

Definizione: Protocollo FTP

Il protocollo FTP (File Transfer Protocol) è un protocollo a livello di applicazione utilizzato per il trasferimento di file basato sul paradigma client-server. Per gestire il trasferimento dei file, il protocollo FTP utilizza due connessioni TCP:

  1. Una connessione di controllo (porta 21), utilizzata per trasferire le informazioni per il controllo del trasferimento (es: nome utente, password, comandi per cambiare directory e per il trasferimento) .
  2. Una connessione dati (porta 20), la quale viene aperta ogni qualvolta sia necessario trasferire un file, per poi chiuderla successivamente .

Inoltre, il protocollo FTP è un protocollo stateful, conservando la directory corrente e l’autenticazione della sessione precedente

Nel protocollo FTP, il client corrisponde al dispositivo avviante il trasferimento verso un dispositivo remoto, mentre il server corrisponde al dispositivo remoto stesso.

Quando l’utente fornisce al proprio client il nome del server a cui connettersi tramite il comando ftp «nome host», il processo client FTP stabilisce la connessione di controllo sulla porta 21.

Successivamente, il client trasferisce nome utente e password sulla porta 21, autenticandosi. Una volta ottenuta l’autorizzazione dal server, il client può trasferire uno o più file memorizzati nel file system locale verso quello remoto (o viceversa), aprendo e chiudendo la connessione dati sulla porta 20 ad ogni trasferimento.

I principali comandi del protocollo FTP sono:

Comando e ArgomentiDescrizione
ABORInterrompe il comando precedente
CDUPTorna alla directory del livello precedente
CWD <nome_directory>Cambia directory crrente
DELE <nome_file>Elimina il file
LIST <nome_directory>Elenca i file nella directory
MKD <nome_directory>Crea una directory
PASS <pass_word>Invia la passord dell’utente
PASVIl server scehie la porta della connessione
PORT <port_a>Il client sceglie la porta della connessione
PWDmostra nome directory corrente
QUITTermina la comunicazione
RETR <nomi_dei_file>Trasferisce uno o piu file dal server al client
RMD <nome_directory>Elimina la directory
RNTO <vecchio_nome> <nuovo_nome>Rinomina il file specificato dal vecchio nome
STOR <nomi_dei_file>Trasferisce uno o piu file dal client al server
USER <nome_utente>Invia il nome dell’utente
Link to original


Protocollo BitTorrent

Definizione

Definizione: Protocollo BitTorrent

Il protocollo BitTorrent è un protocollo a livello di applicazione utilizzato per il trasferimento di file basato sul paradigma peer-to-peer (P2P). Nonostante non abbia una porta standard, solitamente vengono utilizzate le porte nel range 6881- 6889 assieme al protocollo TCP.

Ogni peer entra a far parte di un torrent, ossia un gruppo di peer scambianti frammenti di file tra loro, registrandosi su un tracker, ossia un dispositivo che tiene traccia dei peer partecipanti al torrent, per poi connettersi ad un sottoinsieme di peer “vicini”.

Durante il download di file, il peer svolge anche la funzione di uploader (seeder) di blocchi verso altri peer. Una volta ricevuto il file, il peer può scegliere se uscire dal torrent o rimanerne all’interno, continuando a svolgere la funzione di seeder.

In un dato momento, peer diversi possiedono diversi sottoinsiemi di blocchi componenti un file. Per richiedere tali blocchi, un peer chiede periodicamente agli altri l’elenco dei blocchi attualmente posseduti. Successivamente, il peer richiede i blocchi mancanti, dando precedenza ai più rari.

Per favorire l’altruismo tra i peer e sfavorire la presenza di leecher, ossia dispositivi che egoisticamente escono dal torrent una volta scaricato un file, il protocollo BitTorrent usa un approccio tit-for-tat (traduzione più vicina: do ut des, “io ti do e tu mi dai” ):

  • Ogni peer seeder invia blocchi agli ulteriori quattro peer seeder che attualmente stanno uploadando i blocchi richiesti alla velocitĂ  maggiore
  • Gli altri peer non appartenenti alla top 4 vengono “strozzati” (chocked) dal peer seeder, bloccando l’invio dei blocchi ad essi.
  • Ogni 10 secondi, tale top 4 viene rivalutata. Inoltre, ogni 30 secondi viene sbloccato casualmente un peer strozzato (optimistic un-chocking), il quale può entrare o meno a far parte della top 4.

Per via di tale approccio, il trasferimento di un file ad N dispositivi risulta più ottimale nel caso dell’applicazione del paradigma P2P.

Link to original