Telematica II A.A. 2005-06

Documenti analoghi
FTP. Appunti a cura del prof. ing. Mario Catalano

Il protocollo BitTorrent

Reti di Telecomunicazione Lezione 6

Interfaccia Web per customizzare l interfaccia dei terminali e

Telematica II 16. Reti peer-to-peer

Il routing in Internet Exterior Gateway Protocols

Contesto: Peer to Peer

Introduzione alle applicazioni di rete

Reti di Telecomunicazione Lezione 8

Algoritmi per protocolli peer-to-peer

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 24 Gennaio 2005, ore 15.00

Dal protocollo IP ai livelli superiori

Esercitazioni di Tecnologie e Servizi di Rete: Voice over IP (VoIP)

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 24 Gennaio 2005, ore 15.00

TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TELECOMUNICAZIONI

CORSO DI RETI SSIS. Lezione n.2. 2 Novembre 2005 Laura Ricci

Lo scenario: la definizione di Internet

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Parte II Lezione 5

Architettura del. Sintesi dei livelli di rete. Livelli di trasporto e inferiori (Livelli 1-4)

2.5. L'indirizzo IP identifica il computer di origine, il numero di porta invece identifica il processo di origine.

Inizializzazione degli Host. BOOTP e DHCP

Il VoIP nel mondo di Internet e l evoluzione del carrier telefonico. Relatore: Ing. Carrera Marco - Audit Technical Manager Switchward

Reti di Telecomunicazioni Mobile IP Mobile IP Internet Internet Protocol header IPv4 router host indirizzi IP, DNS URL indirizzo di rete

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

Approfondimento di Marco Mulas

Nelle reti di calcolatori, le porte (traduzione impropria del termine. port inglese, che in realtà significa porto) sono lo strumento

Topologia delle reti. Rete Multipoint: ogni nodo è connesso agli altri tramite nodi intermedi (rete gerarchica).

UDP. Livello di Trasporto. Demultiplexing dei Messaggi. Esempio di Demultiplexing

Protocolli di Comunicazione

Linguaggi ed Applicazioni mul1mediali

Trasmissione di dati al di fuori di un area locale avviene tramite la commutazione

Transmission Control Protocol

Indirizzi Internet e. I livelli di trasporto delle informazioni. Comunicazione e naming in Internet

Utilizzare 4CBOX come centralino significa avere un sistema all inclusive oltre a

Introduzione. Livello applicativo Principi delle applicazioni di rete. Stack protocollare Gerarchia di protocolli Servizi e primitive di servizio 2-1

GLI APPARATI PER L INTERCONNESSIONE DI RETI LOCALI 1. Il Repeater 2. L Hub 2. Il Bridge 4. Lo Switch 4. Router 6

Reti diverse: la soluzione nativa

Lezione 1 Introduzione

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

Stampe in rete Implementazione corretta

Reti di Calcolatori. Il software

Standard di comunicazione

Modelli e Sistemi di Elaborazione Peer-to-Peer

INFORMATICA DISTRIBUITA. lez 4 Livello applicazione

Informatica per la comunicazione" - lezione 8 -

Protocolli applicativi: FTP

Una architettura peer-topeer per la visualizzazione 3D distribuita

Programma del corso. Introduzione Rappresentazione delle Informazioni Calcolo proposizionale Architettura del calcolatore Reti di calcolatori

Sicurezza nelle applicazioni multimediali: lezione 9, firewall. I firewall

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori I

Introduzione. Coordinazione Distribuita. Ordinamento degli eventi. Realizzazione di. Mutua Esclusione Distribuita (DME)

Corso di Sistemi di Elaborazione delle informazioni. Reti di calcolatori 2 a lezione a.a. 2009/2010 Francesco Fontanella

Siti web centrati sui dati (Data-centric web applications)

GLI INDIRIZZI DELL INTERNET PROTOCOL (IP ADDRESS) 2. Fondamenti sugli indirizzi dell Internet Protocol 2. Struttura di un indirizzo IP 2

Rete Internet Prova in Itinere Mercoledì 23 Aprile 2008

Reti di Telecomunicazione Lezione 7

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Internet, così come ogni altra rete di calcolatori possiamo vederla suddivisa nei seguenti componenti:

Manuale servizio ScambioDati

ARP (Address Resolution Protocol)

VOISPEED & VOIPVOICE

VOIP CALL RECORDER VCR2

CLOUD AWS. #cloudaws. Community - Cloud AWS su Google+ Amazon Web Services. Amazon VPC (Virtual Private Cloud)

Cenni di programmazione distribuita in C++ Mauro Piccolo

Elementi di Informatica e Programmazione

Il client deve stampare tutti gli eventuali errori che si possono verificare durante l esecuzione.

Reti di Calcolatori. Il Livello delle Applicazioni

Gestione degli indirizzi

Internet. Internet. Internet Servizi e Protocolli applicativi. Internet. Organizzazione distribuita

Introduzione al VoIP

esales Forza Ordini per Abbigliamento

Client - Server. Client Web: il BROWSER

INDIRIZZI IP ARCHITETTURA GENERALE DEGLI INDIRIZZI IP FORME DI INDIRIZZI IP CINQUE FORME DI INDIRIZZI IP

Indirizzamento privato e NAT

l'introduzione a Voice over IP

Applicazioni web centrati sui dati (Data-centric web applications)

Consiglio Nazionale delle Ricerche Area di Ricerca di Bologna Istituto per le Applicazioni Telematiche di Pisa

Progettare un Firewall

Elementi di Informatica e Programmazione

1. Il Client Skype for Business

VoIP e. via SOLUZIONI E INNOVAZIONE PER LA COMUNICAZIONE

RETI DI COMPUTER Reti Geografiche. (Sez. 9.8)

QoS e Traffic Shaping. QoS e Traffic Shaping

Software di gestione della stampante

Wildix CTIconnect Mobile: APP per Android. Guida Rapida

Reti di Calcolatori. Vantaggi dell uso delle reti. Cosa è una rete? Punto di vista logico: sistema di dati ed utenti distribuito

INFORMATIVA SUL DIRITTO ALLA PRIVACY PER LA CONSULTAZIONE DEL SITO WEB

1) GESTIONE DELLE POSTAZIONI REMOTE

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori a.a. 2009/10

IL CENTRALINO VoIP. Schema progetto: Work-flow. Hydra Control

1. RETI INFORMATICHE CORSO DI LAUREA IN INGEGNERIA INFORMATICA SPECIFICHE DI PROGETTO A.A. 2013/ Lato client

ARCHITETTURA DI RETE FOLEGNANI ANDREA

Internet Architettura del www

Scheda Informativa. Verizon Net Conferncing

Man-in-the-middle su reti LAN

Protocolli per le . Impianti Informatici. Protocolli applicativi

SIP e SDP. Segnalazione nelle reti VoIP. Fulvio Risso. Politecnico di Torino

Prova in itinere - Rete Internet (ing. Giovanni Neglia) Mercoledì 23 Maggio 2007, ore 15.00

Le reti. Introduzione al concetto di rete. Classificazioni in base a

Coordinazione Distribuita

Transcript:

VoIP Voice over IP è una tecnologia che rende possibile effettuare una conversazione telefonica sfruttando una connessione Internet o un'altra rete dedicata che utilizza il protocollo IP, anziché passare attraverso la normale linea di trasmissione telefonica. 132 di 223

I vantaggi di VoIP minori costi delle infrastrutture: consente di eliminare le centrali di commutazione; tutto ciò che serve è una rete IP economizzare sulla larghezza di banda occupata: Vengono instradati sulla rete pacchetti di dati contenenti le informazioni vocali, codificati in forma digitale, e ciò solo nel momento in cui è necessario, cioè quando uno degli utenti collegati sta parlando. 133 di 223

I vantaggi di VoIP (2) minore costo per chiamata, specialmente su lunghe distanze nuove funzionalità avanzate l'implementazione di future opzioni non richiederà la sostituzione dell'hardware 134 di 223

Esempi di utilizzo di VoIP Le grandi corporation utilizzano sempre più spesso la telefonia IP, realizzando reti telefoniche dedicate per collegare fra di loro le proprie sedi. In questo modo, di fatto, realizzano una rete digitale interna al gruppo, che si presta molto bene ad essere modificata ed adattata per fornire i più disparati tipi di servizi. 135 di 223

Esempi di utilizzo di VoIP (2) VoIP è anche largamente utilizzato dalle compagnie telefoniche, specialmente nei collegamenti internazionali. Per gli utenti questo utilizzo è completamente trasparente, nel senso che non si accorgono che le loro chiamate sono instradate su una rete IP anziché passare attraverso le normali centrali di commutazione. Telecom Italia, per esempio, instrada su IP una percentuale significativa delle telefonate interurbane fra Milano e Roma (circa il 60%, dato del 2005). 136 di 223

Problematiche del VoIP Coerenza temporale dello stream audio Il problema di fondo della tecnologia VoIP è la corretta ricostruzione dei pacchetti di dati ricevuti, tenuto conto del fatto che durante la trasmissione può cambiare la sequenza dei pacchetti e che alcuni pacchetti possono aver subito perdite o danneggiamenti delle informazioni contenute. Latenza dei pacchetti Il tempo di latenza dei pacchetti deve essere sufficientemente basso, in modo che l'utente non debba aspettare troppo tempo prima di ricevere le risposte durante le conversazione. 137 di 223

138 di 223 Modalità di chiamate VoIP

Tipologie di protocolli richiesti Protocolli di segnalazione Per effettuare il log-in, cercare gli utenti, instaurare, modificare e terminare le sessioni. Media Transport Protocols Per la trasmissione di pacchetti audio/video. Protocolli di supporto Localizzazione dei gateway, gestione della QoS, traduzione degli indirizzi, autenticazione interdomini etc 139 di 223

140 di 223 Esempi di protocolli esistenti

Esempi di protocolli esistenti (2) Protocolli di segnalazione SIP/SDP, H323 Media Transport Protocols RTP, UDP, TCP Protocolli di supporto DNS, TRIP (Telephony Routing over IP), RSVP (Resource Reservation Setup Protocol), COPS (Common Open Policy Service) 141 di 223

SIP Il SIP (Session Initiation Protocol) è un protocollo di segnalazione di sessione. Il protocollo è stato sviluppato a partire dal 1999 (RFC 2543 e 3261) per iniziativa di IETF e fa parte della Internet Multimedia Conferencing Suite. Esso trova applicazione in: telefonia su IP e servizi telefonici supplementari video-comunicazione giochi interattivi messaggistica instantanea 142 di 223

Principali funzioni Invitare gli utenti a partecipare ad una sessione: localizzare gli utenti acquisire le preferenze degli utenti negoziare le capabilities trasportare una descrizione della sessione Instaurare le connessioni di sessione Gestire eventuali modifiche dei parametri di sessione Rilasciare le parti Cancellare la sessione in qualunque momento si desideri 143 di 223

Dispositivi SIP Gli USER AGENT possono essere: UA Client (effettuano le chiamate) UA Server (aspettano le chiamate in arrivo) Entrambi possono essere implementati via SW o HW 144 di 223

Tipologie di server SIP SIP Proxy Server Inoltra le segnalazioni di chiamata Opera in maniera transazionale, cioè non tiene traccia dello stato della sessione SIP Redirect Server Redirige le chiamate ad altri server SIP Registrar Accetta le richieste di registrazione da parte degli utenti Mantiene informazioni sulla posizione geografica degli utenti 145 di 223

Indirizzi SIP SIP assegna un indirizzo unico a livello mondiale. L indirizzo viene espresso tramite una URI: sip:jiri@iptel.org sip:salvatore@194.150.20.21:5068 sip:+39-81-12345@miogateway.com sip:sales@hotel.xy; geo.position:=48.54_-123.84_120 146 di 223

147 di 223 Registrazione

148 di 223 Esempio di chiamata

149 di 223 Struttura dei messaggi

Metodi (RFC2543) ( INVITE Inizia una sessione ACK Conferma che la sessione è stata stabilita BYE Termina la sessione CANCEL Cancella una richiesta INVITE pendente OPTIONS Richiede le capacità dell altro terminale REGISTER Effettua il binding di un indirizzo SIP con un indirizzo IP 150 di 223

Header Via: mostra il protocollo di trasporto usato e l instradamento richiesto, ciascun proxy aggiunge una linea a questo campo From: indirizzo del chiamante. To: indirizzo dell utente chiamato. Call-Id: Identificatore univoco per ciascuna chiamata, contenente l indirizzo dell host. Deve essere lo stesso per tutti i messaggi all interno di una transazione. Cseq: inizia con un numero casuale ed identifica con una sequenza ciascun messaggio. Contact : uno (o più) indirizzi che possono essere usati per contattare l utente User Agent: nome del client. 151 di 223

Codici di risposta 1yz Informational 100 Trying 180 Ringing 181 Call is being forwarded 2yz Success 200 ok 3yz Redirection 300 Multiple Choices 301 Moved Permanently 302 Moved Temporarily 152 di 223

Codici di risposta (2) 4yz Client Error 400 401 482 486 Bad Request Unauthorized Loop Detected Busy Here 5yz Server Failure 500 Server Internal Error 6yz Global Failure 600 Busy Everywhere 153 di 223

154 di 223 Esempio di redirect

Session Description Protocol (SDP) Fornisce le informazioni sufficienti per consentire la partecipazione ad una sessione multimediale. SDP include la descrizione di: Media da usare (codec, sampling rate) Destinazione del media (indirizzo IP e numero di porta) Nome della sessione e scopo Tempo per cui la sessione deve rimanere attiva Informazioni di contatto Queste informazioni sono contenute nel payload dei messaggi SIP 155 di 223

Esempio di parametri SDP v = 0 indica la versione in uso o = jack 7564657 9823872 IN IP4 134.102.18.1 l'owner della risorsa con un ID di sessione c = IN IP4 134.102.18.1 tipo di rete, la versione del protocollo IP e l'ip stesso t = 0 0 tempo di start e di stop m = audio 4754 RTP/AVP 0 tipo di media, num. di porta, protocollo di trasporto e formato a = rtpmap: 0 PCMU/8000 attributi audio\video.. se ce ne fossero s = festa subject della sessione 156 di 223

Comunicazione multimediale su IP SIP essenzialmente stabilisce l indirizzo IP ed i numeri di porta tramite i quali i due terminali della comunicazione possono inviare e ricevere dati. SIP non trasporta i dati I pacchetti con i dati non seguono lo stesso percorso di quelli SIP I flussi Audio/Video vengono digitalizzati, compressi ed inviati in pacchetti UDP Le tecniche di compressione sfruttano le limitazioni degli occhi e delle orecchie umane per ridurre la bandwidth 157 di 223

158 di 223 Compressione

Real Time Transport Protocol (RTP) Viene utilizzato per trasportare i flussi multimediali Standardizzato dalla IETF e usato anche da ITU-T 159 di 223

Caratteristiche di RTP Fornisce informazioni per: media content type talk spurts sender identification synchronization loss detection segmentation and reassembly security (encryption) 160 di 223

Reti peer-to-peer Una rete di computer peer-to-peer (P2P) sfrutta principalmente la potenza di calcolo e la bandwidth di tutti i partecipanti alla rete piuttosto che concentrarla su un relativamente piccolo numero di server. Tali reti sono utili per diversi scopi. Ad esempio: Condivisione di files (file sharing) contenenti audio, video, dati. Trasmissione di dati in realtime, come ad esempio traffico telefonico o di videoconferenza 161 di 223

Reti peer-to-peer (2) Una rete peer-to-peer pura non prevede il concetto di client o server, ma solo nodi peer paritetici che contemporaneamente agiscono sia da "client" che da "server" per gli altri nodi della rete. Questo modello di organizzazione della rete differisce da quello client-server dove solitamente la comunicazione è verso o da un server centrale. 162 di 223

Classificazione Reti peer-to-peer pure: I peer agiscono come client e server Non esiste un server centrale che gestisce la rete Non esiste un router centrale Reti peer-to-peer ibride: Hanno un server centrale che mantiene le informazioni sui peers I peer si occupano della memorizzazione delle risorse, rendono noto al server centrale le risorse condivise ed effettuano il download delle risorse ai peer che le richiedono. 163 di 223

Vantaggi delle reti P2P Una caratteristica importante delle reti peer-topeer è che tutti i client forniscono risorse quali bandwidth, storage, e capacità di calcolo. Quindi al crescere del numero di peer, la capacità totale del sistema aumenta di conseguenza. Ciò non è vero per una architettura client-server con un numero fisso di server, in cui aggiungere nuovi client potrebbe significare trasferimento dati più lento per tutti gli utenti. La natura distribuita delle reti peer-to-peer aumenta la robustezza in caso di guasti replicando i dati su peer multipli, e nelle reti P2P pure consentendo ai peer di trovare i dati senza utilizzare un index server centralizzato. 164 di 223

Attacchi alle reti P2P poisoning attacks (fornire file i cui contenuti sono diversi da quelli descritti) polluting attacks (inserire chunk/pacchetti cattivi in un file valido) defection attacks (utenti o software che fanno uso della rete senza contribuire ad essa condividendo risorse) Inserimento di virus nei dati trasportati (i file scaricati potrebbero essere infetti da virus o malware) malware nel software di rete stesso (il software distribuito contiene spyware) 165 di 223

Attacchi alle reti P2P (2) denial of service attacks (attacchi che rendono la rete molto lenta o la bloccano completamente) filtering (gli operatori di rete potrebbero impedire il transito dei pacchetti delle rete p2p) Identity attacks (identificare gli utenti della rete e perseguirli legalmente) spamming (inviare informazioni non richieste agli utenti attraverso la rete) 166 di 223

Esempio di rete P2P: BitTorrent BitTorrent è un protocollo per reti P2P ibride progettato per distribuire grandi quantità di dati senza far uso di costosi server e senza usare grande bandwidth. E stato ideato nel 2001 da Bram Cohen. Questo sistema si basa sul principio che durante il trasferimento di un file, chi scarica lascia inutilizzata la propria banda in uscita: questo è uno spreco che BT risolve facendo sì che un client faccia scaricare lo stesso file ad altri client, usando la propria banda in upload. 167 di 223

Schema di funzionamento di BT Seeder Tracker Leechers Connessione al Tracker Download dal Seeder 168 di 223 Scambio file tra Leechers

Funzionamento di BT Si scarica, da un web server, un file.torrent contenente informazioni sul file che si vuole scaricare. Si usa il client BT per aprire il file.torrent e collegarsi al Tracker, un server che contiene la lista dei Seeders (client che dispongono di tutto il file) e dei Leechers (client che dispongono solo di una parte del file). Il download vero e proprio avviene sia dai Seeders che dagli altri Leechers. Quindi la macchina di un utente fa sia da client che da server per gli altri. E necessario un server centrale (Tracker) per coordinare lo scambio dei file. Il vantaggio è quello di ridurre il consumo di banda del server centrale. 169 di 223

Limiti del protocollo BitTorrent non offre ai suoi utenti l anonimato. Poichè i tracker mantengono una lista dei nodi che condividono file, è possibile ottenere l indirizzo IP sia degli utenti correnti ed anche di quelli che hanno condiviso file in precedenza. Un altro limite del modello BitTorrent è che gli utenti che condividono i file hanno poco incentivo a diventare seeders dopo che hanno completato il loro download. Ciò si traduce in una minore possibilità di ottenere i torrent più vecchi. 170 di 223

Paragone con altri sistemi P2P Il metodo usato da BitTorrent per distribuire i file è simile a quello della rete edonkey2000, ma i nodi di quest ultima rete solitamente condividono e scaricano un maggiore numero di file, facendo diventare la bandwidth disponibile per ciascun trasferimento molto più piccola. I trasferimenti su BitTorrent sono solitamente molto veloci, poiché tutti i nodi si concentrano nel trasferimento di un singolo file. Molti nuovi sistemi P2P hanno dei meccanismi per incentivare l upload dei file. Ad esempio emule ha un sistema di crediti in cui un nodo ringrazia gli altri nodi che gli forniscono file incrementado la loro priorità nella sua coda. 171 di 223

Paragone con altri sistemi P2P (2) BitTorrent non fornisce un metodo per indicizzare i file condivisi. La conseguenza di ciò è che pochi siti sono disposti ad ospitare i file.torrent e quindi sono disponibili un minor numero di files rispetto alla rete edonkey. Recentemente, Bram Cohen ha rilasciato un proprio BitTorrent search engine, che cerca i torrent nei più diffusi tracker BitTorrent, anche se esso non ospita i file torrent stessi. Uno degli obiettivi per la prossima versione 4.1.2 di BitTorrent è l uso di tracker distribuiti, che eliminerebbe il single point of failure del sistema. 172 di 223

Codifica bencoding Tutti i dati presenti nel file torrent usano la codifica bencoding. Le stringhe sono codificate nel seguente modo: <lunghezza stringa (decimale)>:<string data> Esempio: 4:spam rappresenta la stringa "spam Gli interi sono codificati nel seguente modo: i<intero decimale in ASCII>e Esempio: i3e rappresenta l intero "3 173 di 223

Codifica bencoding (2) Le liste sono codificate nel seguente modo: l<valori bencoded>e Esempio: l4:spam4:eggse rappresenta la lista: ["spam", "eggs"] I dizionari sono codificati nel seguente modo: d<bencoded string><bencoded element>e Esempio: d3:cow3:moo4:spam4:eggse rappresenta il dizionario: { "cow" => "moo", "spam" => "eggs" } 174 di 223

Struttura del file.torrent Il contenuto del file.torrent è una dizionario bencoded, contenente le seguenti chiavi: info(*) : un dizionario che descrive il file da scaricare announce(*): announce URL del tracker creation date: data di creazione del file (intero in formato Unix epoch) comment: stringa con i commenti dell autore created by: nome e versione del prg. usato per generare il file 175 di 223

Struttura del file.torrent (2) Il dizionario info contiene le seguenti voci: length(*): lunghezza del file in byte (intero) md5sum: stringa di 32 caratteri hex con la md5 sum del file name(*): nome del file (stringa) piece length(*): lunghezza in byte di ciascun pezzo in cui è suddiviso il file (intero) pieces (*): valore di hash a 20 byte calcolato con SHA1 per ciascun piece. Info può contenere anche informazioni su file multipli associati allo stesso file.torrent. 176 di 223

Protocollo usato dal tracker Il tracker è un servizio che risponde alle richieste HTTP GET. Le richieste includono delle metriche fornite dai client che aiutano il tracker a mantenere delle statistiche globali. Le risposte contengono una lista di peer che contengono il file da scaricare. I parametri vengono codificati nella URL (contenuta nel file.torrent) 177 di 223

Parametri della richiesta info_hash: 20-byte SHA1 hash del valore del campo info nel.torrent peer_id: stringa di 20-byte usata come ID per il client, generata allo startup del client. port: numero della porta su cui il client è in ascolto (tipicamente 6881-6889) uploaded: numero totale di byte trasferiti in upload downloaded: numero di byte scaricati left: numero di byte rimasti da scaricare event: uno tra i valori started, completed, stopped che indicano lo stato del trasferimento ip: indirizzo IP del client (opzionale) 178 di 223

Formato della risposta Il tracker risponde con un documento nel tipo MIME text/plain contenente un dizionario bencoded con le seguenti chiavi: failure reason: motivo del problema (se presente le altra chiavi ci possono non essere) interval: intervallo, in secondi, che il client deve attendere prima di mandare una nuova richiesta al tracker tracker id: identificativo univoco del tracker complete: numero dei peer con il file completo (seeders) incomplete: numero dei peer con parti di file (leechers) peers: è una lista di dizionari con le seguenti chiavi: peer id, ip, port 179 di 223

Formato della risposta (2) I client possono mandare una richiesta al tracker più spesso dell intervallo specificato, se viene invocato un evento (ad es: stopped o completed) o se il client ha bisogno di conoscere un maggior numero di peer. 180 di 223

Peer wire protocol Il peer protocol facilita lo scambio dei chunk come descritto nel file.torrent Un client deve mantenere informazioni di stato per ciascuna connessione attiva on un altro peer remoto: choked: indica se il peer remoto ha messo in stato di choked questo client. Quando accade ciò il peer remoto non accetta richieste da questo client. interested: indica se il peer remoto è interessato a qualcosa questo client ha da offrire. E una notifica che il peer remoto inizierà a richiedere blocchi quando il client lo pone in stato unchoked. 181 di 223

Peer wire protocol (2) Un blocco viene scaricato dal client quando questo è interesato in un peer, e quel peer non ha messo il client in choking. Viene fatto l upload di un blocco da un client ad un peer quando il client non ha messo in stato di choking il peer, e quel peer è interessato al client. E importante per il client tenere i suoi peer informati se è interessato a blocchi da essi posseduti. 182 di 223

Message flow Il peer wire protocol consiste di un handshake iniziale. Dopo questo, i peer comunicano attraverso uno scambio di messaggi a lunghezza prefissata. 183 di 223

Handshake L handshake è un messaggio obbligatorio e deve essere il primo messaggio trasmesso dal client. La sintassi è: <pstrlen><pstr><reserved><info_hash><peer_id> pstrlen: lunghezza di <pstr>, come singolo raw byte pstr: stringa che identifica il protocollo reserved: 8 byte riservati. (attualmente posti a 0) info_hash: 20-byte SHA1 hash del valore del campo info nel file torrent. peer_id: 20-byte string usata come ID per il client. 184 di 223

Formato dei messaggi Tutti i restanti messaggi del protocollo hanno la seguente struttura: <length prefix><message ID><payload> length prefix è un valore a 4 byte big-endian message ID è un singolo carattere Ad esempio il messaggio di choke: choke: <len=0001><id=0> unchoke: <len=0001><id=1> interested: <len=0001><id=2> 185 di 223