Wireshark / Tshark. Finalización o cierre de una conexión TCP.

Wireshark cierre conexión FTP tcp flow graph.

Ya hemos hablado en algunas ocasiones del establecimiento de una conexión TCP. También otros aspectos de TCP dentro de los artículos básicas al respecto:

Seguimos con dicho estudio básico de protocolos.  En esta ocasión veremos el cierre de la conexión TCP a través de las capturas con Wireshark.

Cierre de una conexión TCP.

Vimos, en su momento, que para establecimiento de una conexión TCP se usa una negociación a 3 pasos. (thee-way handshake), sin embargo, para el cierre de la conexión se usará una negociación a 4 pasos (four-way handshake). Lo vemos de forma resumida realizando un Flow Graph en nuestra captura Wireshark:

Wireshark cierre conexión FTP tcp flow graph.

La desconexión la puede iniciar cualquiera de los dos host involucrados en la conexión. Al ser full-fuplex la comunicación, es necesario cerrar cada uno de los dos sentidos de forma independiente.

En un cierre normal y ordenado, el host cliente es el que inicia el cierre. Existen otras dos formas báscas de finalización o cierre de conexión:

  • El host remoto y no el cliente es el que inicia el cierre.
  • Ambos host inician el cierre de forma simultánea.

Vamos a ver el primer caso. Es el host cliente es el que inicia el proceso de cierre de conexión.

Nos basaremos en la siguiente captura:

Wireshark cierre conexión FTP

Se realiza de la siguiente forma:

  • Paquete nº 2. El cliente no tiene más datos que transferir, envía entonces un segmento TCP con el bit FIN activado a lque le acompaña un ACK . Libera la conexión en su sentido. De esta forma se le informa al host remoto o servidor que no tiene más datos que enviar. Con el ACK se identifica de forma unívoca la conexión establecida entre los dos hosts:

Wireshark cierre conexión FTP

Vemos los flags FIN y ACK activados. El ACK se establece en 1 de forma relativa. No continene ningún dato. Número de sequencia = 1.

  • Paquete nº 3. El host remoto o servidor recibe el segmento TCP con el FIN activado y envía al host que inició el cierre (cliente) confirmación de la recepción. Es decir, envía un ACK con valor ACK recibido + 1, ACK = 2. De momento no libera, no cierra la conexión establecida. Tan solo confirma la petición iniciada por el cliente:

Wireshark cierre conexión FTP tcp

Vemos en la captura el ACK establecido a 2 que se envia confirmando la recepción del FIN.

  • Paquete nº 4. El host servidor ya ha confirmado en el paquete 3 la rececpción  del FIN por parte del cliente, ahora envía un FIN ACK al cliente ya que, como hemos dicho, la transmisión es full-duplex y también el host remoto o servidor debe cerrar su sentido de la conexión:

Wireshark cierre conexión FTP tcp

Vemos los flgas FIN ACK activados. Y el valor de ACK = 2. Número de sequencia = 1.

  • Paquete nº 5. El host cliente recibe el FIN y y envía su correspondiente confirmación en forma de ACK activado. Aún habiendo ya cerrado su sentido de la conexión, debe confirmar la recepción del FIN. El servidor o host remoto recibe el ACK con numero de sequencia 2 y valor ACK = 2. La conexión se cierra y los recursos que se han usado en la conexión se liberan:

 

Wireshark cierre conexión FTP tcp

Podría pasar que una conexión puediera estar «medio abierta».Esto ocurre en el caso que uno de los hosts cierre la conexión pero el otro no. El host  que cerró la conexión no puede enviar más datos pero el otro host si.

Esta entrada fue publicada en Seguridad y redes, Wireshark . Tshark. Guarda el enlace permanente.

13 respuestas a Wireshark / Tshark. Finalización o cierre de una conexión TCP.

  1. Patricio Castagnaro dijo:

    Sinceramente quiero agradecerte por el gran aporte intelectual que haces a la sociedad.
    Es valiosisimo el trabajo que te tomas para explicar cada uno de los temas y es mas que util, por lo menos para mi.
    Desde ya muchisimas gracias y ojala que sigas posteando muchas veces mas!!

  2. Alfon dijo:

    Gracis Patricio por tu comentario. Así da gusto seguir con el blog.

  3. Pablo Malfer dijo:

    Wooow, tengo un trabajo sobre sniffer y creeme q me has ayudado un monton con cada uno de los procesos, te lo agradezco mucho, de forma clara y pedagogica, muy bueno!

  4. Alfon dijo:

    Gracias Pablo por tus comentarios y por leerme.

  5. David dijo:

    Buenas!
    una dudilla sino te importa.
    Siempre que se abre una conexion TCP hay que cerrarla despues de usarla?por ejemplo en HTTP ya sea persistente o no?????
    Un saludo y gracias!!

  6. Alfon dijo:

    David,
    Tú mismo David puedes comprobarlo. Con Wireshark, por ejemplo, estableces un filtro de visualización, por ejemplo: ip.addr==xx.xx.xx.xx (la IP que sea del un determinado sitio web) te conectas a el mediante navegador y observa cuando el cliente (tú) envía al servidor (sitio web) un segmento con FIN+ACK, la respuest adel servidor, etc. Prueba con ditintos sitios.

  7. alberto dijo:

    Tengo una pregunta, y es por qué es necesario el cierre de la conexión en el protocolo TCP y no simplemente se dejan de enviar segmentos entre cliente y servidor, es decir, que dejen la conexion inactiva.

  8. Enrique dijo:

    Excelente, tengo una exposicion, y esos temas estan confusos de comprender, bueno, hasta que lo vi aqui jajaja

    Gracias!!!

  9. Iñigo dijo:

    Hola Alfon, me gustaría saber si el cierre de la conexiòn es simultanio habria dos
    paquetes seguidos con [FIN,ACK] y el ultimo por parte del que inició la comunicación con unicamente [ACK]. Gracias y me gustaría saber como has aprendido tanto.

  10. charly dijo:

    Buenas, tengo una duda/pregunta que no se muy bien como resolver, estoy haciendo una práctica sobre el protocolo TCP y hay una pregunta en el cuestionario que dice que por qué en la captura que nos ha colgado el profesor no se ve el cierre de la conexión, puede ser por una conexión semi-abierta donde uno de los extremos pierde la conexión por una pérdida de alimentación por ejemplo???
    Gracias!

  11. Javier dijo:

    Tengo una duda, que pasa si hay un [PSH,ACK]. Que me está informando eso? Muchas gracias

  12. david dijo:

    trabajo en telecomunicaciones y estos analisis me parecen muy valiosos. gracias

Deja un comentario