UDP: o que é, protocolo sem conexão e como funciona

Autor: IT Sectr Publicado: 2026-03-06 Tempo de leitura: 8 min

UDP (User Datagram Protocol) é um protocolo de transmissão de dados sem conexão que opera sobre IP e fornece latência mínima ao enviar datagramas. Ao contrário do TCP, o UDP não garante entrega, ordem dos pacotes ou proteção contra duplicação. De acordo com IETF RFC 768 (2024), o UDP lida com mais de 40% do tráfego global da Internet devido a videochamadas, streaming e consultas DNS.

Principais pontos

  • UDP é um protocolo sem conexão que envia datagramas sem confirmação de entrega
  • Latência mínima é alcançada pela ausência de handshake, controle de congestionamento e retransmissões
  • Usado em videochamadas, jogos online, DNS, DHCP e streaming
  • Datagrama UDP tem cabeçalho de apenas 8 bytes contra 20–60 bytes do TCP
  • Perda de pacotes é compensada no nível da aplicação via FEC, retransmissão ou redundância de dados

O que é UDP?

UDP (User Datagram Protocol) é um dos principais protocolos da camada de transporte do modelo TCP/IP, projetado por David Reed em 1980. Ele fornece um mecanismo mínimo de transmissão de dados: a aplicação envia um datagrama e o protocolo não rastreia se ele chegou ao destinatário.

O cabeçalho UDP consiste em apenas quatro campos: porta de origem, porta de destino, comprimento e soma de verificação. Cada campo ocupa 2 bytes, portanto o tamanho total do cabeçalho é de 8 bytes. Para comparação, um cabeçalho TCP sem opções ocupa 20 bytes, e com opções — até 60 bytes.

O protocolo não suporta fragmentação em seu próprio nível — se um datagrama exceder a MTU (Maximum Transmission Unit), ele é fragmentado no nível IP. Se um fragmento for perdido, todo o datagrama é descartado, pois o UDP não pode solicitar retransmissão de fragmentos individuais. Os desenvolvedores devem controlar o tamanho do datagrama — para redes móveis, a MTU geralmente é de 1400 bytes, portanto o tamanho máximo não deve exceder esse valor.

Como o UDP funciona

Uma aplicação que usa UDP cria um socket do tipo SOCK_DGRAM, especifica a porta e o endereço IP de destino e envia um datagrama. O protocolo adiciona um cabeçalho mínimo e passa o pacote para a camada IP. O receptor ouve em sua porta e extrai os dados dos datagramas recebidos.

O UDP não realiza controle de congestionamento — a aplicação pode enviar datagramas na velocidade máxima suportada pela rede. Isso pode levar ao congestionamento do canal, mas em cenários em tempo real, essa agressividade é justificada: para uma videochamada, um fluxo de dados com possíveis perdas é mais importante do que interromper a transmissão.

python
import socket

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(b'Hello, UDP!', ('192.168.1.100', 8888))
sock.close()

Neste exemplo, um socket SOCK_DGRAM é criado para UDP. O método sendto envia um datagrama sem estabelecer conexão — basta conhecer o IP e a porta do destinatário. O método recvfrom no lado do servidor retorna tanto os dados quanto o endereço do remetente para a resposta. Sockets UDP em plataformas móveis são configurados de forma semelhante, mas exigem permissões adicionais: no iOS, é necessário adicionar NSAppTransportSecurity para conexões UDP não criptografadas, e no Android, a permissão INTERNET no manifesto.

Vantagens e desvantagens do UDP

Escolher o UDP é justificado em cenários onde a velocidade é mais crítica que a confiabilidade. O protocolo não perde tempo com estabelecimento de conexão, confirmações e retransmissões — isso proporciona latência mínima, mas exige que o desenvolvedor lide com as perdas de forma independente.

VantagensDesvantagens
Baixa latência — sem handshakeSem garantia de entrega
Cabeçalho menor — 8 bytesSem controle de congestionamento
Suporte a broadcast e multicastPossíveis duplicatas de pacotes
Independência de datagramas — sem filasTamanho do datagrama limitado pela MTU

Em aplicativos móveis, o UDP é usado através de frameworks como WebRTC, que adicionam controle de perda, bitrate adaptativo e jitter buffer sobre o UDP. Isso proporciona os benefícios de velocidade sem as desvantagens do protocolo puro.

Outro aspecto importante do UDP é a ausência de controle de congestionamento. No TCP, os algoritmos Slow Start e Congestion Avoidance reduzem a velocidade de transmissão diante da perda de pacotes para evitar sobrecarga da rede. O UDP carece de tais mecanismos, portanto os desenvolvedores devem implementar suas próprias estratégias de controle de taxa — por exemplo, bitrate adaptativo em videochamadas ou rate limiting em servidores de jogos para evitar congestionamento excessivo da rede.

Onde o UDP é usado

O UDP é indispensável em cenários onde a tolerância à latência é mais importante que a tolerância à perda de pacotes. Vamos explorar as principais áreas de aplicação do protocolo no desenvolvimento móvel e web.

Streaming de áudio e vídeo

Os protocolos RTP e RTSP, que operam sobre UDP, são usados para transmitir fluxos de áudio e vídeo em tempo real. WebRTC — o padrão para videochamadas em navegadores e aplicativos móveis — usa UDP como transporte principal para dados de mídia e TCP para sinalização. Perder um pacote em vídeo de 30 fps é imperceptível para o usuário, ao contrário do atraso de retransmissão, que causa um congelamento notável da imagem.

Jogos online

Jogos de tiro multiplayer e MOBAs exigem latência inferior a 50 ms para sincronização adequada. O UDP transmite posições dos jogadores, disparos e eventos mais rápido que o TCP, e a perda de pacotes é simplesmente ignorada — a próxima atualização chegará em 16–33 ms. Motores de jogos populares, incluindo Unity e Unreal Engine, usam UDP através de suas próprias camadas de transporte com confiabilidade adicional para eventos críticos por meio de confirmações em nível de aplicação.

DNS e DHCP

Consultas DNS usam UDP na porta 53 porque cada consulta é um único datagrama pequeno (geralmente até 512 bytes). Se nenhuma resposta chegar, o cliente simplesmente tenta novamente após um tempo limite, o que é mais rápido que estabelecer uma conexão TCP com seu handshake triplo. DHCP também funciona sobre UDP, pois o cliente ainda não tem um endereço IP e não pode estabelecer uma conexão TCP, enquanto pacotes UDP de broadcast permitem encontrar um servidor DHCP na rede local.

Comparação UDP vs TCP

A escolha entre UDP e TCP é um equilíbrio entre velocidade e confiabilidade. Cada protocolo é ideal para sua classe de tarefas, e entender suas diferenças ajuda a tomar decisões arquitetônicas corretas ao projetar comunicação de rede em aplicativos móveis.

CritérioUDPTCP
Estabelecimento de conexãoNão necessárioHandshake triplo
Cabeçalho8 bytes20–60 bytes
Garantia de entregaNãoSim, com confirmação
OrdenaçãoNãoSim
Controle de congestionamentoNãoSim (AIMD, Slow Start)
Casos de usoStreaming, jogos, DNSWeb, email, arquivos, API

Projetos móveis frequentemente usam uma abordagem híbrida: TCP para requisições confiáveis (autenticação, carregamento de dados) e UDP para fluxos de mídia. QUIC — um protocolo moderno do Google que opera sobre UDP — combina a velocidade do UDP com a confiabilidade do TCP e já é usado no HTTP/3.

Exemplo de código UDP

Vamos ver um servidor UDP simples em Python que recebe mensagens de clientes e envia uma resposta. O servidor escuta na porta 8888 e processa datagramas recebidos em um loop infinito.

python
import socket

server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server.bind(('0.0.0.0', 8888))
print('Servidor UDP iniciado na porta 8888')

while True:
    data, addr = server.recvfrom(1024)
    print(f'Recebido de {addr}: {data.decode()}')
    server.sendto(b'OK', addr)

O servidor cria um socket UDP, vincula-se à porta 8888 e aguarda datagramas recebidos. recvfrom retorna os dados e o endereço do cliente, permitindo responder via sendto. Ao contrário do TCP, o servidor não mantém estado de conexão — cada datagrama é processado de forma independente. Isso torna os servidores UDP escaláveis: um único servidor pode lidar com milhões de clientes sem alocar memória para cada conexão individual, o que é importante para servidores DNS e sistemas de matchmaking de jogos.

No desenvolvimento móvel, o UDP é frequentemente usado através de bibliotecas de alto nível. Por exemplo, CocoaAsyncSocket para iOS fornece sockets UDP com delegados e GCD para manipulação assíncrona de eventos. No Android, a classe DatagramSocket faz parte da biblioteca padrão java.net e não requer dependências adicionais. Para Flutter, existe o pacote udp, que fornece uma interface simples para enviar e receber datagramas sem configurar sockets nativos.

É importante notar que muitas redes móveis e firewalls corporativos bloqueiam tráfego UDP, especialmente em portas acima de 1024. Se sua aplicação usa UDP, você deve fornecer um fallback para TCP ou verificar a disponibilidade do protocolo através de servidores STUN, como o WebRTC faz. No iOS, o framework do sistema Network.framework com NWConnection suporta tanto TCP quanto UDP, escolhendo automaticamente o protocolo ideal com base na disponibilidade. Para aplicações em tempo real, também é recomendado implementar bitrate adaptativo, que reduz a qualidade do fluxo diante da perda de pacotes, garantindo reprodução contínua mesmo em canais instáveis com altas taxas de erro.

Perguntas frequentes

Como o UDP difere do TCP?

O UDP não estabelece conexão nem garante a entrega de pacotes, tornando-o mais rápido que o TCP. O cabeçalho UDP tem 8 bytes contra 20–60 bytes do TCP. UDP é adequado para streaming e jogos, enquanto o TCP é para requisições web e transferência de arquivos.

O que é um datagrama no UDP?

Um datagrama é um pacote de dados independente com cabeçalho UDP (porta de origem, porta de destino, comprimento, soma de verificação). Cada datagrama é processado independentemente, sem relação com os anteriores. O tamanho do datagrama é limitado pela MTU da rede e, por especificação, até 65507 bytes.

Como a confiabilidade é garantida ao usar UDP?

O UDP não fornece confiabilidade no nível de transporte — ela é implementada pela aplicação. Os desenvolvedores adicionam números de sequência, somas de verificação, solicitações de retransmissão e correção de erros. FEC (Forward Error Correction) permite recuperar pacotes perdidos sem retransmissão.

Quando não usar UDP?

O UDP não é adequado para cenários onde a integridade dos dados é crítica: transferência de arquivos, transações bancárias, REST APIs. Nestes casos, o TCP garante que cada byte chegue na ordem correta. O UDP também não é recomendado em canais instáveis com altas taxas de perda.

O que é QUIC e como se relaciona com o UDP?

QUIC é um protocolo de transporte que opera sobre UDP, desenvolvido pelo Google e padronizado pela IETF como RFC 9000. Ele combina a velocidade do UDP com a confiabilidade do TCP, suporta multiplexação sem bloqueio de cabeça de linha e possui criptografia integrada. HTTP/3 usa QUIC como sua camada de transporte.

Resumo

  • UDP é um protocolo sem conexão com latência mínima e cabeçalho de 8 bytes
  • Não garante entrega, ordem dos pacotes ou proteção contra duplicação
  • Usado em videochamadas, jogos online, DNS, DHCP e streaming
  • Escolher UDP ou TCP depende do equilíbrio entre velocidade e confiabilidade para cada cenário
  • Perda de pacotes é compensada no nível da aplicação via FEC, retransmissão ou redundância
  • QUIC sobre UDP combina a velocidade do UDP com a confiabilidade do TCP no protocolo HTTP/3
  • Desenvolvedores devem controlar o tamanho do datagrama e prever fallback para TCP quando o UDP estiver bloqueado ou filtrado na rede

Vamos desenvolver um aplicativo móvel chave na mão

A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.

Discutir o projeto

Leia também