sexta-feira, 7 de novembro de 2014

Protocolo TCP vs Protocolo UDP



Certamente que já ouviram falar em serviços/aplicações que usam o protocolo TCP ou UDP.  Os protocolos TCP e UDP pertencem à camada 4 do modelo OSI (camada de transporte) e em traços gerais, em conjunto com o porto/porta e IP da máquina, definem como uma determinada informação é transmitida na rede.
Numa máquina existem (teoricamente) 65.536 portas TCP que podem ser usadas pelas mais diversas aplicações/serviços, o que (teoricamente) poderíamos ter 65.536 aplicações/serviços distintos a correr em simultâneo na nossa máquina. Relembrando o que foi referido em artigos anteriores: o IP identifica a máquina e o porto identifica a aplicação/serviço. Além das portas TCP temos também 65.536 portas UDP(teoricamente).

Protocolo TCP

O TCP é o protocolo mais usado isto porque fornece garantia na entrega de todos os pacotes entre um PC emissor e um PC receptor. No estabelecimento de ligação entre emissor e receptor existe um “pré-acordo” denominado de Three Way Handshake (SYN, SYN-ACK, ACK).
Exemplo
Considerem por exemplo que querem transmitir um filme ou um arquivo com um jogo que ocupa 800 MB. Esse arquivo  terá de ser partidos em partes mais pequenas (fragmentação), para que seja viável a  sua transferência para outro PC. Recorrendo ao protocolo TCP existe a garantia que todos os pacotes serão entregues e reordenados do outro lado (uma vez que podem ir por caminhos diferentes). Além disso, por cada pacote ou conjunto de pacotes (previamente definido), a máquina de destino confirma que recebeu essa informação ao emissor e no caso de falha de algum pacote, a máquina de destino procede ao emissor o pedido de retransmissão do(s) pacote(S) em falta.
Já pensaram se na transmissão do ficheiro do filme ou jogo de (800 MB) faltassem por exemplo apenas 2 k???? …bem, o receptor simplesmente não iria conseguir abrir esse ficheiro recebendo provavelmente a mensagem “arquivo corrompido”.
Então e o UDP?
O UDP é um protocolo mais simples e por si só não fornece garantia na entrega dos pacotes. No entanto, esse processo de garantia de dados pode ser simplesmente realizado pela aplicação em si (que usa o protocolo UDP) e não pelo protocolo. Basicamente, usando UDP, uma máquina emissor envia uma determinada informação e a máquina receptor recebe essa informação, não existindo qualquer confirmação dos pacotes recebidos. Se um pacote se perder não existe normalmente solicitação de reenvio, simplesmente não existe.

Exemplo
Vamos a um exemplo comum. Imaginem que vão usar streaming de vídeo e áudio através da Internet e usam por exemplo o Skype como aplicação. Se estabelecerem uma ligação com um amigo vosso, vão notar que existem muitos pacotes na transmissão que se perdem…ouvem aquele barulho normal aquando das transmissões…”bluuup” ou a perda/bloqueio de imagem por alguns ms (milisegundos), o que é perfeitamente aceitável. Não teria muita lógica que a meio dessa transmissão a vossa aplicação parasse o streaming e fosse solicitar ao receptor pacotes perdidos…simplesmente começávamos uma conversa e a meio iríamos receber informações provavelmente daquilo que falamos no início.
Não é muito normal encontrar aplicações que usem exclusivamente o protocolo UDP, usando o exemplo do streaming existe sempre o recurso ao TCP para trocar informações de controlo, libertando o UDP apenas para o envio da informação.
Nota final: Tentou-se explicar de forma simples e abreviada as principais características do UDP e TCP. Contamos com os vossos comentários de forma a analisarem o mesmo e a darem dicas para novos artigos.

Nenhum comentário:

Postar um comentário