Home Comunidade Eventos YouTube Networks Desafios // produtos Academy News CTI | CVE Contato

01 - Características

video explicativo
Video explicativoEspaco reservado para o video desta anotação — adicione 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á um recvfrom() 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 em 224.0.0.251, SSDP em 239.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.