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).
- 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 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.
Este artigo tem mais de um ano
O modelo OSI só é aplicado no mundo académico como modelo conceptual.
Na verdade não sei porque ainda usam o modelo OSI seja em que meio for, quando não tem aplicabilidade no mundo real.
Sim, como digo no artigo, o modelo OSI é de referência.
Eu sei Pedro, foi só um desabafo, levei com isso nos meus tempos de faculdade e só me apetecia mandar o prof para o c…., não tenho paciência para modelos conceptuais que nunca foram nada além disso e que continuam a ser introduzidos como algo standard a nível de matéria..
como desses apanhei também alguns..sao daqueles que nunca saíram da Universidade que não fazem ideia do que o mundo real é feito, do que precisa e de como trabalha. Mas fica lindinho mostrar palha…há sempre burros que a comem…
Então que modelo usas?
O mesmo que toda a gente, e tu? :rolleyes:
Eu? Nenhum 🙂 Os sistemas usam TCP/IP
Mas como modelo de referencia uso o OSI
O modelo OSI permite, de forma simplificada, explicar a comunicação entre equipamentos e os princípios básicos de uma rede independente da tecnologia utilizada.
Não entender a aplicabilidade do modelo OSI é pura teimosia e ou ignorância.
Desculpe-me a minha intromissão … mas o modelo OSI tem aplicabilidade no mundo real e não é assim tão pouco como isso. Depende muito do fabricante o modo como é escrito o código. Mas como standard que é, o que interessa mesmo é que a coisa funcione e que as diversas maquinas se “entendam”. A mim, tanto se me dá se o código está numa eprom ou num ficheiro executavel a nivel do filesystm, como por exemplo um driver.
Sim sr, um artigo à PP!
Sem partidarismos nem flamewars.
Parabéns!
Obrigado. Abraço
Bom artigo!
E eu até contava uma piada sobre UDP mas talvez não a “apanhassem” 😀
Para a apanharmos teria de ser uma piada sobre TCP 😉
Boa!
Conta e faz um desenho! 😉
Muito bom!
Ainda agora mesmo estava a estudar isto para o CCNA da Cisco, estava a custar a entrar…
Obrigado pplware por não me ajudares a não perder a paciência! 🙂
Acabaste de dizer que a pplware ajudou.te a perder a paciencia….vai la as aulas de logica que percebes o ke estou a dizer…
NOT NOT = YES 🙂
eh eh eh. Só tens de tirar agora boa nota 😀
Acho que deu para entender 😉
very from fray no vlay
Paabems pelo artigu Mr. tcp “apanharam”
pedrao exelente ensino de Handshake muito bom parabens tenho prova essa semana agora e me ajudou muito…..
Obrigado
Proposta de revisão: ” O TCP é o protocolo mais usado isto porque fornece garantia na entrega de todos os pacotes entre um PC emissor e um PC recetor.”
Permita-me discordar pois os pacotes por vezes vêm corrompidos e isso deve-se à deficiência no transporte. Por isso alguns websites disponibilizam uma ‘hash’ (checksum, digest) para garantir que os ficheiros que descarregamos estão integros.