01 - Características
video: https://youtu.be/... no frontmatter da nota.As características técnicas do UDP (User Datagram Protocol) foram definidas na RFC 768 (1980) com um objetivo: ser o protocolo de transporte mais simples e leve possível. Ao contrário do TCP, que adiciona dezenas de mecanismos para garantir confiabilidade, o UDP faz o mínimo indispensável: encapsular dados da aplicação em datagramas e entregá-los ao IP.
1. Sem Conexão (Connectionless)
- Não há fase de estabelecimento de conexão — o primeiro datagrama já pode conter dados úteis (0-RTT).
- O emissor não precisa avisar o receptor; simplesmente envia.
- O receptor pode não estar pronto ou sequer existir — o datagrama será descartado por ICMP Port Unreachable.
- Cada datagrama é independente: não há relação com datagramas anteriores ou posteriores.
Consequências
- Latência mínima (ideal para DNS, VoIP).
- Sem overhead de handshake (1 RTT economizado em cada "conversa").
- Sem estado no kernel além do socket de escuta, o que consome pouquíssima memória.
2. Não Confiável (Unreliable / Best-Effort)
- O UDP não garante entrega. Datagramas podem ser perdidos por:
- Congestão em roteadores (filas cheias).
- Erro de checksum detectado no destino.
- Estouro do buffer de recepção do socket.
- Falha de enlace (cabos, rádio, Wi-Fi).
- Nenhuma retransmissão automática. Se a aplicação precisa de confiabilidade, deve implementá-la (ex: TFTP tem seu próprio ACK/timeout; QUIC tem sua própria fila de retransmissão).
- Notificação de erros opcional: o receptor pode enviar ICMP Destination Unreachable se a porta não existir, mas nem todos os hosts o fazem e o ICMP pode ser filtrado.
3. Sem Ordem (No Ordering)
- Datagramas podem chegar fora de ordem, especialmente em redes com múltiplos caminhos (ECMP, LAG, Wi-Fi com retransmissão L2).
- O UDP não reordena. Se a aplicação precisa de ordem, deve numerar os datagramas e montar seu próprio buffer.
- Em VoIP e vídeo, a ordenação é parcial: pacotes atrasados além de um jitter buffer são simplesmente descartados — vale mais chegar "atrasado e descartado" do que chegar certo e atrapalhar a reprodução em tempo real.
4. Sem Controle de Fluxo (No Flow Control)
- O UDP não respeita a janela de recepção do destino.
- Se a aplicação emissora produz datagramas mais rápido do que o receptor consegue consumir, o buffer do socket receptor enche e os datagramas extras são silenciosamente descartados.
- O emissor nunca é informado do descarte — só sabe se a aplicação receptora implementar um ACK customizado.
5. Sem Controle de Congestão (No Congestion Control)
- O UDP não reage a perdas. Ao contrário do TCP, que reduz cwnd ao detectar perda (AIMD), um fluxo UDP mantém a taxa fixa.
- Isso pode causar problemas em redes congestionadas: fluxos UDP "surdos" podem afogar fluxos TCP que recuam educadamente.
- A RFC 8085 recomenda que aplicações UDP implementem algum controle de taxa (ex: TFRC, LEDBAT, BBR-like). QUIC e WebRTC já fazem isso.
6. Datagrama (Message-Oriented)
- O UDP preserva fronteiras de mensagem. Se a aplicação chamar
sendto()com 512 bytes, o receptor fará umrecvfrom()e receberá exatamente os mesmos 512 bytes — não 256 duas vezes, como no TCP (que é byte stream). - Tamanho máximo prático: 1472 bytes em Ethernet (1500 − 20 IP − 8 UDP). Datagramas maiores podem ser fragmentados pelo IP, com risco de perda total se qualquer fragmento faltar.
7. Simples e Leve (Lightweight)
- Cabeçalho fixo de 8 bytes (Source Port + Destination Port + Length + Checksum).
- Processamento de kernel mínimo: sem temporizadores, sem fila de retransmissão, sem máquinas de estado, sem cálculo de RTT.
- Consumo de CPU/RAM por datagrama é uma fração do TCP — crucial para IoT, sensores e servidores DNS autoritativos sob alta carga.
8. Suporte a Multicast e Broadcast
- O UDP suporta nativamente envio 1-para-muitos:
- Broadcast limitado:
255.255.255.255(DHCP descoberta). - Broadcast dirigido:
192.168.1.255(subnet broadcast). - Multicast:
224.0.0.0/4(IPTV, OSPF Hello, mDNS em224.0.0.251, SSDP em239.255.255.250). - O TCP não suporta multicast — exige conexão ponto-a-ponto com state em ambas as pontas.
- Esta característica tornou o UDP dominante em mídia streaming ao vivo, videoconferência e descoberta de serviços em LAN.
9. Tabela Comparativa: UDP vs TCP
| Característica | UDP | TCP |
|---|---|---|
| Modelo | Datagrama | Byte stream |
| Conexão | Sem | Com (3-way handshake) |
| Confiabilidade | Não | Sim (retransmissão) |
| Ordem de entrega | Não garantida | Garantida |
| Controle de fluxo | Não | Sim (Window Size) |
| Controle de congestão | Não | Sim (CUBIC, BBR) |
| Cabeçalho | 8 bytes | 20 bytes (mínimo) |
| Overhead de estado | Nenhum | Alto (estado por conexão) |
| Multicast / Broadcast | Sim | Não |
| Latência de início | 0-RTT | 1-RTT (3-way) |
| Preserva fronteiras | Sim | Não |
10. Aplicações Típicas que Justificam essas Características
| Aplicação | Razão para usar UDP |
|---|---|
| DNS | Queries curtas, baixo overhead, aceita reenviar se perder |
| DHCP | Cliente ainda não tem IP; TCP exigiria conexão prévia impossível |
| NTP | Pacotes pequenos, alta frequência, sensível a latência |
| VoIP (RTP) | Tolerância a perda, baixa latência, sem retransmissão |
| Vídeo streaming ao vivo | Mesmo acima |
| Jogos online | Posição atual do jogador não precisa de retransmissão |
| SNMP | Gerência simples, polls periódicos |
| Syslog | Logs podem ser perdidos sem derrubar o sistema |
| IPTV / Streaming multicast | Um fluxo servindo milhões de receptores |
| QUIC / HTTP/3 | Confiabilidade customizada em userspace |
11. Limitações e Cuidados
- Sem segurança intrínseca: qualquer host pode enviar datagramas a uma porta; sem firewall, spoofing trivial. Use DTLS ou aplicação cifrada.
- Amplificação de reflexão (DDoS): serviços como DNS, NTP, Memcached respondem com pacotes maiores que a query. Atacantes spoofaram origem para amplificar DDoS (caso Memcached em 2018 com 51 Gbps de amplificação).
- Fragmentação: datagramas > MTU são fragmentados em IP. Se um fragmento se perder, todo o datagrama é descartado. Por isso aplicações sérias limitam-se a 1472 bytes em Ethernet.
12. Conclusão
O UDP é o protocolo de transporte minimalista por excelência. Sua especificação tem apenas 3 páginas (RFC 768), em contraste com as dezenas de páginas do TCP (RFC 793 + centenas de extensões). Esse minimalismo é exatamente o que torna o UDP o protocolo preferido para aplicações de baixa latência, multicast, internet das coisas e para a nova geração de transportes customizados em userspace (QUIC, WebRTC). Conhecer as características do UDP é essencial para projetar redes eficientes e aplicar segurança adequada.