Terminación de conexión TCP – Part 1

En TCP 3-way Handshake Process estudiamos cómo se establecen las conexiones entre el cliente y el servidor en el Protocolo de control de transmisión (TCP) utilizando segmentos de bits SYN . En este artículo, estudiaremos cómo TCP cierra la conexión entre el Cliente y el Servidor. Aquí también necesitaremos enviar segmentos de bits a un servidor cuyo bit FIN está configurado en 1. 

TCP admite dos tipos de liberaciones de conexión como la mayoría de los protocolos de transporte orientados a la conexión: 
 

  1. Liberación de conexión elegante: 
    en la liberación de conexión elegante, la conexión está abierta hasta que ambas partes hayan cerrado sus lados de la conexión. 
  2. Liberación de conexión abrupta: 
    en una liberación de conexión abrupta, una entidad TCP se ve obligada a cerrar la conexión o un usuario cierra ambas direcciones de transferencia de datos.  

Liberación abrupta de conexión: 
Se realiza una liberación abrupta de conexión cuando se envía un segmento RST. Se puede enviar un segmento RST por las siguientes razones: 

  1. Cuando se recibió un segmento no SYN para una conexión TCP inexistente. 
     
  2. En una conexión abierta, algunas implementaciones de TCP envían un segmento RST cuando se recibe un segmento con un encabezado no válido. Esto evitará ataques cerrando la conexión correspondiente. 
     
  3. Cuando algunas implementaciones necesitan cerrar una conexión TCP existente, envían un segmento RST. Cerrarán una conexión TCP existente por las siguientes razones: 
    • Falta de recursos para apoyar la conexión. 
       
    • Ahora no se puede acceder al host remoto y ha dejado de responder. 
       

Cuando una entidad TCP envía un segmento RST, debe contener 00 si no pertenece a ninguna conexión existente; de ​​lo contrario, debe contener el valor actual del número de secuencia para la conexión y el número de reconocimiento debe establecerse en la siguiente secuencia esperada. número en esta conexión. 

Liberación de conexión elegante: 
la forma común de terminar una conexión TCP es mediante el uso de la bandera FIN del encabezado TCP. Este mecanismo permite que cada host libere su propio lado de la conexión individualmente. 

11

Cómo funciona el mecanismo en TCP: 
 

  1. Paso 1 (FIN desde el cliente): 
    suponga que la aplicación del cliente decide que desea cerrar la conexión. (Tenga en cuenta que el servidor también podría optar por cerrar la conexión). Esto hace que el cliente envíe un segmento TCP con el bit FIN establecido en 1 al servidor y entre en el estado FIN_WAIT_1 . Mientras está en el estado FIN_WAIT_1 , el cliente espera un segmento TCP del servidor con un acuse de recibo (ACK).
  2. Paso 2 (ACK del servidor): 
    cuando el servidor recibe el segmento de bits FIN del remitente (cliente), el servidor envía inmediatamente un segmento de reconocimiento (ACK) al remitente (cliente).
  3. Paso 3 (Cliente en espera): 
    mientras se encuentra en el estado FIN_WAIT_1 , el cliente espera un segmento TCP del servidor con un reconocimiento. Cuando recibe este segmento, el cliente ingresa al estado FIN_WAIT_2 . Mientras está en el estado FIN_WAIT_2 , el cliente espera otro segmento del servidor con el bit FIN establecido en 1.
  4. Paso 4 (FIN del servidor): 
    el servidor envía el segmento de bits FIN al remitente (cliente) después de un tiempo cuando el servidor envía el segmento ACK (debido a algún proceso de cierre en el servidor).
  5. Paso 5 (ACK del cliente): 
    cuando el cliente recibe el segmento de bits FIN del servidor, el cliente reconoce el segmento del servidor y entra en el estado TIME_WAIT . El estado TIME_WAIT permite que el cliente vuelva a enviar el acuse de recibo final en caso de que se pierda el ACK . El tiempo que pasan los clientes en el estado TIME_WAIT depende de su implementación, pero sus valores típicos son 30 segundos, 1 minuto y 2 minutos. Después de la espera, la conexión se cierra formalmente y se liberan todos los recursos del lado del cliente (incluidos los números de puerto y los datos del búfer).

En las siguientes figuras, se ilustra la serie de estados visitados por el lado del servidor y también por el lado del cliente, suponiendo que el cliente comienza a interrumpir la conexión. En estas dos figuras de transición de estado, solo hemos mostrado cómo se establece y cierra normalmente una conexión TCP. 

Estados TCP visitados por ClientSide – 
 

Estados TCP visitados por ServerSide – 
 

Aquí no hemos descrito lo que sucede en ciertos escenarios, como cuando ambos lados de una conexión quieren iniciar o cerrar al mismo tiempo. Si está interesado en obtener más información sobre este y otros temas avanzados relacionados con TCP, le recomendamos que consulte el libro completo de Stevens. 

Pregunta GATE: 
considere un cliente TCP y un servidor TCP ejecutándose en dos máquinas diferentes. Después de completar la transferencia de datos, el cliente TCP llama a close para finalizar la conexión y se envía un segmento FIN al servidor TCP. El TCP del lado del servidor responde enviando un ACK que recibe el TCP del lado del cliente. Según el diagrama de estado de la conexión TCP (RFC 793), ¿en qué estado espera la conexión TCP del lado del cliente el FIN del TCP del lado del servidor? 
(A) ÚLTIMO ACK 
(B) TIEMPO DE ESPERA 
(C) FIN-ESPERA-1 
(D) FIN-ESPERA-2 

Explicación: (D) 
GATE CS 2017 (Conjunto 1), Pregunta 12 

Referencias –  
Terminación de la conexión TCP – Wikipedia  
http://www.bau.edu.jo/UserPortal/UserProfile/PostsAttach/10617_1870_1.pdf 

Este artículo es una contribución de Kadam Patel . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. 

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *