logo

Flag TCP

Nella connessione TCP, i flag vengono utilizzati per indicare un particolare stato di connessione o per fornire alcune informazioni utili aggiuntive come la risoluzione dei problemi o per gestire il controllo di una particolare connessione. Le bandiere più comunemente usate sono SYN, ACK e FIN . Ogni flag corrisponde a 1 bit di informazione.

Tipi di bandiere:



    Sincronizzazione (SYN) – Viene utilizzata nella prima fase della fase di creazione della connessione o nel processo di handshake a 3 vie tra i due host. Solo il primo pacchetto proveniente dal mittente e dal destinatario dovrebbe avere questo flag impostato. Viene utilizzato per sincronizzare il numero di sequenza, ovvero per indicare all'altro capo quale numero di sequenza deve accettare. Riconoscimento (ACK) – Viene utilizzato per riconoscere i pacchetti che sono stati ricevuti con successo dall'host. Il flag viene impostato se il campo del numero di riconoscimento contiene un numero di riconoscimento valido.
    Nel diagramma riportato di seguito, il ricevitore invia un ACK = 1 e un SYN = 1 nella seconda fase della creazione della connessione per indicare al mittente che ha ricevuto il pacchetto iniziale.
    Fine (FIN) – Viene utilizzato per richiedere la terminazione della connessione, ovvero quando non ci sono più dati dal mittente, richiede la terminazione della connessione. Questo è l'ultimo pacchetto inviato dal mittente. Libera le risorse riservate e termina con garbo la connessione.
    Reset (RST) – Viene utilizzato per terminare la connessione se il mittente RST ritiene che qualcosa non va con la connessione TCP o che la conversazione non dovrebbe esistere. Può essere inviato dal lato destinatario quando il pacchetto viene inviato a un host particolare che non se lo aspettava. Urgente (URG) – Viene utilizzato per indicare che i dati contenuti nel pacchetto devono avere la priorità e essere gestiti urgentemente dal destinatario. Questo flag viene utilizzato in combinazione con il campo Urgent Pointer per identificare la posizione dei dati urgenti nel pacchetto. Push (PSH) – Viene utilizzato per richiedere la consegna immediata dei dati all'host ricevente, senza attendere che i dati aggiuntivi vengano memorizzati nel buffer dal lato del mittente. Questo flag viene comunemente utilizzato in applicazioni come streaming audio o video in tempo reale. Finestra (WND) – Viene utilizzata per comunicare al mittente la dimensione della finestra di ricezione. La dimensione della finestra è la quantità di dati che l'host ricevente è in grado di accettare in un dato momento. Il mittente dovrebbe limitare la quantità di dati inviati in base alla dimensione della finestra pubblicizzata dal destinatario. Checksum (CHK) – Viene utilizzato per verificare l'integrità del segmento TCP durante la trasmissione. Il checksum viene calcolato sull'intero segmento, inclusi l'intestazione e i campi dati, e viene ricalcolato a ogni salto lungo il percorso di rete. Numero di sequenza (SEQ) – È un numero univoco assegnato a ciascun segmento dal mittente per identificare l'ordine in cui i pacchetti devono essere ricevuti dal destinatario. Il numero di sequenza viene utilizzato insieme al numero di riconoscimento per garantire un trasferimento dati affidabile e per evitare pacchetti duplicati. Numero di riconoscimento (ACK) – Viene utilizzato per confermare la ricezione di un segmento TCP e per comunicare al mittente il successivo numero di sequenza previsto. Il campo del numero di riconoscimento contiene il numero di sequenza del successivo segmento previsto, anziché il numero dell'ultimo segmento ricevuto.

Fine (FIN) v/s Reset (RST) –

    Push (PSH) – Il livello di trasporto per impostazione predefinita attende un po' di tempo affinché il livello dell'applicazione invii dati sufficienti pari alla dimensione massima del segmento in modo che il numero di pacchetti trasmessi sulla rete sia ridotto al minimo, cosa non desiderabile da alcune applicazioni come le applicazioni interattive (chat). Allo stesso modo il livello di trasporto all'estremità del ricevitore bufferizza i pacchetti e li trasmette al livello di applicazione se soddisfa determinati criteri.

    Questo problema viene risolto utilizzando PSH. Il livello trasporto imposta PSH = 1 e invia immediatamente il segmento al livello rete non appena riceve il segnale dal livello applicazione. Il livello di trasporto del ricevitore, vedendo PSH = 1, inoltra immediatamente i dati al livello dell'applicazione.
    In generale, dice al destinatario di elaborare questi pacchetti man mano che vengono ricevuti invece di memorizzarli nel buffer.
    Urgente (URG): i dati all'interno di un segmento con flag URG = 1 vengono inoltrati immediatamente al livello dell'applicazione anche se ci sono più dati da fornire al livello dell'applicazione. Viene utilizzato per avvisare il destinatario di elaborare i pacchetti urgenti prima di elaborare tutti gli altri pacchetti. Il destinatario verrà avvisato quando tutti i dati urgenti noti saranno stati ricevuti.



Push (PSH) o Urgente (URG) –