terça-feira, 25 de outubro de 2016

Hardcore Devel #61 - Unified Datagram Protocol

Ah, UDP... Vocë com esse seu jeito tão simples encanta as multidões e deixa seus rastros pelos roteadores do mundo.


Acima por exemplo, vemos um alguém que abandonou um pacote UDP em algum roteador. Hoje nós vamos falar sobre o que diabos é esse UDP.

Calma! UDP não tem nada a ver com protocolo estressado. UDP é um protocolo de transporte simples para a transmissão de mensagens. Pra quem não lembra, protocolo de transporte é o protocolo que identifica um processo em uma máquina.

Obviamente, protocolos de transporte podem fazer muito mais do que identificar processos. A camada de transporte diz como é que os pacotes vão trafegar de um lado para o outro. Só que pro UDP isso é simples. Bota os dados no pacote e manda. Isso é a coisa mais intuitiva a se fazer. Quando vocë quer mandar uma carta, você simplesmente escreve a carta e põe no correio.

Pois é, só que no mundo da computação o correio vive super lotado e não funciona muito bem. Entáo de vez em quando os carteiros simplesmente se cansam e desistem de entregar a mensagem. Também, o malandro tem que carregar um pacote de um canto a outro do mundo. Coitado, e o UDP manda o pacote sem piedade. Não importa o tamanho do pacote, o UDP simplesmente vai mandar e que os roteadores se virem pra entregar isso.

Bom, não é a toa que os pacotes morrem no meio do caminho.

Acontece que o UDP é o protocolo de transporte mais simples o possível, e mesmo de toda essa simplicidade ainda resolveram colocar um Checksum nele pra pegar erro de dado. Há quem diga que pra um protocolo simples essa verificação é avançada demais.

A maior parte do tráfego da internet certamente não é UDP, mas ele ainda é extremamente necessário pois sua simplicidade é a grande aliada das aplicações de tempo real. A velocidade com a qual os datagramas UDP trafegam de um ponto a outro na rede, torna esse tipo de protocolo ideal para aplicações que tem restrições de tempo. Qualquer jogo em rede é programado utilizando o protocolo UDP.

Esse protocolo também é muito útil para aplicações em rede que funcionam dentro de LANs. Uma vez que a taxa de falha de entrega dentro de uma rede pequena e conhecida é muito pequena. Uma aplicação em rede que usa UDP e é muito útil é o UDPcast que permite a troca de arquivos ou até a cópia de sistemas operacionais inteiros de uma máquina fonte para diversas máquinas destino.

Agora, se você vir alguém demoniando esse protocolo lindo de transporte, faça o favor de ignorá-los. Pois esse protocolo de transporte é a base de todos os outros. Até dos protocolos menos conhecidos como os protocolos multimídia.

Quando usar UDP:

  • Restrição de tempo - As mensagens tem um tempo limite para chegada
  • Velocidade - Os dados precisam ser entregues em altas velocidades
  • Rede Local - Os pacotes não realizam grandes saltos
  • Redes Dedicadas - Nenhum outro tipo de tráfego flui por aquela rede
  • Conexão não orientada - Os processos não necessariamente sabem quem é quem.
Quando não usar:

  • Garantia de entrega necessária.- As mensagens precisam chegar no destino
  • Redes de tráfego intenso.- Diversos tipos de tráfego passam na rede
  • Conexão orientada - Os clientes são capazes de se identificar
  • Redes distintas - Os pacotes realizam grandes saltos entre as redes
É importante frisar que isso não são regras e apenas recomendações, pois devido a sua simplicidade e ao seu funcionamento é possível adicionar muitas funcionalidades a nível de aplicação que podem fazer o trabalho que outros protocolos fariam.

Então para de xingar o UDP e perca o medo desse bicho porque ele é bom demais!

Obs: Acredito que no futuro as aplicações irão usar um protocolo mais similar ao UDP e menos similar ao TCP.

Nenhum comentário:

Postar um comentário