Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

1.2K
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda