Transmissão confiável e orientada a conexão na Internet — RFC 793 / RFC 9293
O Transmission Control Protocol entrega um fluxo confiável e ordenado de bytes sobre o serviço de melhor esforço do IP.
O IP pode perder, duplicar ou entregar pacotes fora de ordem. O TCP constrói, acima dele, a ilusão de um canal contínuo e seguro de bytes — sem que a aplicação precise lidar com pacotes.
Números de sequência, ACKs cumulativos e retransmissão garantem que todo byte chegue.
A janela de recepção impede que um emissor rápido afogue um receptor lento.
Ajusta a taxa de envio à capacidade da rede, evitando o colapso por sobrecarga.
O cabeçalho tem 20 bytes (até 60 com opções). Cada linha = 32 bits:
Os flags controlam a conexão; o número de sequência/ACK sustenta a confiabilidade.
| Flag | Significado |
|---|---|
| SYN | Inicia a conexão (sincroniza sequência). |
| ACK | O campo de confirmação é válido. |
| FIN | Encerra o envio (sem mais dados). |
| RST | Aborta a conexão imediatamente. |
| PSH | Entregar os dados à aplicação já. |
| URG | Há dados urgentes (raro hoje). |
O número de sequência identifica a posição do primeiro byte do segmento no fluxo. O ACK informa o próximo byte esperado (confirmação cumulativa).
As três mensagens sincronizam os números de sequência iniciais (ISN) de cada lado.
O receptor confirma os bytes recebidos com ACKs cumulativos. Se um segmento se perde, o emissor o reenvia por dois gatilhos:
O tempo de espera adapta-se ao RTT medido (Jacobson/Karels):
O receptor anuncia, no campo Janela, quanto espaço livre tem em seu buffer (rwnd). O emissor nunca envia mais do que isso sem confirmação.
Se o buffer enche, o receptor anuncia janela = 0 e o emissor pausa, sondando periodicamente. Técnicas evitam a síndrome da janela boba (silly window syndrome), que desperdiçaria a rede com segmentos minúsculos.
Diferente do controle de fluxo (que protege o receptor), este protege a rede. O emissor mantém uma janela de congestionamento (cwnd) e envia min(cwnd, rwnd).
O padrão "dente de serra": cresce até detectar perda, recua e volta a crescer.
Cada sentido é fechado de forma independente (o TCP é full-duplex), permitindo o "meio-fechamento".
| Estado | Significado |
|---|---|
| LISTEN | Servidor aguardando conexões. |
| SYN-SENT / SYN-RECEIVED | Handshake em andamento. |
| ESTABLISHED | Conexão aberta; dados fluindo nos dois sentidos. |
| FIN-WAIT / CLOSE-WAIT | Um lado iniciou o encerramento. |
| TIME-WAIT | Espera de 2·MSL para garantir que ACKs/segmentos atrasados não confundam uma futura conexão. |
| CLOSED | Conexão encerrada. |
| Aspecto | TCP | UDP |
|---|---|---|
| Conexão | Orientado a conexão (handshake) | Sem conexão |
| Confiabilidade | Garantida (ACK + retransmissão) | Não garantida |
| Ordem | Preservada | Não preservada |
| Cabeçalho | 20–60 bytes | 8 bytes |
| Controle de fluxo/congestão | Sim | Não |
| Uso típico | Web (HTTP), e-mail, SSH, transferência de arquivos | DNS, streaming, VoIP, jogos |
O atacante envia muitos SYN e não completa o handshake, lotando a fila de conexões meio-abertas (DoS). Defesa: SYN cookies.
Adivinhar o ISN permite injetar dados ou sequestrar a conexão. Defesa: ISN aleatório (RFC 6528).
Um RST forjado derruba a conexão. Mitigações verificam a janela e a sequência do pacote.
O TCP transforma o serviço não confiável do IP em um fluxo de bytes confiável e ordenado. Abre a conexão com o three-way handshake, recupera perdas com ACK e retransmissão, ajusta a taxa com controle de fluxo (rwnd) e de congestionamento (cwnd, partida lenta + AIMD), e encerra com o four-way handshake. É a base de HTTP, e-mail e SSH — deixando a cifragem para o TLS.
Voltar aos Tópicos