Skip to content

Lezione (2025-10-17)

L’architettura P2P è un approcio alternativo al modello client-server, che può presentare benefici soprattutto quando si devono trasferire grandi quantità di dati.

I protocolli P2P sono definiti alcune caratteristiche comuni:

  • non c’è un server sempre attivo;
  • coppie arbitrarie di host comunicano direttamente tra loro;
  • i peer non sono sempre attivi e possono cambiare indirizzo IP;

Il protocollo BitTorrent si usa per scambiarsi files in maniera P2P.

BitTorrent assegna alcuni nomi specifici a parti del protocollo:

  • torrent: gruppo di peer che si scambiano le parti del file;
  • tracker: host che tiene traccia dei peer che partecipano al torrent, quando un peer vuole connettersi può scaricare la lista degli altri host attivi;
  • chunk: una frazione del file intero (tipicamente 256 kb);
  • seeder: peer che rimane collegato alla rete quando finisce il suo download;
  • leecher: peer che scarica il file e non contribuisce all’upload;

Il protocollo si basa sullo scambio di parti di file, in un dato istante un peer può richiedere ad altri host se hanno la parte che gli manca e scaricarla. Successivamente diventa in grado di fornire quella parte ad altri nuovi host.

Uno dei problemi dei protocolli P2P è quello di essere in grado di conoscere quali files sono presenti nella rete formata dagli host attivi in un dato momento.

Le 3 soluzioni più diffuse sono:

  • directory centralizzata:

    • un host (indice) tiene traccia dinamicamente della posizione dei file tra i vari peers;
    • un peer comunica periodicamente quali files possiede;
    • un nuovo peer consulta l’indice per sapere a quali host connettersi;
  • query flooding:

    • un peer conosce nn peer vicini (sa che file ci sono su quegli host);
    • se gli serve un nuovo file chiede a loro se sanno dov’è;
    • se i peer vicini non lo sanno, chiedono a loro volta ai loro nn vicini;
    • prima o poi qualcuno riuscirà a connettersi ad un host che ha il file;
  • copertura gerachica:

    • è una combinazione tra il metodo della directory e quello del query flooding;
    • i peer sono suddivisi in gruppi, con un leader che tiene traccia di tutti i file sui peer del suo gruppo;
    • il query flooding avviene solo tra i capi gruppo, limitando il traffico generato;