He estado leyendo que para terminar una conexión TCP se requieren 3 apretones de manos: FIN, FIN ACK y ACK. Sin embargo, al cerrar una conexión, Wireshark muestra FIN ACK, FIN ACK, ACK; nunca muestra FIN solo.
Sin embargo, al establecer una conexión, Wireshark muestra claramente los tres apretones de manos: SYN, SIN ACK , ACK.
Así que estoy un poco confundido por qué al cerrar la conexión los tres apretones de manos no se muestran así.
Respuesta
Una implementación de TCP puede enviar un FIN independiente en el primer segmento de cierre. Sin embargo, puede también enviar un FIN ACK, en su lugar.
Este último es estrictamente mejor: la implementación puede agrupar un ACK «gratis» con el segmento FIN sin alargarlo. Esto se debe a que, si no lo hace, todavía hay espacio en el segmento para el número de ACK, que se ignorará, y desperdiciar ancho de banda. Por lo tanto, el último ACK enviado simplemente se reenvía, en caso de que el receptor lo haya perdido.
Esto es cierto para todos los segmentos TCP. Por lo tanto, a excepción del primer segmento SYN, donde el remitente no tiene información sobre el número ACK, todos los demás segmentos generalmente tendrán el indicador ACK activado.