TCP UDP

Materie:Appunti
Categoria:Sistemi
Download:27
Data:25.05.2005
Numero di pagine:3
Formato di file:.doc (Microsoft Word)
Download   Anteprima
tcp-udp_1.zip (Dimensione: 6.39 Kb)
trucheck.it_tcp-udp.doc     30.5 Kb
readme.txt     59 Bytes


Testo

Il livello transport di Internet è basato su due protocolli:
• TCP (Transmission Control Protocol)
• UDP (User Data Protocol)
Il secondo è di fatto IP con l'aggiunta di un breve header, e fornisce un servizio di trasporto datagram (quindi non affidabile). Lo vedremo brevemente nel seguito.
Il protocollo TCP è stato progettato per fornire un flusso di byte affidabile, da sorgente a destinazione, su una rete non affidabile.

Il protocollo TCP
Le caratteristiche più importanti sono le seguenti:
• ogni byte del flusso TCP è numerato con un numero d'ordine a 32 bit, usato sia per il controllo di flusso che per la gestione degli ack;
• un segmento TCP non può superare i 65.535 byte;
• un segmento TCP è formato da:
• uno header, a sua volta costituito da:
• una parte fissa di 20 byte;
• una parte opzionale;
• i dati da trasportare;
• TCP usa un meccanismo di sliding window di tipo go-back-n con timeout. Se questo scade, il segmento si ritrasmette. Si noti che le dimensioni della finestra scorrevole e i valori degli ack sono espressi in numero di byte, non in numero di segmenti.

I campi dell'header hanno le seguenti funzioni:

Source port, destination port
identificano gli end point (locali ai due host) della connessione. Essi, assieme ai corrispondenti numeri IP, formano i due TSAP.
Sequence number
il numero d'ordine del primo byte contenuto nel campo dati.
Ack. number
il numero d'ordine del prossimo byte aspettato.
TCP header length
quante parole di 32 bit ci sono nell'header (necessario perché il campo options è di dimensione variabile).
URG
1 se urgent pointer è usato, 0 altrimenti.
ACK
1 se l'ack number è valido (cioè se si convoglia un ack), 0 altrimenti.
PSH
dati urgenti (pushed data), da consegnare senza aspettare che il buffer si riempia.
RST
richiesta di reset della connessione (ci sono problemi!).
SYN
usato nella fase di setup della connessione: SYN=1 ACK=0 richiesta connessione; SYN=1 ACK=1 accettata connessione.
FIN
usato per rilasciare una connessione.
Window size
il controllo di flusso è di tipo sliding window di dimensione variabile. Window size dice quanti byte possono essere spediti a partire da quello (compreso) che viene confermato con l'ack number. Un valore zero significa: fermati per un pò, riprenderai quando ti arriverà un uguale ack number con un valore di window size diverso da zero.
Checksum
simile a quello di IP; il calcolo include uno pseudoheader.
Urgent pointer
puntatore ai dati urgenti.
Options
fra le più importanti, negoziabili al setup: dimensione massima dei segmenti da spedire; uso di selective repeat invece che go-back-n; uso di NAK.
Nel calcolo del checksum entra anche uno pseudo-preambolo,, in aperta violazione della gerarchia, dato che il livello TCP in questo calcolo opera su indirizzi IP.

Lo pseudo-preambolo non viene trasmesso, ma precede concettualmente l'header. I suoi campi hanno le seguenti funzioni:

Source IP address, destination IP address
indirizzi IP (a 32 bit) di sorgente e destinatario.
Protocol
il codice numerico del protocollo TCP (pari a 6).
TCP segment length
il numero di byte del segmento TCP, header compreso.

Il protocollo UDP
Il livello transport fornisce anche un protocollo non connesso e non affidabile, utile per inviare dati senza stabilire connessioni (ad esempio per applicazioni client-server).
Lo header di un segmento UDP è molto semplice:

La funzione di calcolo del checksum può essere disattivata, tipicamente nel caso di traffico in tempo reale (come voce e video) per il quale è in genere più importante mantenere un elevato tasso di arrivo dei segmenti piuttosto che evitare i rari errori che possono accadere.

Esempio