DC-UFRPE/Licenciatura Plena em Computação/Redes de Computadores/Protocolo UDP

O que é o Protocolo UDP (UDP/IP)?

editar
 

O Protocolo UDP é um protocolo de comunicação utilizado em toda a internet para transmissões com validade especialmente limitada, tais como reproduções de vídeo ou pesquisas no DNS. Ele acelera as comunicações ao não estabelecer formalmente uma conexão antes que os dados sejam transferidos. Isso permite que os dados sejam transferidos muito rapidamente, mas também pode fazer com que pacotes se percam em trânsito além de criar oportunidades de exploração na forma de ataques DDoS.

UDP é considerado um modelo de escala econômico e um protocolo "magro". Por esse fato, o protocolo UDP utiliza muito menos largura de banda do que o TCP. O protocolo UDP não oferece todo o requinte do TCP, mas realiza eficientemente o trabalho de transporte de dados que não requeiram confiabilidade na entrega.

Como funciona o protocolo UDP?

editar
 
Diferença entre o protocolo UDP e TCP

Como todos os protocolos de rede, o UDP é um método padronizado de transferência de dados entre dois computadores de uma rede. Em comparação com outros protocolos, o UDP realiza este processo de forma simples: envia pacotes (unidades de transmissão de dados) diretamente para um computador de destino, sem estabelecer uma conexão antes, indicando a ordem desses pacotes ou verificando se eles chegaram como previsto. (Os pacotes UDP são denominados "datagramas").

O UDP é mais rápido, mas menos confiável que o TCP, outro protocolo de transporte comum. Em uma comunicação TCP, os dois computadores começam estabelecendo uma conexão por meio de um processo automatizado chamado "handshake". Somente depois que esse handshake for concluído, um computador realmente transferirá pacotes de dados para o outro.

As comunicações UDP não passam por esse processo. Em vez disso, um computador pode simplesmente começar a enviar dados para o outro:

Além disso, as comunicações TCP indicam a ordem em que os pacotes de dados devem ser recebidos e confirmam se os pacotes chegaram como previsto. Se um pacote não chegar, devido, por exemplo, a um congestionamento nas redes intermediárias, o TCP exige que ele seja reenviado. As comunicações UDP não incluem nenhuma dessas funcionalidades.

Essas diferenças criam algumas vantagens. Como o UDP não exige um "handshake" ou que se verifique se os dados chegaram corretamente, ele é capaz de transferir dados muito mais rapidamente do que o TCP.

No entanto, essa velocidade cria alguns dilemas. Se um datagrama UDP se perder em trânsito, ele não será reenviado. Como resultado, os aplicativos que utilizam UDP devem ser capazes de tolerar erros, perdas e duplicações.

(Tecnicamente, essa perda de pacotes é menos uma falha do UDP do que uma consequência de como a internet é construída. A maioria dos roteadores de rede não realiza pedidos de pacotes e confirmação de chegada pois foram projetados assim, porque isso exigiria uma quantidade impraticável de memória adicional. O TCP é uma forma de preencher essa lacuna quando um aplicativo o exige). 

Que tipo de serviços dependem do UDP?

editar

O UDP é usado geralmente em comunicações com validade limitada, em que ocasionalmente é melhor descartar pacotes do que esperar. O tráfego de voz e vídeo é enviado usando esse protocolo porque ambos têm validade limitada e foram desenvolvidos para lidar com algum nível de perda. Por exemplo, o VOIP (voz sobre IP), que é usado por muitos serviços telefônicos baseados na internet, opera usando o UDP. Isso porque uma conversa telefônica estável é preferível a uma conversa clara, mas com muitos atrasos.

Isso também faz do UDP o protocolo ideal para games on-line. Da mesma forma, como os servidores de DNS precisam ser rápidos e eficientes, eles também operam por meio do UDP.

Como o UDP é usado nos ataques DDoS?

editar
 
Ataque DDOS

Os "riscos" do UDP, como a perda de pacotes, não são um problema sério na maioria dos casos de uso. Entretanto, o UDP pode ser explorado para fins maliciosos. Como o UDP não exige um handshake, os invasores podem "inundar" um servidor alvo com tráfego UDP sem antes obter a permissão desse servidor para iniciar a comunicação.

Um típico ataque de inundação UDP envia um grande número de datagramas UDP para portas aleatórias do computador alvo. Isso força o alvo a responder com um número igualmente grande de pacotes ICMP, que indicam que essas portas estavam inacessíveis. Os recursos de computação necessários para responder a cada datagrama fraudulento podem esgotar o alvo, resultando em uma negação de serviço para o tráfego legítimo. (Para saber mais, leia nosso artigo sobre ataques de inundação UDP.) As organizações podem se defender contra os ataques de inundação UDP com vários métodos. Um deles é limitar a taxa de resposta dos pacotes ICMP, embora essa abordagem também possa filtrar os pacotes legítimos. Outro método é receber e responder ao tráfego UDP por meio de uma rede intermediária de vários data centers distribuídos, evitando que um único servidor de origem seja sobrecarregado com pedidos fraudulentos.