Redes: É hora de recordar os protocolos de Transporte TCP e UDP
Certamente que já ouviu falar no protocolo de transporte TCP e UDP, mas sabe quais as diferenças entre um e outro? Hoje vamos a explicar.
Tendo como referência o modelo OSI, os protocolos TCP (Transmission Control Protocol) e UDP (User Datagram Protocol ) pertencem à camada 4 (camada de transporte). Já no modelo TCP/IP, estes protocolos encontram-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 portos lógicos TCP temos também 65.536 portos lógicos 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).
- A sessão entre um cliente e um servidor é sempre iniciada pelo cliente, que envia um pedido de ligação pacote com a flag SYN ativada;
- O cliente envia também um número sequencial aleatório;
- O servidor responde com um pacote SYN,ACK com o seu próprio número sequencial aleatório e um número de confirmação (igual ao número sequencial do cliente +1);
- Para finalizar o cliente responde com um pacote ACK com o número de confirmação (igual ao número de sequência do servidor +1).
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 kb???? … o recetor simplesmente não iria conseguir abrir esse ficheiro, recebendo a mensagem de “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 nenhuma 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 (milissegundos), 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.
Excelente artigo informativo e educativo. Continuem!