A flag FIN (Finish).
A flag FIN (Finish) no protocolo TCP indica que um dos lados da conexão deseja encerrar a sessão de forma ordenada. Ela informa ao destinatário que o transmissor não enviará mais dados, embora ainda possa receber dados até que a conexão seja completamente encerrada.
Como funciona?
O encerramento normal de uma conexão TCP ocorre em quatro etapas (four-way handshake):
O host A envia um pacote com a flag FIN.
O host B responde com um ACK, confirmando o recebimento do FIN.
Quando o host B também termina de enviar seus dados, ele envia outro FIN.
O host A responde com um ACK, finalizando a conexão.
Fluxo simplificado:
Cliente Servidor
| ——– FIN ———–> |
| <——- ACK ———— |
| <——- FIN ———— |
| ——– ACK ———–> |
Após o último ACK, a conexão é encerrada normalmente.
Como identificar no tcpdump
Exemplo de captura:
14:25:30.123456 IP 192.168.1.10.50432 > 192.168.1.20.443: Flags [F.], seq 1250, ack 3500, win 502
Neste exemplo:
F = FIN (solicitação para encerrar a conexão)
. = ACK (o pacote também reconhece dados recebidos)
Outro exemplo:
Flags [F]
Indica apenas a flag FIN.
Quando a flag FIN aparece?
É comum observá-la quando:
Um navegador fecha uma conexão HTTP/HTTPS.
Uma aplicação termina uma transferência de dados.
O servidor encerra uma sessão por inatividade (timeout).
O cliente fecha uma conexão TCP normalmente.
FIN × RST
| FIN | RST |
| ———————————————- | ——————————————————- |
| Encerra a conexão de forma **graciosa** | Encerra a conexão **imediatamente** |
| Permite que os dados pendentes sejam entregues | Descarta a conexão sem aguardar dados pendentes |
| Faz parte do encerramento normal do TCP | Geralmente indica erro, rejeição ou interrupção abrupta |
Resumo
FIN = Finish.
Indica que o transmissor não enviará mais dados.
Faz parte do encerramento normal de uma conexão TCP.
Normalmente é seguido por um ACK e, posteriormente, por um FIN da outra ponta.
É diferente da flag RST, que encerra a conexão de forma abrupta.


