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).