O Cabeçalho TCP é uma estrutura de dados de 20 bytes (sem as opções) que contém todas as informações necessárias para gerenciar a conexão confiável entre os dois hosts.

1. Campos Fundamentais

Campo Tamanho (Bits) Função
Porta de Origem 16 Identifica o processo transmissor.
Porta de Destino 16 Identifica o processo receptor.
Sequence Number 32 Número do primeiro byte de dados de um segmento.
Acknowledgment Number 32 Número do próximo byte de dados esperado.
Data Offset 4 Indica o tamanho do cabeçalho TCP (onde começam os dados).
Reserved 6 Reservado para uso futuro.
Control Flags 6 Bits que controlam o estado da conexão (SYN, ACK, FIN, etc).
Window Size 16 Tamanho da janela de recepção (usada para Controle de Fluxo).
Checksum 16 Usado para detecção de erros no cabeçalho e dados.
Urgent Pointer 16 Identifica dados urgentes (raramente usado hoje).

2. As 6 Flags de Controle Mais Comuns

As flags são bits de controle (0 ou 1) que definem o propósito do segmento:
- SYN (Synchronize): Usado para iniciar uma conexão.
- ACK (Acknowledgment): Indica que o campo de número de confirmação é válido.
- FIN (Finish): Usado para encerrar uma conexão de forma amigável.
- RST (Reset): Força o fechamento imediato de uma conexão devido a erro ou política de segurança.
- PSH (Push): Diz ao receptor para entregar os dados imadiatamente à aplicação, sem esperar o buffer encher.
- URG (Urgent): Indica que os dados contidos no segmento devem ser processados com prioridade.

3. As Opções TCP

Após o cabeçalho fixo, o TCP pode incluir Opções, como:
- MSS (Maximum Segment Size): Negociado no início da conexão.
- Window Scale: Permite janelas de recepção maiores do que 64 KB (essencial para redes de alta velocidade).
- SACK (Selective Acknowledgment): Permite avisar exatamente quais blocos de dados chegaram, economizando retransmissões.
- Timestamps: Usado para detecção de segmentos antigos e cálculo do tempo de ida e volta (RTT).