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:
| Protocolo | Conexão | Confiabilidade | Velocidade | Exemplo |
|---|---|---|---|---|
| TCP | Orientado à conexão | Garante entrega | Mais lento | Web, SSH, e-mail |
| UDP | Sem conexão | Não garante entrega | Mais rápido | DNS, 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 → ServidorCaracterí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 → DestinoO 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ço | Porta UDP comum |
|---|---|
| DNS | 53/UDP |
| DHCP servidor | 67/UDP |
| DHCP cliente | 68/UDP |
| NTP | 123/UDP |
| SNMP | 161/UDP |
| QUIC/HTTP/3 | 443/UDP |
Exemplo de porta UDP:
53/UDPIsso 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 → RedeO 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ística | UDP | TCP |
|---|---|---|
| Conexão | Não orientado à conexão | Orientado à conexão |
| Entrega | Não garante | Garante |
| Ordem dos pacotes | Não garante | Garante |
| Reenvio automático | Não possui | Possui |
| Controle de fluxo | Não possui | Possui |
| Controle de congestionamento | Não possui | Possui |
| Velocidade | Maior | Menor |
| Sobrecarga | Menor | Maior |
| Uso comum | Tempo real | Comunicaçã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
| Protocolo | Porta comum | Uso |
|---|---|---|
| DNS | 53/UDP | Resolução de nomes |
| DHCP | 67/68 UDP | Entrega automática de IP |
| NTP | 123/UDP | Sincronização de horário |
| SNMP | 161/UDP | Monitoramento de rede |
| TFTP | 69/UDP | Transferência simples de arquivos |
| QUIC | 443/UDP | Base do HTTP/3 |
| RTP | Variável | Voz 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 53Exemplo:
nc -zvu 8.8.8.8 53Com nmap:
sudo nmap -sU -p 53 ip_do_servidorExemplo:
sudo nmap -sU -p 53 8.8.8.8Como enviar dados UDP com netcat?
Em um terminal, deixe o servidor escutando:
nc -ul 9000Em outro terminal, envie uma mensagem:
echo "teste udp" | nc -u 127.0.0.1 9000Se tudo estiver correto, a mensagem aparecerá no terminal que está escutando.
Como verificar portas UDP abertas no Linux?
Use:
sudo ss -ulnpOu:
sudo netstat -ulnpFiltrar por uma porta específica:
sudo ss -ulnp | grep :53Exemplo para DNS:
sudo ss -ulnp | grep :53Como liberar uma porta UDP no firewall?
Com UFW:
sudo ufw allow 53/udpExemplo para liberar porta UDP 9000:
sudo ufw allow 9000/udpVerificar status:
sudo ufw statusCom iptables:
sudo iptables -A INPUT -p udp --dport 9000 -j ACCEPTComo bloquear uma porta UDP no firewall?
Com UFW:
sudo ufw deny 9000/udpCom iptables:
sudo iptables -A INPUT -p udp --dport 9000 -j DROPVerificar regras:
sudo iptables -L -n -vUDP é 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_servidorExemplo:
sudo nmap -sU -p 53 8.8.8.8Connection refused
Erro:
Connection refusedPossí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 -ulnpVerificar serviço:
sudo systemctl status nome_do_servicoConnection timed out
Erro:
Connection timed outPossí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_servidorTestar porta UDP:
sudo nmap -sU -p porta ip_do_servidorDNS 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.comTestar porta:
sudo nmap -sU -p 53 ip_do_servidorVerificar serviço DNS:
sudo systemctl status namedOu:
sudo systemctl status bind9Jogo 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_jogoVerificar rota:
traceroute servidor_do_jogoVerificar perda de pacotes:
mtr servidor_do_jogoInstalar MTR:
sudo apt install mtrServiç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 -ulnpSe aparecer apenas 127.0.0.1, o serviço só está aceitando conexões locais.
Liberar firewall:
sudo ufw allow porta/udpExemplo:
sudo ufw allow 9000/udpComo testar se o UDP está funcionando?
Criar um teste local com netcat.
No servidor:
nc -ul 9000No cliente:
echo "teste udp" | nc -u ip_do_servidor 9000Verificar portas UDP:
sudo ss -ulnpTestar com nmap:
sudo nmap -sU -p 9000 ip_do_servidorTestar firewall:
sudo ufw statusComandos principais relacionados ao UDP
| Comando | Função |
|---|---|
ss -ulnp | Mostra portas UDP em escuta |
netstat -ulnp | Mostra portas UDP em escuta |
nc -u destino porta | Envia dados via UDP |
nc -ul porta | Escuta uma porta UDP |
nc -zvu destino porta | Testa uma porta UDP |
nmap -sU -p porta destino | Escaneia porta UDP |
dig @servidor dominio.com | Testa DNS via UDP |
ufw allow porta/udp | Libera porta UDP no firewall |
ufw deny porta/udp | Bloqueia porta UDP no firewall |
iptables -A INPUT -p udp --dport porta -j ACCEPT | Libera UDP com iptables |
Exemplo completo de uso
No servidor, abrir uma porta UDP de teste:
nc -ul 9000No cliente, enviar uma mensagem:
echo "teste udp" | nc -u ip_do_servidor 9000No servidor, verificar se a mensagem chegou.
Verificar se a porta está escutando:
sudo ss -ulnp | grep :9000Liberar no firewall, se necessário:
sudo ufw allow 9000/udpTestar com nmap:
sudo nmap -sU -p 9000 ip_do_servidorEsse 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.