Concetti Chiave
- Il protocollo TCP è orientato alla connessione e garantisce consegne affidabili tramite meccanismi di timeout e ritrasmissione.
- TCP divide la sequenza di byte ricevuta in segmenti, con una dimensione massima determinata dall'MTU meno le intestazioni IP e TCP.
- L'intestazione TCP include campi per porta sorgente e destinazione, numeri di sequenza e riconoscimento, oltre a vari flag per il controllo della connessione.
- Il protocollo UDP è senza connessione e offre velocità maggiore rispetto a TCP, sacrificando il controllo degli errori e il flusso per compiti svolti dalle applicazioni superiori.
- I segmenti UDP hanno un'intestazione di 8 byte con campi per porta sorgente e destinazione, lunghezza totale del segmento e un checksum opzionale.
Protocolli di trasporto in internet
Il protocollo IP dello strato di rete in internet non è orientato alla connessione (senza controllo di flusso e senza correzione di errori), non garantisce quindi la consegna affidabile dei datagrammi. Il TCP è invece orientato alla connessione, è in grado di garantire una consegna affidabile grazie a dei meccanismi di timeout e di ritrasmissione che permettono di ridurre gli errori o comunque di impedire di validre informazioni corrotte; è un protocollo a finestra scorrevole.
Quando il TCP riceve da un'applicazione del livello superiore una sequenza di byte, la memorizza temporaneamente in uno slot temporaneo per poi dividerla in segmenti TCP. La dimensione massima effettiva del segmento dipende dalla dimensione massima del carico utile (1500 byte) detta MTU (maximum transfer unit).
Anche segmenti TCP sono formati da un'intestazione di dimensione variabile (minimo 20 byte) e da un campo dati la cui dimensione massima detta MSS (maximum segment size) si ottiene:
MTU - 20 byte (intestazione IP)-20 byte (intestazione TCP) = MTU - 40 byte
Sono evidenziati i seguenti campi:
- Source port (16 bit) contiene il numero di porta sorgente che individua l'applicazione locale;
- Destination port (16bit) contiene il numero di porta destinazione che individua l'applicazione remota;
- Sequence number (32 bit) indica il numero progressivo di sequenza del primo byte di dati contenuto nel segmento TCP;
- Acknowledgement number (32 bit) indica il numero di sequenza del prossimo segmento che ci si aspetta di ricevere;
- Data offset (4 bit) indica il numero di parole da 32 bit che compongono l'intestazione TCP (TCP header lenght);
- RES (6 bit) campo riservato e non utilizzato;
- URG, ACK, PSH, RST, SYN, FIN sono flag da un bit utilizzati per la connessione;
- Window (16 bit) indica il numero di byte che possono essere inviati a partire da quello che ha ricevuto il flag ACK;
- Checksum (16 bit) contiene il controllo su tutto il segmento comprensivo di intestazione e dati;
- Urgent pointer (16 bit) indica i byte urgenti considerati a partire da quello indicato nel sequence number;
- Options (variabile) campo opzionale che può essere usato per comunicare il proprio MSS;
- Padding (variabile) campo di riempimento per portare la dimensione dell'intestazione ad un un multiplo di 32 bit;
I campi sopra menzionati, fanno parte dell'intestazione del segmento TCP.
Protocollo UDP
È un altro protocollo di trasporto utilizzato da applicazioni di tipo client-server senza connessione che scambiano tra loro pochissimi datagrammi. UDP non prevede il controllo degli errori e il controllo di flusso (compiti svolti dalle applicazioni di livello superiore) per offrire una velocità di molto maggiore a quella del protocollo TCP, a discapito della sicurezza nella riuscita della trasmissione.
I segmenti UDP sono formati da una breve intestazione di 8 byte e dal campo dati. I campi dell'intestazione sono:
- Source Port (16 bit) contiene il numero di porta sorgente che individua l'applicazione locale;
- Destination Port (16 bit) contiene il numero di porta destinazione che individua l'applicazione remota;
- UDP lenght (16 bit) indica la dimensione totale del segmento, comprensiva di intestazione e dati; la dimensione massima di un datagramma UDP è quindi di 2^16=65536 byte;
- UDP checksum (16 bit) è un campo opzionale che contiene il controllo per gli errori nell'intestazione.
Domande da interrogazione
- Qual è la differenza principale tra il protocollo TCP e UDP?
- Come viene calcolata la dimensione massima del segmento TCP?
- Quali sono i campi principali dell'intestazione del segmento TCP?
- Qual è la dimensione massima di un datagramma UDP?
- Perché l'UDP è preferito in alcune applicazioni rispetto al TCP?
Il TCP è orientato alla connessione e garantisce una consegna affidabile grazie a meccanismi di timeout e ritrasmissione, mentre l'UDP non prevede il controllo degli errori e il controllo di flusso, offrendo una maggiore velocità a discapito della sicurezza.
La dimensione massima del segmento TCP si ottiene sottraendo 40 byte dalla MTU (1500 byte), risultando in una MSS (maximum segment size) di 1460 byte.
I campi principali includono Source port, Destination port, Sequence number, Acknowledgement number, Data offset, vari flag (URG, ACK, PSH, RST, SYN, FIN), Window, Checksum, Urgent pointer, Options e Padding.
La dimensione massima di un datagramma UDP è di 65536 byte, comprensiva di intestazione e dati.
L'UDP è preferito in applicazioni che richiedono velocità e scambiano pochi datagrammi, poiché non implementa il controllo degli errori e di flusso, risultando più veloce del TCP.