giovedì 21 ottobre 2010

Networking - Livello di trasporto

I due principali protocolli a questo livello sono il TCP(Transport Control Protocol) e l' UDP(User Datagram Protocol), il primo è quello maggiormente utilizzato per i servizi su internet ed è quello che fornisce una connessione affidabile e bidirezionale fra due indirizzi IP.Per connessione bidirezionale si può benissimo pensare al funzionamento di una linea telefonica, una volta che è stato composto il numero viene realizzata una connessione tra le due parti che possono comunicare fra loro, mentre per connessione affidabile si intende che TCP garantisce che tutti i dati raggiungono la destinazione finale nella giusta sequenza.
Se i pacchetti dovessero arrivare in una sequenza errata, TCP farà in modo che vengano disposti nella sequenza corretta prima di inviarli al livello successivo,inoltre nel caso alcuni pacchetti vengano persi, la destinazione trattiene i pacchetti già ricevuti, mentre la sorgente ritrasmette i pacchetti mancanti.Tutte queste funzionalità sono rese possibili da alcuni flag e da particolari valori detti "numeri di sequenza".
I flag TCP sono:
ACK riconoscimento della connessione
URG dati importanti
PSH indica al destinatario che deve inoltrare i dati
RST conclude istantaneamente una connessione
SYN sincronizza i numeri di sequenza all' inizio di una connessione
FIN conclude in modo ortodosso la connessione

I flag ACK e SYN, sono adoperati per aprire connessioni con un handshaking a tre passaggi, se un client vuole aprire una connessione invia al server un pacchetto con il flag SYN settato su "on" e il flag ACK su "off",il server risponde con un pacchetto che ha entrambi i flag settati su "on",ed il client per completare la connessione invia un pacchetto con SYN settato "off" e ACK "on". Successivamente tutti i pacchetti della connessione avranno SYN="off" e ACK="on".I primi 2 pacchetti della connessione, quelli che hanno SYN settato su "on", sono utilizzati per sincronizzare i numeri di sequenza, questi  servono a TCP sia per ordinare i pacchetti, ma anche per stabilire se ne mancano alcuni e impedire che vengano mischiati a quelli di altre connessioni.Quando viene avviata una connessione sia client che server generano un numero di sequenza iniziale che viene comunicato all' altra parte nei due pacchetti iniziali, in seguito ad ogni invio  di un pacchetto il numero viene incrementato di uno.


Questo numero di sequenza viene incluso nell' header TCP, il TCP è quindi ideale per applicazioni in cui sono richieste affidabilità e bidirezionalità ovviamente queste funzionalità pagano un po' in termini di velocità.UDP include un numero di funzioni minore, e si comporta in modo molto simile al protocollo IP, infatti UDP si aspetta che sia l' applicazione ad assicurare affidabilità e creare connessioni, tuttavia in alcune applicazioni le connessioni non sono necessarie e UDP è molto meno dispendioso in termini di risorse che TCP.

Nessun commento:

Posta un commento