Concetti Chiave
- La tecnica delle finestre scorrevoli nel protocollo TCP determina quanti segmenti possono restare in attesa di conferma e sospende la trasmissione se la finestra è piena.
- In caso di errori durante la ricezione dei segmenti, il destinatario scarta i segmenti successivi e richiede la ritrasmissione a partire dal segmento problematico.
- Il protocollo TCP utilizza solo conferme positive (ACK) per la ricezione, evitando conferme negative (NACK) e implementando timer per gestire le ritrasmissioni.
- La chiusura di una sessione TCP avviene tramite un handshaking a tre vie, simile all'instaurazione della sessione, per garantire una terminazione ordinata.
- I passaggi per chiudere una sessione TCP includono l'invio di un segmento con il flag FIN, conferme reciproche e la definitiva chiusura della sessione da parte dell'host B.
Tecnica di trasmissione TCP
La tecnica di trasmissione dati adottata dal protocollo TCP viene definita sliding windows(letteralmente Finestre scorrevoli).La dimensione della finestra definita all'interno di ogni segmento TCP determina quanti segmenti possono rimanere in attesa di conferma,se la finestra viene riempita,il mittente sospende la trasmissione fino a quando non sono confermati almeno alcuni segmenti presenti nella finestra.
Esempio di finestra TCP
Un esempio potrebbe essere di supporre che la finestra abbia un dimensione di 5 segmenti e che l'host A debba inviare 10 segmenti. Durante il primo invio sul secondo e sul quarto segmento il destinatario rivela degli errori. Poiché il destinatario si aspetta di ricevere i segmenti in sequenza,scarta anche il terzo e il quinto inviando al mittente un segnale di acknowledgment per l'invio di altri segmenti a partire dal secondo. Nei successivi due invii non vi sono più dati corrotti e tutti i segmenti giugno al destinatario.
Conferme nel protocollo TCP
Il protocollo TCP prevede soltanto la conferma positiva (ACK)e non la conferma negativa (NACK)che potrebbe essere inviata nel caso di errori rilevati sulla ricezione di un segmento. La mancanza della conferma negativa potrebbe causare lunghe attese al ricevente,questa eventualità e scongiurata dall'adozione di timer assegnati a ogni segmento presente nella finestra di ritrasmissione. Nel caso in cui un timer scada prima della ricezione dell'ACK corrisponde il segmento associato vien nuovamente inviato.
Chiusura di una sessione TCP
La chiusura di una sessione avviene con una modalità molto simile all'instaurazione della sessione,anche in questo caso la tecnica utilizzata è definita handshaking a tre vie modificata.
I passi da eseguire per chiudere una sessione TCP sono i seguenti:
1)L'host A comunica all'host B l'intenzione di chiudere la sessione impostando nel segmento trasmesso il flag FIN a 1.
2)L'host B risponde mandando una prima conferma di ricezione del segmento all'interno del quale A ha chiesto di chiudere la sessione.
3)Il software applicativo di B ha definitivamente chiuso la sessione e pertanto l'host B invia ad A un segmento con il flag FIN impostato a 1.Il campo acknowledgement Number rimane ovviamente uguale a quello del segmento precede perché nel frattempo A non ha inviato altri segmenti.
4)L'host A conferma definitivamente la ricezione della chiusura della sessione da parte di B.
Domande da interrogazione
- Qual è la funzione della tecnica delle finestre scorrevoli nel protocollo TCP?
- Come gestisce il protocollo TCP gli errori nella trasmissione dei segmenti?
- Qual è il processo per la chiusura di una sessione TCP?
La tecnica delle finestre scorrevoli nel protocollo TCP consente di gestire quanti segmenti possono rimanere in attesa di conferma. Se la finestra è piena, il mittente sospende la trasmissione fino a ricevere conferme per alcuni segmenti (come descritto nel testo).
Il protocollo TCP utilizza solo conferme positive (ACK) e non conferme negative (NACK). In caso di errori, il destinatario scarta i segmenti errati e invia un segnale di acknowledgment per richiedere la ritrasmissione, mentre timer sono assegnati a ogni segmento per evitare lunghe attese (come spiegato nel testo).
La chiusura di una sessione TCP avviene tramite un processo di handshaking a tre vie, in cui l'host A invia un segmento con il flag FIN, l'host B conferma la ricezione e poi invia il proprio flag FIN, infine A conferma la chiusura (come illustrato nel testo).