TCP e UDP
Como os protocolos de transporte coordenam a comunicação confiável ou de baixa latência entre aplicações pela Internet.
Por que os protocolos de transporte existem
O IP pode entregar pacotes a uma máquina, mas não garante ordem, confiabilidade ou justiça — os protocolos de transporte fornecem essas garantias.
- O IP entrega pacotes, mas não garante que eles cheguem ou cheguem na ordem correta.
- As aplicações precisam de confiabilidade, ordenação e controle do fluxo de dados.
- Os protocolos de transporte adicionam estrutura sobre a entrega bruta de pacotes.
Detalhes
Depois que o DNS fornece um endereço IP, seu dispositivo pode enviar pacotes para o destino correto. Mas o IP apenas move pacotes independentes pelas redes — ele não acompanha se eles chegam, se chegam na ordem correta ou se a rede está congestionada.
Se você dividir uma página da web em muitos pacotes, alguns podem chegar fora de ordem, alguns podem atrasar e alguns podem ser perdidos completamente. Sem coordenação adicional, a aplicação receptora não teria uma forma confiável de reconstruir os dados originais corretamente.
Os protocolos de transporte resolvem quatro problemas fundamentais: ordenação (reconstruir os dados corretamente), confiabilidade (detectar e retransmitir dados perdidos), multiplexação (permitir que várias aplicações compartilhem um único endereço IP) e controle de congestionamento (evitar que a rede fique sobrecarregada).
Em resumo, o IP responde “Para onde este pacote deve ir?”
Os protocolos de transporte respondem “Como esta conversa deve se comportar?”
O que é uma porta?
Um endereço IP identifica a máquina. Um número de porta identifica a aplicação em execução nessa máquina.
- Endereços IP roteiam dados para o dispositivo correto em uma rede.
- Portas roteiam dados para a aplicação correta nesse dispositivo.
- Vários serviços podem ser executados na mesma máquina usando números de porta diferentes.
Detalhes
Quando os dados chegam ao endereço IP de um servidor, o sistema operacional ainda precisa decidir qual programa deve tratá-los. Uma única máquina pode executar um servidor web, um servidor de banco de dados, um serviço SSH e muitas outras aplicações ao mesmo tempo.
É aqui que entram os números de porta. Uma porta é um ponto final lógico de comunicação usado por protocolos de transporte como TCP e UDP. Ela permite que o sistema faça a demultiplexação do tráfego de entrada e o entregue ao processo de aplicação correto.
Por exemplo, a porta 80 é normalmente usada para HTTP, a porta 443 para HTTPS e a porta 22 para SSH. Quando você acessa um site seguro, seu navegador se conecta ao endereço IP do servidor na porta 443, indicando que quer se comunicar usando HTTPS.
Sem portas, uma máquina só poderia executar uma aplicação de rede por vez. As portas permitem que milhares de conversas simultâneas ocorram em um único endereço IP.
TCP – Conversa Confiável
TCP transforma a entrega não confiável de pacotes em uma conversa estruturada, confiável e ordenada entre duas máquinas.
- Garante que os dados cheguem na ordem correta usando números de sequência.
- Retransmite pacotes que são perdidos durante o trânsito.
- Controla o congestionamento da rede e adapta dinamicamente a velocidade de envio.
Detalhes
O Transmission Control Protocol (TCP) foi projetado para aplicações que exigem entrega completa e precisa de dados. Diferente do IP bruto, o TCP trata a comunicação como um fluxo contínuo de bytes, em vez de pacotes independentes.
Cada segmento de dados recebe um sequence number. O receptor usa esses números para reordenar os dados corretamente antes de passá-los para a aplicação. Se um segmento estiver faltando, o TCP detecta a lacuna e solicita a retransmissão.
O TCP também inclui flow control, que impede que um remetente rápido sobrecarregue um receptor mais lento. Ele faz isso usando um mecanismo de janela deslizante que limita quanto dado não reconhecido pode estar em trânsito.
Por fim, o TCP implementa congestion control. Ele monitora as condições da rede e ajusta a velocidade de transmissão para evitar sobrecarregar os roteadores. Isso protege a estabilidade geral da rede e, ao mesmo tempo, maximiza a taxa de transferência quando as condições permitem.
O Handshake TCP de 3 Vias
Antes que qualquer dado confiável seja enviado, o TCP estabelece uma conexão usando um handshake de três etapas: SYN → SYN-ACK → ACK.
Cliente
Servidor
Cliente: Vamos sincronizar!
- SYN: O cliente solicita iniciar uma conexão.
- SYN-ACK: O servidor reconhece e concorda em se comunicar.
- ACK: O cliente confirma, e a conexão é estabelecida.
Detalhes
TCP é orientado à conexão, o que significa que ambos os lados precisam concordar em se comunicar antes que a transferência de dados comece. Esse processo garante que tanto o cliente quanto o servidor estejam prontos e aptos a trocar dados.
Primeiro, o cliente envia um pacote SYN (synchronize). Esse pacote propõe um número de sequência inicial e sinaliza o desejo de abrir uma conexão.
Segundo, o servidor responde com um SYN-ACK. Isso reconhece a solicitação do cliente e fornece o próprio número de sequência inicial do servidor.
Por fim, o cliente envia um ACK para confirmar o recebimento do número de sequência do servidor. Nesse ponto, ambos os lados têm números de sequência sincronizados e a conexão está oficialmente estabelecida.
Somente depois que esse handshake é concluído o TCP começa a transferir os dados da aplicação.
Como o TCP Garante Confiabilidade
O TCP rastreia os dados enviados e as confirmações para garantir que nada seja perdido e que tudo chegue na ordem.
- Números de sequência detectam dados ausentes ou fora de ordem.
- ACKs confirmam o recebimento e acionam a retransmissão, se necessário.
- Uma janela deslizante controla quanto dado pode ser enviado com segurança.
Detalhes
O TCP atribui um número de sequência a cada byte no fluxo de dados. Isso permite que o receptor detecte segmentos ausentes ou fora de ordem e reconstrua corretamente a mensagem original.
O receptor envia de volta números de ACK (acknowledgment) indicando o próximo byte esperado. Se o remetente não receber um ACK dentro de um certo tempo, ele assume que o segmento foi perdido.
Quando uma perda é detectada, o TCP realiza uma retransmissão, enviando os dados ausentes novamente. Esse mecanismo garante confiabilidade mesmo quando pacotes são descartados devido a congestionamento ou instabilidade da rede.
O TCP também usa uma janela deslizante para controle de fluxo. Em vez de esperar um ACK após cada pacote, o remetente pode transmitir vários segmentos dentro de um tamanho de janela permitido. Isso melhora a eficiência enquanto mantém garantias rígidas de entrega.
UDP – Mínimo e Rápido
UDP envia dados rapidamente sem estabelecer uma conexão ou garantir a entrega.
- Sem handshake — os dados são enviados imediatamente.
- Sem garantias de ordenação ou retransmissão.
- Menor overhead e latência em comparação com TCP.
Detalhes
Protocolo de Datagrama do Usuário (UDP) é sem conexão. Diferente do TCP, ele não realiza um aperto de mão antes de enviar dados. Um remetente simplesmente transmite pacotes para o IP e a porta de destino.
UDP não rastreia números de sequência para confiabilidade, não espera por confirmações e não retransmite pacotes perdidos. Se um pacote for descartado, ele se perde.
Como o UDP remove esses mecanismos de coordenação, ele tem overhead e latência significativamente menores. Isso o torna adequado para casos de uso em que a velocidade importa mais do que a entrega perfeita, como streaming ao vivo, jogos online ou consultas DNS.
Em resumo, o UDP prioriza desempenho e simplicidade em vez de confiabilidade.
Quando Usar TCP vs UDP
Escolha TCP quando a correção for crítica. Escolha UDP quando velocidade e baixa latência forem mais importantes do que a entrega perfeita.
| Protocolo | Melhor Para | Prioridade | Exemplos |
|---|---|---|---|
| 📦 TCP | Entrega confiável e ordenada | Precisão | 🌐 Web 📥 Download de Arquivo |
| ⚡ UDP | Entrega rápida e de baixa latência | Velocidade | 🎮 Jogos 📹 Streaming 🔎 DNS |
- Use TCP quando você precisar de entrega de dados completa, ordenada e confiável.
- Use UDP quando baixa latência for mais importante do que precisão garantida.
Detalhes
TCP é ideal para aplicações em que dados ausentes ou corrompidos quebrariam a funcionalidade. Páginas web, APIs, downloads de arquivos e e-mail exigem dados completos e corretamente ordenados. Até mesmo um único byte ausente poderia corromper o resultado.
UDP é mais adequado para aplicações em que a perda ocasional de pacotes é aceitável. Vídeo em tempo real, chamadas de voz, jogos e pequenas consultas sem estado, como DNS, priorizam velocidade em vez de perfeição. Esperar por retransmissões criaria um atraso perceptível.
A decisão principal é esta:
Se precisão e completude forem obrigatórias, use TCP.
Se responsividade e baixa latência forem críticas, UDP pode ser a melhor opção.
Cenários de Falha da Camada de Transporte
Falhas de transporte geralmente ocorrem durante a configuração da conexão, a entrega de pacotes ou sob forte congestionamento de rede.
- Porta bloqueada → conexão recusada pelo host de destino.
- SYN enviado, mas nenhum SYN-ACK recebido → timeout da conexão.
- Alta perda de pacotes ou congestionamento → retransmissões e desempenho lento.
Detalhes
Se uma porta de destino estiver fechada ou bloqueada por um firewall, o servidor pode responder imediatamente com uma mensagem de connection refused. Isso significa que a máquina está acessível, mas nenhuma aplicação está escutando nessa porta.
Se um cliente envia um SYN, mas nunca recebe um SYN-ACK, a tentativa de conexão eventualmente vai timeout. Isso geralmente indica que o servidor está fora do ar, inacessível ou filtrado por um firewall no caminho.
Quando a perda de pacotes é alta, o TCP detecta confirmações ausentes e realiza retransmissions. Embora a confiabilidade seja preservada, o desempenho piora significativamente.
Sob forte congestionamento, o TCP reduz sua taxa de envio por meio de algoritmos de controle de congestionamento. A conexão continua ativa, mas a vazão diminui e a latência aumenta.
Seção de Perguntas
1 / 5