3. TCP Transmission Control Protocol

3.4. Finalización de la Sesión TCP (informativo)

Para cerrar la conexión se debe establecer el señalador de control FIN (Finalizar) en el encabezado del segmento.

Para finalizar todas las sesiones TCP de una vía, se utiliza un enlace de dos vías, que consta de un segmento FIN y un segmento ACK.

Por lo tanto, para terminar una conversación simple admitida por TCP, se requieren cuatro intercambios para finalizar ambas sesiones.

Nota: En esta explicación, los términos cliente y servidor se utilizan como referencia por facilidad, pero el proceso de finalización lo pueden iniciar dos hosts cualquiera que completen la sesión:

1. Cuando el cliente no tiene más datos para enviar en el stream, envía un segmento con el señalador FIN establecido.

2. El servidor envía un ACK para acusar de recibo el FIN para terminar la sesión de cliente a servidor.

3. El servidor envía un FIN al cliente para terminar la sesión de servidor a cliente.

4. El cliente responde con un ACK para dar acuse de recibo del FIN desde el servidor.

Cuando el cliente que finaliza la sesión no tiene más datos que transferir, establece el señalador 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 dio acuse de recibo de todos los segmentos, la sesión se cierra.

La sesión en la otra dirección se cierra con 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 devuelto confirma que todos los bytes de datos se recibieron y que la sesión, a su vez, finalizó.

 

Half-Close.

Cuando un proceso llama a shutdown con un segundo argumento de 1, se llama medio cierre. TCP envía un FIN pero permite que el proceso continúe recibiendo en el socket.