Transmission Control Protocol: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Funzionalità collegamenti suggeriti: 3 collegamenti inseriti.
Nessun oggetto della modifica
Riga 65:
...
! <kbd>160/480<br/>...</kbd>
| colspan="32"|Data
|}
 
*
* '''Source port''' [16 bit] - Identifica il ''numero di porta sull'host mittente'' associato alla connessione TCP.
* '''Destination port''' [16 bit] - Identifica il ''numero di porta sull'host destinatario'' associato alla connessione TCP.
* '''Sequence number''' [32 bit] - Numero di sequenza, indica lo scostamento (espresso in byte) dell'inizio del segmento TCP all'interno del flusso completo, a partire dall'Initial Sequence Number (''ISN''), deciso all'apertura della connessione (Un campo a 32 bit utilizzato per il riassemblaggio dei dati).
* '''Acknowledgment number''' [32 bit] - Numero di riscontro, ha significato solo se il flag [[ACK (informatica)|ACK]] è impostato a 1, e conferma la ricezione di una parte del flusso di dati nella direzione opposta, indicando il valore del prossimo ''Sequence number'' che l'host mittente del segmento TCP si aspetta di ricevere.
* '''Data offset''' [4 bit] - Indica la lunghezza (in [[dword]] da 32 bit) dell'header del segmento TCP; tale lunghezza può variare da 5 dword (20 byte) a 15 dword (60 byte) a seconda della presenza e della lunghezza del campo facoltativo ''Options''.
* '''Reserved''' [4 bit] - Bit non utilizzati e predisposti per sviluppi futuri del protocollo; dovrebbero essere impostati a zero.
* '''Flags''' [8 bit] - Bit utilizzati per il controllo del protocollo:
** '''CWR''' (Congestion Window Reduced) - se impostato a 1 indica che l'host sorgente ha ricevuto un segmento TCP con il flag ECE impostato a 1 (aggiunto all'header in RFC 3168).
** '''ECE''' [ECN (Explicit Congestion Notification) -Echo] - se impostato a 1 indica che l'host supporta ECN durante il 3-way handshake (aggiunto all'header in RFC 3168).
** '''URG''' - se impostato a 1 indica che nel flusso sono presenti ''dati urgenti'' alla posizione (offset) indicata dal campo ''Urgent pointer''. ''Urgent Pointer'' punta alla fine dei dati urgenti;
** '''[[ACK (informatica)|ACK]]''' - se impostato a 1 indica che il campo ''Acknowledgment number'' è valido;
** '''PSH''' - se impostato a 1 indica che i dati in arrivo non devono essere bufferizzati ma passati subito ai livelli superiori dell'applicazione;
** '''[[RST (TCP)|RST]]''' - se impostato a 1 indica che la connessione non è valida; viene utilizzato in caso di grave errore; a volte utilizzato insieme al flag ACK per la chiusura di una connessione.
** '''SYN''' - se impostato a 1 indica che l'host mittente del segmento vuole ''aprire una connessione TCP'' con l'host destinatario e specifica nel campo ''Sequence number'' il valore dell'Initial Sequence Number (''ISN''); ha lo scopo di sincronizzare i numeri di sequenza dei due host. L'host che ha inviato il SYN deve attendere dall'host remoto un pacchetto SYN/[[ACK (informatica)|ACK]].
** '''FIN''' - se impostato a 1 indica che l'host mittente del segmento vuole ''chiudere la connessione TCP'' aperta con l'host destinatario. Il mittente attende la conferma dal ricevente (con un FIN-ACK). A questo punto la connessione è ritenuta chiusa per metà: l'host che ha inviato FIN non potrà più inviare dati, mentre l'altro host ha il canale di comunicazione ancora disponibile. Quando anche l'altro host invierà il pacchetto con FIN impostato, la connessione, dopo il relativo FIN-ACK, sarà considerata completamente chiusa.
* '''Window size''' [16 bit] - Indica la dimensione della ''finestra di ricezione'' dell'host mittente, cioè il numero di byte che il mittente è in grado di accettare a partire da quello specificato dall'acknowledgment number.
* '''[[Checksum]]''' [16 bit] - Campo di controllo utilizzato per la verifica della validità del segmento. È ottenuto facendo il complemento a 1 della somma [[complemento a uno]] a 16 bit dell'intero header TCP (con il campo checksum messo a zero), dell'intero payload, con l'aggiunta di uno pseudo header composto da: indirizzo IP sorgente (32bit),indirizzo IP destinazione (32bit), un byte di zeri, un byte che indica il protocollo e due byte che indicano la lunghezza del pacchetto TCP (header + dati).
* '''Urgent pointer''' [16 bit] - Puntatore a dato urgente, ha significato solo se il flag URG è impostato a 1 ed indica lo scostamento in byte a partire dal ''Sequence number'' del byte di dati urgenti all'interno del flusso.
* '''Options''' - Opzioni (facoltative) per usi del protocollo avanzati.
* '''Data''' - rappresenta il carico utile o ''payload'' da trasmettere cioè la [[Protocol Data Unit|PDU]] proveniente dal livello superiore.
 
=== Confronto con UDP ===