Protocolo de enlace de tres vías TCP
El host rastrea cada segmento de datos dentro de una sesión e intercambia información sobre los datos recibidos por cada host a través de la información del encabezado TCP.
Cada conexión representa dos streams de comunicación de una vía o sesiones. Para establecer la conexión, los hosts realizan un intercambio de señales de tres vías. Los bits de control en el encabezado TCP indican el progreso y estado de la conexión.
Funciones del protocolo de enlace de tres vías:
- Establece que el dispositivo de destino esté presente en la red.
- Verifica que el dispositivo de destino tenga un servicio activo y esté aceptando las peticiones en el número de puerto de destino que el cliente que lo inicia intente usar para la sesión.
- Informa al dispositivo de destino que el cliente de origen intenta establecer una sesión de comunicación en ese número de puerto.
En conexiones TCP, el host que brinde el servicio como cliente inicia la sesión al servidor.
Los tres pasos para el establecimiento de una conexión TCP son:
- El cliente que inicia la conexión envía un segmento que contiene un valor de secuencia inicial, que actúa como solicitud para el servidor para comenzar una sesión de comunicación.
- El servidor responde con un segmento que contiene un valor de reconocimiento igual al valor de secuencia recibido más 1, además de su propio valor de secuencia de sincronización. El valor es uno mayor que el número de secuencia porque el ACK es siempre el próximo byte u octeto esperado. Este valor de reconocimiento permite al cliente unir la respuesta al segmento original que fue enviado al servidor.
- El cliente que inicia la conexión responde con un valor de reconocimiento igual al valor de secuencia que recibió más uno. Esto completa el proceso de establecimiento de la conexión.
Los siguientes seis campos de 1 bit contienen información de control que se utiliza para gestionar los procesos TCP:
- URG: Campo de puntero urgente significativo
- ACK: Campo de acuse de recibo significativo
- PSH: Función push
- RST: Reinicializar la conexión
- SYN: Sincronizar números de secuencia
- FIN: No hay más datos desde el emisor
A estos campos se les conoce como flags porque el valor de uno de estos campos es de únicamente 1 bit y, por consiguiente, sólo tiene dos valores: 1 ó 0.
Establecimiento de la conexión TCP
Paso 1: SYN
Un cliente TCP comienza el enlace de tres vías enviando un segmento con el señalizador de control SYN (Sincronizar números de secuencia) establecido, indicando un valor inicial en el campo de número de secuencia del encabezado.
Este valor inicial para el número de secuencia, conocido como número de secuencia inicial (ISN), se elige de manera aleatoria y se utiliza para comenzar a rastrear el flujo de datos desde el cliente al servidor para esta sesión. El ISN en el encabezado de cada segmento se incrementa en uno por cada byte de datos enviados desde el cliente hacia el servidor mientras continúa la conversación de datos. Se establece el flag de control SYN y el número de secuencia relativa es 0.
Paso 2: SYN y ACK
El servidor TCP necesita reconocer la recepción del segmento SYN del cliente para establecer la sesión de cliente a servidor. Para hacerlo, el servidor envía un segmento al cliente con el señalizador ACK establecido indicando que el número de acuse de recibo es significativo. Con este señalizador establecido en el segmento, el cliente interpreta esto como acuse de recibo de que el servidor ha recibido el SYN del cliente TCP.
El valor del número de campo del acuse de recibo es igual al número de secuencia inicial del cliente más 1. Esto establece una sesión desde el cliente al servidor. El flag (señalizador) ACK permanecerá establecido para mantener el equilibrio de la sesión. Cabe recordar que la conversación entre el cliente y el servidor está compuesta en realidad por dos sesiones de una vía: una del cliente al servidor y la otra del servidor al cliente. En este segundo paso del enlace de tres vías, el servidor debe iniciar la respuesta del servidor al cliente. Para comenzar esta sesión, el servidor utiliza el señalizador SYN de la misma manera en que lo hizo el cliente. Establece el señalizador de control SYN en el encabezado para establecer una sesión del servidor al cliente. El señalizador SYN indica que el valor inicial del campo de número de secuencia se encuentra en el encabezado. Este valor se utilizará para rastrear el flujo de datos en esta sesión del servidor al cliente.
Paso 3: ACK
Por último, el cliente TCP responde con un segmento que contiene un ACK que es la respuesta al SYN TCP enviado por el servidor. Este segmento no incluye datos de usuario. El valor del campo de número de acuse de recibo contiene uno más que el ISN recibido del servidor. Una vez establecidas las dos sesiones entre el cliente y el servidor, todos los segmentos adicionales intercambiados en esta comunicación tendrán establecido el flag ACK.
Seguridad en la Red de Datos con TCP
Se puede añadir seguridad a la red de datos haciendo lo siguiente:
- Denegando el establecimiento de sesiones TCP
- Permitiendo el establecimiento de sesiones únicamente para servicios específicos
- Permitiendo tráfico sólo como parte de las sesiones ya establecidas
Terminación de la sesión TCP
Para terminar una conversación soportada por TCP, se precisan cuatro intercambios para terminar las dos sesiones:
- Cuando el cliente ya no tiene más datos que enviar en el flujo, envía un segmento con el flag FIN establecido.
- El servidor envía un ACK para acusar la recepción del FIN para terminar la sesión del cliente con el servidor.
- El servidor envía un FIN al cliente, para terminar la sesión servidor-a-cliente.
- El cliente responde con un ACK como acuse de recibo del FIN procedente del servidor.
Cuando la finalización de sesión del cliente no tiene más datos para transferir, establece el señalizador FIN en el encabezado de un segmento. Luego, el servidor finaliza la conexión y envía un segmento normal que contiene datos con el señalizador ACK establecido utilizando el número de acuse de recibo, confirmando así que se han recibido todos los bytes de datos. Cuando se produce el acuse de recibo de todos los segmentos, se cierra la sesión.
La sesión en la otra dirección se cierra mediante el mismo proceso. El receptor indica que no existen más datos para enviar estableciendo el señalizador FIN en el encabezado del segmento enviado al origen. Un acuse de recibo de retorno confirma que todos los bytes de datos han sido recibidos y, por lo tanto, se ha cerrado la sesión.
También es posible terminar la conexión mediante un enlace de tres vías. Cuando el cliente no posee más datos para enviar, envía un señalizador FIN al servidor. Si el servidor tampoco tiene más datos para enviar, puede responder con los señalizadores FIN y ACK, combinando dos pasos en uno. El cliente responde con un ACK.