Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

1.1K
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!