segmento TCP

This commit is contained in:
dado
2025-05-24 12:11:02 +02:00
parent d32ba27fda
commit c8733813bd
2 changed files with 24 additions and 1 deletions

View File

@ -2,7 +2,7 @@
`TCP`, acronimo di *Transmission Control Protocol*, è un protocollo del livello 4 (transport layer) che si distingue per il suo approccio connection-oriented, a differenza di UDP. Questo significa che TCP stabilisce una connessione affidabile tra i processi degli host prima di iniziare lo scambio di informazioni, garantendo così una trasmissione sicura e ordinata. `TCP`, acronimo di *Transmission Control Protocol*, è un protocollo del livello 4 (transport layer) che si distingue per il suo approccio connection-oriented, a differenza di UDP. Questo significa che TCP stabilisce una connessione affidabile tra i processi degli host prima di iniziare lo scambio di informazioni, garantendo così una trasmissione sicura e ordinata.
Le principali caratteristiche di TCP: ## Caratteristiche principali
- **Connection-Oriented**: prima dell'invio dei dati, TCP stabilisce una connessione tra le due estremità attraverso il meccanismo del `three-way handshake` (`SYN`, `SYN-ACK`, `ACK`). La chiusura della connessione avviene in modo simile, utilizzando un meccanismo che assomiglia a un three-way handshake (`FIN`, `FIN-ACK`, `ACK`) - **Connection-Oriented**: prima dell'invio dei dati, TCP stabilisce una connessione tra le due estremità attraverso il meccanismo del `three-way handshake` (`SYN`, `SYN-ACK`, `ACK`). La chiusura della connessione avviene in modo simile, utilizzando un meccanismo che assomiglia a un three-way handshake (`FIN`, `FIN-ACK`, `ACK`)
@ -11,3 +11,26 @@ Le principali caratteristiche di TCP:
- **Full Duplex**: la comunicazione è bidirezionale, ovvero i dati possono essere inviati e ricevuti simultaneamente su entrambi i lati della connessione. - **Full Duplex**: la comunicazione è bidirezionale, ovvero i dati possono essere inviati e ricevuti simultaneamente su entrambi i lati della connessione.
- **Controllo del flusso e della congestione**: TCP regola la velocità di invio dei dati in base alla capacità del ricevente, evitando di sovraccaricarlo. Questa gestione avviene attraverso meccanismi di controllo delle finestre di trasmissione e ricezione. Inoltre, TCP adotta algoritmi per il controllo della congestione, riducendo la velocità di trasmissione in caso di congestione della rete - **Controllo del flusso e della congestione**: TCP regola la velocità di invio dei dati in base alla capacità del ricevente, evitando di sovraccaricarlo. Questa gestione avviene attraverso meccanismi di controllo delle finestre di trasmissione e ricezione. Inoltre, TCP adotta algoritmi per il controllo della congestione, riducendo la velocità di trasmissione in caso di congestione della rete
## Segmento TCP
L'header del segmento TCP può variare da 20 byte (minimo) a 60 byte (massimo), e incapsula il payload, ovvero il messaggio generato dall'application layer.
![tcp](asset/img/tcp.png)
I campi principali dell'header TCP sono i seguenti:
- **Porta Sorgente** (16 bit o 2 byte)
- **Porta Destinazione** (16 bit o 2 byte)
- **Sequence Number** (`SEQ`) (32 bit o 4 byte): rappresenta il numero del primo byte del segmento TCP trasmesso
- **Acknowledgment Number** (`ACK`) (32 bit o 4 byte): utilizzato dal destinatario per confermare la ricezione di `n` byte. Se il mittente invia `n` byte di dati, il destinatario risponderà con un un segmento con il campo ACK impostato a `n+1`. Questo valore indica che sono stati ricevuti correttamente `n` byte e che il prossimo byte atteso ha un numero di sequenza con un valore di `n+1`. Il punto di partenza del Sequence Number non è obbligatoriamente 0, ma dipende dall'`ISN` (*Initial Sequence Number*), che viene scelto casualmente tra 0 e 2^32-1
- **Flags** (6 bit): Ogni bit rappresenta un flag con una funzione specifica.
- **URG** (Urgent): indica che il campo `Urgent Data Pointer` contiene informazioni importanti che devono essere gestite
- **PUSH**: il mittente richiede al destinatario di inviare immediatamente i dati all'application layer
- **ACK**: attivato se il campo Acknowledgment Number contiene un valore valido
- **SYN**: attivato durante l'instaurazione di una connessione
- **FIN**: Attivato per segnalare la chiusura della connessione
- **RST** (Reset): utilizzato per interrompere bruscamente la connessione
- **Checksum** (16 bit): controllo degli errori nel segmento TCP.
- **Options** (40 byte): Campo opzionale che può contenere informazioni aggiuntive per la gestione della connessione.
- **Receive Window** (16 bit): campo utilizzato per la gestione del flusso e delle finestre. Il destinatario indica al mittente la dimensione massima della finestra di ricezione.

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB