Pplware

Redes: Quais as diferenças entre o Protocolo TCP e UDP

Em 2009 escrevemos aqui um artigo sobre as diferenças de usar o protocolo TCP e UDP. Agora recordamos este tema uma vez que teve um sucesso muito interessante na altura.

Certamente que já ouviu falar no protocolo TCP e UDP mas sabe quais as diferenças entre um e outro? Hoje vamos a explicar.


Certamente que já ouviram falar em serviços/aplicações que usam como protocolo de transporte TCP ( Transmission Control Protocol) ou o UDP (User Datagram Protocol ).

Numa referência ao modelo OSI, estes protocolos pertencem à camada 4 (camada de transporte). Já no modelo TCP/IP, estes protocolos encontra-se igualmente na camada de transporte mas que corresponde à camada 3.

Numa máquina existem (teoricamente) 65.536 portos lógicos TCP que podem ser usados 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 endereço IP identifica a máquina e o porto lógico identifica a aplicação/serviço. Além dos portas TCP temos também 65.536 portas UDP (teoricamente).

 

Protocolo TCP VS Protocolo UDP

TCP

O TCP é o protocolo mais usado isto porque fornece garantia na entrega de todos os pacotes entre um PC emissor e um PC recetor. No estabelecimento de ligação entre emissor e recetor existe um “pré-acordo” denominado de Three Way Handshake (SYN, SYN-ACK, ACK).

Para saber mais sobre o Three Way Handshake aceda aqui.

 

Exemplo

Considerem por exemplo que querem transmitir um filme ou um ficheiro com um jogo que ocupa 800 MB. Esse ficheiro terá de ser partido 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 ordenados do outro lado (uma vez que podem seguir 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???? … o recetor simplesmente não iria conseguir abrir esse ficheiro recebendo provavelmente a mensagem “ficheiro corrompido”.

 

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 o protocolo UDP, uma máquina emissor envia uma determinada informação e a máquina recetor 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 deixa de existir para o destinatário.

 

Exemplo

Vamos a um exemplo comum. Imaginem que vão usar streaming de vídeo e áudio através da Internet e usam 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 recetor 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.

 

Quais as unidades nesta camada?

Erradamente é normal chamar-se “pacotes” a tudo. O pacote é a unidade (PDU – Protocol Data unit) da camada 3 do modelo OSI, que corresponde à camada de rede. No caso do modelo TCP/IP, corresponde à camada 2.

Quando falamos na camada de transporte, usamos segmento para designar a unidade quando usámos o protocolo TCP ou datagrama quando fazemos uso do protocolo UDP.

Exit mobile version