Estableciendo una conexión TCP.
Cuando dos procesos se quieren comunicar, cada “TCP” deberá primero establecer una conexión (inicializar una comunicación síncrona en cada lado). Cuando la comunicación es completada, la conexión es terminada o cerrada para liberar recursos para otros usuarios. Ya que las conexiones tienen que ser establecidas entre hosts no confiables y sobre dominios de internar no confiables, un mecanismo “handshake” basado en una secuencia de reloj es usado para evadir inicializaciones erróneas de conexiones.
Una conexión progresa a través de una serie de estados durante el establecimiento, El estado de escucha representa un TCP esperando una solicitud de conexión de cualquier TCP remoto. SYN-SENT ocurre después de manda una solicitud de conexión y antes de que se reciba una solicitud coincidente. El estado SYN-RECEIVED ocurre cuando se está esperando una confirmación de conexión, después de que ambos reciban y manden una solicitud de conexión. El estado ESTABLISHED ocurre después del handshake en el tiempo en el cual se crea una conexión abierta y la información recibida puede ser entregada al usuario.
El three-way handshake de TCP comienza con un número de secuencia inicial generado por el TCP iniciador como parte del proceso de sincronización (SYN). El segmento TCP inicial es después establecido con el bit SYN y transmitido al destino IP TCP para alcanzar el estado SYN-SENT. Como parte del proceso de acknowledgement, el vecino TCP generara una secuencia de números de sí mismo para sincronizar el flujo TCP en la otra dirección. Este vecino TCP transmitirá la secuencia de números así como un numero de acknowledgement que igualara la secuencia de números incrementada por 1, juntos con los bits SYN y ACK en el encabezado TCP para alcanzar el estado SYN-RECEIVED.
El último paso del protocolo handshake consiste en que el TCP inicial reconoce el número de secuencia del TCP vecino configurando el número de acknowledgement para igualar la secuencia de numero recibida más 1, junto con el bit ACK en el encabezado TCP permitiendo que el estado ESTABLISHED sea alcanzado.