1. Protocollo di stretta di mano TCP
Nel protocollo TCP/IP, il protocollo TCP fornisce servizi di connessione affidabili utilizzando una stretta di mano a tre vie per stabilire una connessione.
Prima stretta di mano: Quando si stabilisce una connessione, il client invia un pacchetto syn (syn=j) al server ed entra nello stato SYN_SEND, aspettando la conferma del server.
La seconda stretta di mano: Quando il server riceve il pacchetto SYN, deve confermare il SYN del cliente (ack=j+1) e inviare anche un pacchetto SYN (syn=k), cioè pacchetto SYN+ACK, momento in cui il server entra nello stato SYN_RECV.
Terzo handshake: Il client riceve il pacchetto SYN+ACK dal server e invia il pacchetto di conferma ACK (ack=k+1) al server.
Dopo tre strette di mano, client e server iniziano a trasferire i dati, e ci sono alcuni concetti importanti nel processo sopra:
Coda non connessa: Nel protocollo a tre vie di handshake, il server mantiene una coda non connessa che apre una voce per ogni pacchetto SYN del client (syn=j) che indica che il server ha ricevuto il pacchetto SYN ed emette una conferma al cliente, in attesa del pacchetto di conferma del cliente. La connessione identificata da queste voci si trova in uno stato Syn_RECV sul server e, quando il server riceve un pacchetto di conferma dal cliente, la voce viene eliminata e il server entra nello stato ESTABLISHED. Parametro di backlog: Indica il numero massimo di code non collegate.
Tempi di ritrasmissione SYN-ACK Se il server invia il pacchetto SYN-ACK e non riceve il pacchetto di conferma del cliente, il server effettua la prima ritrasmissione, attende un certo periodo senza ricevere il pacchetto di conferma del cliente ed esegue la seconda ritrasmissione. Nota che il tempo di attesa per ogni ripetizione non è necessariamente lo stesso.
Tempo di sopravvivenza della semi-connessione: si riferisce al tempo massimo che una voce nella coda della semi-connessione sopravvive, cioè il tempo massimo dal momento in cui il servizio riceve il pacchetto SYN fino al momento in cui il pacchetto è confermato come invalido, e il valore temporale è la somma del tempo massimo di attesa per tutti i pacchetti di richiesta di ritrasmissione (retransmission request). A volte chiamiamo anche tempo di sopravvivenza semi-connesso, SYN_RECV tempo di sopravvivenza.
|