La imagen muestra un ejemplo de sesión TCP, ilustrando las dos maneras en la cual TCP cierra las conexiones sobre la red. El ejemplo asume una PC está conectándose hacia el servidor sobre la red, pero este mismo proceso se aplica para cualquier sesión TCP establecida entre dos dispositivos.
Las flechas en la imagen representan la dirección de las comunicaciones. Una flecha apuntando desde la PC hacia el servidor significa la PC está enviando un mensaje hacia el servidor; una flecha apuntando desde el servidor hacia la PC significa el servidor está enviando un mensaje hacia la PC. Las etiquetas RST, ACK y FIN representan los diferentes tipos de paquetes los cuales son utilizados durante el cierre de la sesión. El paquete RST es utilizado para restablecer o cerrar abruptamente las comunicaciones. El paquete ACK envía una confirmación del mensaje al originador. El paquete FIN inicia el proceso de finalizar la conexión.
La parte superior de la imagen muestra como se cierra una conexión correctamente. Cuando llega el momento de cerrar la conexión, cada extremo de la conexión debe cerrarse por separado. Asumiendo la PC desea cerrar la conexión primero, el proceso inicia cuando la PC envía un paquete FIN hacia el servidor. Esta porción FIN indica al servidor la PC desea cerrar la conexión (continuando con el recuento de secuencia el cual ha estado utilizando con el servidor). El servidor responde enviando un ACK hacia la PC, confirmando el FIN enviado. A continuación el servidor envía un paquete FIN hacia la PC para cerrar su lado de la conexión. Finalmente la PC envía un ACK hacia el servidor para confirmar el FIN.
La parte inferior de la imagen ilustra el cierre abrupto de una sesión TCP con un solo paquete. Cuando abruptamente se cierra una conexión entre dos máquinas, cualquier lado puede enviar un solo paquete para hacerlo.
El proceso inicia cuando un sistema u otro envía un paquete RST hacia el otro. Si el dispositivo receptor está en estado LISTEN para el puerto de destino, el paquete RST es ignorado. Si el dispositivo receptor está en estado SYN-RECEIVED, pero previamente se encontraba en estado LISTEN, regresa hacia el estado LISTEN.
El estado LISTEN significa el sistema está esperando por una conexión y no existen conexiones activas hacia el puerto ni sistemas intentando establecer una conexión. Esto es típicamente como un servidor opera con todos los puertos abiertos en estado LISTEN, esperando por un cliente se conecte. Si el dispositivo receptor tiene una sesión abierta y los detalles del paquete coinciden con la sesión a la cual hace referencia, el dispositivo pasa hacia el estado CLOSED, no envía más paquetes para la sesión y notifica a los procesos de nivel superior la conexión ha sido cerrada. Asumiendo una sesión ha sido ya establecida, el dispositivo emisor la establecerá la sesión hacia un estado CLOSED. Anotar las sesiones cerradas de esta manera son hechas por un solo paquete en cada dirección. No se requieren más paquetes. Cerrar una sesión en esta manera algunas veces se denominada abortar una conexión.
Fuentes: