Tenho lido que, para encerrar uma conexão TCP, três handshakes são necessários: FIN, FIN ACK e ACK. No entanto, ao fechar uma conexão, o Wireshark exibe FIN ACK, FIN ACK, ACK; ele nunca exibe FIN sozinho.

No entanto, ao estabelecer uma conexão, o Wireshark exibe claramente os três handshakes: SYN, SIN ACK , ACK.

Então, estou meio confuso por que, ao fechar a conexão, os três handshakes não são exibidos assim.

Resposta

Uma implementação TCP pode enviar um FIN autônomo no primeiro segmento de fechamento. No entanto, ela pode também enviar um FIN ACK.

Este último é estritamente melhor: a implementação pode agrupar um ACK “livre” com o segmento FIN sem torná-lo mais longo. Isso porque, se você não fizer ACK, ainda haverá espaço no segmento para o número do ACK, que será ignorado, e desperdiçar largura de banda. Portanto, o último ACK enviado é simplesmente reenviado, caso o receptor o tenha perdido.

Isso é verdadeiro para todos os segmentos TCP. Portanto, exceto para o primeiro segmento SYN, onde o remetente não tem informações sobre o número ACK, todos os outros segmentos geralmente terão o sinalizador ACK ativado.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *