UDP

O que é UDP?

UDP significa User Datagram Protocol.

Ele é um protocolo da camada de transporte do modelo OSI, usado para enviar dados entre dispositivos em uma rede.

Diferente do TCP, o UDP é não orientado à conexão e não confiável.

Isso significa que ele envia os dados sem estabelecer uma conexão antes e sem garantir que os pacotes cheguem ao destino ou cheguem na ordem correta.


Para que o UDP é usado?

O UDP é usado em aplicações que precisam de velocidade e baixa latência.

Exemplos comuns:

Chamadas de voz pela internet.
Chamadas de vídeo.
Jogos online.
Streaming de áudio e vídeo.
DNS.
DHCP.
VPNs.
Transmissões em tempo real.
Sistemas que toleram pequenas perdas de pacotes.


UDP é a mesma coisa que TCP?

Não.

UDP e TCP são protocolos da camada de transporte, mas funcionam de formas diferentes.

O TCP prioriza confiabilidade.
O UDP prioriza velocidade e simplicidade.

Resumo:

ProtocoloConexãoConfiabilidadeVelocidadeExemplo
TCPOrientado à conexãoGarante entregaMais lentoWeb, SSH, e-mail
UDPSem conexãoNão garante entregaMais rápidoDNS, VoIP, jogos

Como o UDP funciona?

O UDP envia dados em unidades chamadas datagramas.

Cada datagrama contém os dados e as informações necessárias para chegar ao destino, como porta de origem, porta de destino e checksum.

Fluxo básico:

A aplicação gera os dados.
O UDP encapsula os dados em um datagrama.
O datagrama é enviado pela rede.
O destino recebe o datagrama, se ele chegar.
Não há confirmação automática de recebimento.
Não há reenvio automático em caso de perda.

Exemplo:

Cliente → Datagrama UDP → Servidor

Características principais do UDP

O UDP possui algumas características importantes:

Não precisa estabelecer conexão antes do envio.
Envia dados imediatamente.
Não garante entrega dos pacotes.
Não garante ordem de chegada.
Não possui controle de fluxo.
Não possui controle de congestionamento.
Possui menor sobrecarga que o TCP.
Usa datagramas.
É mais simples e eficiente em desempenho.
É muito usado em aplicações em tempo real.


O que significa UDP ser sem conexão?

Significa que o UDP não faz um processo de conexão antes de enviar dados.

No TCP, existe o processo de abertura de conexão, chamado de handshake.

No UDP, isso não acontece.

O envio é direto:

Aplicação → UDP → Rede → Destino

O UDP não verifica antes se o receptor está pronto para receber os dados.


O que significa UDP ser não confiável?

Significa que o UDP não garante que os dados cheguem corretamente ao destino.

Se um pacote for perdido, o UDP não tenta reenviar.

Se os pacotes chegarem fora de ordem, o UDP não reorganiza automaticamente.

Se o destino não responder, o UDP não detecta isso sozinho da mesma forma que o TCP.

A aplicação precisa lidar com isso, se for necessário.


UDP usa portas?

Sim.

Assim como o TCP, o UDP usa portas para identificar aplicações e serviços.

Exemplo:

ServiçoPorta UDP comum
DNS53/UDP
DHCP servidor67/UDP
DHCP cliente68/UDP
NTP123/UDP
SNMP161/UDP
QUIC/HTTP/3443/UDP

Exemplo de porta UDP:

53/UDP

Isso indica que o serviço usa a porta 53 com o protocolo UDP.


UDP usa IP?

Sim.

O UDP funciona sobre o protocolo IP.

Resumo:

Aplicação → UDP → IP → Rede

O UDP fica na camada de transporte.

O IP fica na camada de rede.


O que é um datagrama UDP?

Um datagrama UDP é a unidade de dados enviada pelo protocolo UDP.

Ele contém:

Porta de origem.
Porta de destino.
Tamanho do datagrama.
Checksum.
Dados da aplicação.

O cabeçalho UDP é pequeno, por isso ele tem menos sobrecarga que o TCP.


UDP tem controle de fluxo?

Não.

O UDP não possui controle de fluxo.

Isso significa que ele não controla automaticamente a quantidade de dados enviados para evitar sobrecarregar o receptor.

Se muitos pacotes forem enviados rapidamente, o destino pode não conseguir processar tudo.

Nesse caso, alguns pacotes podem ser descartados.


UDP tem controle de congestionamento?

Não.

O UDP não possui controle de congestionamento interno.

Ele não reduz automaticamente a velocidade de envio quando a rede está congestionada.

Por isso, aplicações que usam UDP devem ser bem projetadas para evitar causar excesso de tráfego na rede.


UDP corrige erros?

Não da mesma forma que o TCP.

O UDP possui checksum para detectar alguns erros nos dados.

Porém, ele não faz correção automática, não reenvia pacotes perdidos e não reorganiza pacotes fora de ordem.

Se a aplicação precisar dessas garantias, ela deve implementar isso por conta própria.


Diferença entre UDP e TCP

CaracterísticaUDPTCP
ConexãoNão orientado à conexãoOrientado à conexão
EntregaNão garanteGarante
Ordem dos pacotesNão garanteGarante
Reenvio automáticoNão possuiPossui
Controle de fluxoNão possuiPossui
Controle de congestionamentoNão possuiPossui
VelocidadeMaiorMenor
SobrecargaMenorMaior
Uso comumTempo realComunicação confiável

Quando usar UDP?

O UDP é indicado quando velocidade é mais importante que garantia de entrega.

Exemplos:

Jogos online.
Streaming ao vivo.
Chamadas de voz.
Chamadas de vídeo.
Consultas DNS.
Sincronização de horário com NTP.
Aplicações em tempo real.

Nesses casos, perder um pacote pode ser menos problemático do que esperar reenvio e causar atraso.


Quando não usar UDP?

O UDP não é ideal quando os dados precisam chegar completos e em ordem.

Evite UDP para:

Transferência de arquivos sem controle adicional.
Envio de e-mails.
Acesso SSH.
Transações bancárias.
Sistemas que exigem confirmação de entrega.
Comunicações onde a perda de dados não pode acontecer.

Nesses casos, normalmente o TCP é mais adequado.


Exemplos de protocolos que usam UDP

ProtocoloPorta comumUso
DNS53/UDPResolução de nomes
DHCP67/68 UDPEntrega automática de IP
NTP123/UDPSincronização de horário
SNMP161/UDPMonitoramento de rede
TFTP69/UDPTransferência simples de arquivos
QUIC443/UDPBase do HTTP/3
RTPVariávelVoz e vídeo em tempo real

Como testar uma porta UDP?

Testar UDP é diferente de testar TCP.

No TCP, uma conexão pode ser aberta e confirmada facilmente.

No UDP, não existe conexão. Por isso, um teste UDP pode não retornar resposta mesmo quando a porta está aberta.

Com nc:

nc -zvu ip_do_servidor 53

Exemplo:

nc -zvu 8.8.8.8 53

Com nmap:

sudo nmap -sU -p 53 ip_do_servidor

Exemplo:

sudo nmap -sU -p 53 8.8.8.8

Como enviar dados UDP com netcat?

Em um terminal, deixe o servidor escutando:

nc -ul 9000

Em outro terminal, envie uma mensagem:

echo "teste udp" | nc -u 127.0.0.1 9000

Se tudo estiver correto, a mensagem aparecerá no terminal que está escutando.


Como verificar portas UDP abertas no Linux?

Use:

sudo ss -ulnp

Ou:

sudo netstat -ulnp

Filtrar por uma porta específica:

sudo ss -ulnp | grep :53

Exemplo para DNS:

sudo ss -ulnp | grep :53

Como liberar uma porta UDP no firewall?

Com UFW:

sudo ufw allow 53/udp

Exemplo para liberar porta UDP 9000:

sudo ufw allow 9000/udp

Verificar status:

sudo ufw status

Com iptables:

sudo iptables -A INPUT -p udp --dport 9000 -j ACCEPT

Como bloquear uma porta UDP no firewall?

Com UFW:

sudo ufw deny 9000/udp

Com iptables:

sudo iptables -A INPUT -p udp --dport 9000 -j DROP

Verificar regras:

sudo iptables -L -n -v

UDP é seguro?

O UDP não possui criptografia por padrão.

Ele apenas transporta dados.

A segurança depende da aplicação ou de protocolos adicionais.

Exemplos:

DNS comum usa UDP sem criptografia.
QUIC usa UDP, mas possui criptografia integrada.
VPNs podem usar UDP com criptografia.
VoIP pode usar UDP com SRTP para proteger mídia.

Por isso, UDP não deve ser considerado seguro sozinho.


Erros comuns com UDP

Porta UDP parece fechada, mas o serviço funciona

Isso pode acontecer.

Possíveis causas:

UDP não responde como TCP.
O serviço só responde a pacotes válidos.
Firewall descarta pacotes silenciosamente.
A ferramenta de teste não enviou o conteúdo esperado.

Teste com nmap:

sudo nmap -sU -p porta ip_do_servidor

Exemplo:

sudo nmap -sU -p 53 8.8.8.8

Connection refused

Erro:

Connection refused

Possíveis causas:

Nenhum serviço escutando na porta UDP.
O sistema respondeu com ICMP Port Unreachable.
A porta está fechada.
O serviço está parado.

Verificar portas:

sudo ss -ulnp

Verificar serviço:

sudo systemctl status nome_do_servico

Connection timed out

Erro:

Connection timed out

Possíveis causas:

Firewall bloqueando.
Servidor descartando pacotes UDP.
Serviço não responde ao pacote enviado.
Rota de rede com problema.
Provedor bloqueando tráfego UDP.

Testar rota:

ping ip_do_servidor

Testar porta UDP:

sudo nmap -sU -p porta ip_do_servidor

DNS não responde via UDP

Possíveis causas:

Serviço DNS parado.
Porta 53/UDP bloqueada.
Firewall impedindo consulta.
Servidor DNS configurado incorretamente.
DNS só aceitando consultas de redes específicas.

Testar consulta:

dig @ip_do_servidor dominio.com

Testar porta:

sudo nmap -sU -p 53 ip_do_servidor

Verificar serviço DNS:

sudo systemctl status named

Ou:

sudo systemctl status bind9

Jogo online ou chamada travando

Possíveis causas:

Perda de pacotes UDP.
Latência alta.
Jitter elevado.
Firewall ou NAT bloqueando portas.
Roteador com problema.
Congestionamento de rede.

Testar conectividade:

ping -c 20 servidor_do_jogo

Verificar rota:

traceroute servidor_do_jogo

Verificar perda de pacotes:

mtr servidor_do_jogo

Instalar MTR:

sudo apt install mtr

Serviço UDP escuta localmente, mas não acessa de fora

Possíveis causas:

Firewall bloqueando porta.
Serviço escutando apenas em 127.0.0.1.
NAT sem redirecionamento de porta.
Porta não liberada no provedor.
IP público incorreto.

Verificar escuta:

sudo ss -ulnp

Se aparecer apenas 127.0.0.1, o serviço só está aceitando conexões locais.

Liberar firewall:

sudo ufw allow porta/udp

Exemplo:

sudo ufw allow 9000/udp

Como testar se o UDP está funcionando?

Criar um teste local com netcat.

No servidor:

nc -ul 9000

No cliente:

echo "teste udp" | nc -u ip_do_servidor 9000

Verificar portas UDP:

sudo ss -ulnp

Testar com nmap:

sudo nmap -sU -p 9000 ip_do_servidor

Testar firewall:

sudo ufw status

Comandos principais relacionados ao UDP

ComandoFunção
ss -ulnpMostra portas UDP em escuta
netstat -ulnpMostra portas UDP em escuta
nc -u destino portaEnvia dados via UDP
nc -ul portaEscuta uma porta UDP
nc -zvu destino portaTesta uma porta UDP
nmap -sU -p porta destinoEscaneia porta UDP
dig @servidor dominio.comTesta DNS via UDP
ufw allow porta/udpLibera porta UDP no firewall
ufw deny porta/udpBloqueia porta UDP no firewall
iptables -A INPUT -p udp --dport porta -j ACCEPTLibera UDP com iptables

Exemplo completo de uso

No servidor, abrir uma porta UDP de teste:

nc -ul 9000

No cliente, enviar uma mensagem:

echo "teste udp" | nc -u ip_do_servidor 9000

No servidor, verificar se a mensagem chegou.

Verificar se a porta está escutando:

sudo ss -ulnp | grep :9000

Liberar no firewall, se necessário:

sudo ufw allow 9000/udp

Testar com nmap:

sudo nmap -sU -p 9000 ip_do_servidor

Esse exemplo cria um teste simples de comunicação UDP entre cliente e servidor.


Boas práticas de segurança

Liberar apenas as portas UDP necessárias.
Não expor serviços UDP sem necessidade.
Usar firewall para limitar origem e destino.
Monitorar tráfego UDP anormal.
Aplicar rate limit quando possível.
Evitar usar UDP sem criptografia para dados sensíveis.
Usar protocolos seguros quando disponíveis.
Manter serviços atualizados.
Verificar NAT e redirecionamento de portas.
Não assumir que ausência de resposta significa porta fechada.
Usar TCP quando a aplicação exigir entrega confiável.

Páginas relacionadas

ICMP
Abrir