2. TCP Transmission Control Protocol

2.3. Establecimiento de Sesión TCP

Como sabemos TCP es orientado a la conexión, por lo tanto ANTES de trasmitir DEBE establecer una Sesión (crear un socket) algo parecido a lo que sucede al usar un Teléfono, solo que en este caso se debe establecer una conexión entre dos procesos.

Uno de los procesos (generalmente el servidor) espera, escucha, por una llamada: passive OPEN (pasiva), el cliente realiza una llamada active OPEN (activa).

Las "escuchas" del Servidor se realiza en puertos bien conocidos!.

La llamada OPEN pasiva permanece inactiva hasta que otro proceso intente conectarse a él mediante una llamada OPEN activa.

Todo este proceso se conoce como un HANDSHAKE (apretón de manos) de tres vías. 

Tenga en cuenta que los segmentos TCP intercambiados incluyen los números de secuencia iniciales de ambos lados, para ser utilizado en transferencias de datos posteriores.
El cierre de la conexión se hace implícitamente enviando un segmento TCP con el "end bit" o bit de fin (sin más datos) establecido (bit en alto = 1).

Debido a que la conexión es full-duplex (es decir, hay dos flujos de datos independientes, uno en cada dirección), el segmento FIN solo cierra la transferencia de datos en una dirección.

El otro proceso enviará ahora los datos restantes que aún tiene que transmitir y también termina con un segmento TCP donde el bit FIN está en alto.

La conexión se elimina (información de estado en ambos lados) después de que el flujo de datos se cierra en ambas direcciones.

Veamos otro ejemplo gráfico: