Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

1.1K
Vistas
FIN omitido, FIN-ACK enviado

Como está escrito en Wikipedia, cerrar la conexión TCP debería usar paquetes FIN->(FIN,ACK)->ACK. Sin embargo, cuando uso la función close () para cerrar el socket, no veo el paquete FIN, se envía instantáneamente un paquete (FIN, ACK) del servidor al cliente, luego el cliente también cierra la conexión enviando (FIN, ACK) y el servidor responde con paquete ACK. Entonces, ¿dónde está el paquete FIN que falta (tal vez se fusionó con FIN, ACK)?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

La secuencia de cierre también puede ser diferente y no necesita tener FIN+ACK dentro del mismo paquete:

  • ACK solo reconoce la recepción de datos (por ejemplo, recibió todo hasta el número de secuencia dado)
  • los paquetes se volverán a enviar hasta que uno reciba un ACK para ellos
  • FIN simplemente dice que el lado que envía el FIN no enviará más datos. No da información si seguirá recibiendo datos.
  • como cualquier otro paquete, FIN se volverá a enviar hasta que se acuse recibo

Los protocolos como HTTP admiten un apagado unilateral, por ejemplo, el cliente envía los datos de la solicitud seguidos de un FIN para notificar al servidor que no enviará más datos. Pero seguirá recibiendo los datos enviados por el servidor. El servidor reconocerá el FIN como lo hizo con todos los datos antes. Una vez que el servidor haya terminado, enviará su propio FIN que el cliente ACK. En este caso tienes

 1. client: FIN (will not send more) 2. server: ACK (received the FIN) .. server: sends more data..., client ACKs these data 3. server: FIN (will not send more) 4. client: ACK (received the FIN)

Tenga en cuenta que el paquete que ve en el paso n.º 1 también puede tener un ACK. Pero este ACK solo reconoce los datos enviados antes por el servidor. Si el servidor no tiene más datos para enviar, también podría cerrar la conexión. En este caso, los pasos 2+3 se pueden fusionar, por ejemplo, el servidor envía un FIN+ACK, donde el ACK reconoce el FIN recibido por el cliente.

Si un lado envía su FIN, la conexión se llama semicerrada. Se cierra por completo una vez que ambos lados envían su FIN y reciben el ACK para el FIN, sin importar si lo hacen en 3 o 4 paquetes.

over 4 years ago · Santiago Trujillo Denunciar

0

Ya debe haber recibido el FIN para poder enviar un FIN/ACK. ¿Estás cerrando en respuesta a la lectura de EOS?

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda