O que são TCP e UDP? Uma Explicação Simples - TechRobot

O que são TCP e UDP? Uma Explicação Simples

A internet depende de dois protocolos para a troca de informações entre computadores. Esses protocolos de comunicação definem as regras que determinam como a transferência de dados ocorre entre quaisquer duas entidades envolvidas, seja de um-para-um ou de um-para-muitos. Protocolo de Controle de Transmissão (TCP) e Protocolo de Datagrama de Usuário (UDP) são dois protocolos que você pode usar para mover dados através de redes. Ambos funcionam na camada de transporte do modelo OSI.

Semelhantes, porém diferentes, esses dois protocolos desempenham suas funções de maneira eficiente. Enquanto um é orientado à conexão e requer o estabelecimento de uma conexão antes que a transferência de dados possa começar, o outro é sem conexão e envia dados sem informar primeiro o dispositivo de destino. Há mais sobre o que esses protocolos fazem, como você descobrirá abaixo. Este artigo foca em TCP e UDP — como eles funcionam, suas vantagens, desvantagens e diferenças. 

O que é TCP?

O Transmission Control Protocol é um protocolo de comunicação que lida principalmente com a transferência de pacotes de dados na internet. Ele opera na camada de transporte (camada 4) do modelo de Interconexão de Sistemas Abertos (OSI). Esse protocolo auxilia na transferência de pacotes de dados entre um dispositivo/aplicação cliente e um servidor (junto com UDP). 

TCP é orientado à conexão, o que significa que o cliente e o servidor devem estabelecer uma conexão antes de enviar dados em qualquer direção. Além disso, é um protocolo confiável, pois verifica erros e garante que os pacotes de dados cheguem ao seu destino na ordem que o dispositivo ou aplicativo remetente pretendia.

Como o TCP Funciona?

Ao usar TCP, um cliente e um servidor estabelecem uma conexão usando o que é conhecido como o aperto de mão de três vias antes que a transferência bidirecional de pacotes de dados comece. Antes do aperto de mão de três vias começar, o servidor deve estar ouvindo em uma porta para aceitar a conexão. O aperto de mão começa com a troca de três mensagens (ou flags) conhecidas como SYN, SYN/ACK e ACK entre o cliente e o servidor.

Vamos dar uma olhada no processo passo a passo da troca abaixo.

1. O cliente envia um pacote de dados SYN para o servidor. O pacote SYN contém um número de sequência aleatório (X) que o cliente atribui. O propósito deste pacote é verificar se o servidor está disponível para uma nova conexão. 

2. O servidor recebe o pacote SYN e o reconhece enviando um pacote SYN/ACK. O servidor define o número de reconhecimento para um a mais que o número de sequência (1+X) que o cliente atribuiu ao pacote SYN inicial e define outro número de sequência aleatório (Y). Assim, o servidor envia dois números de sequência junto com seu pacote SYN/ACK para o cliente.

3. O cliente recebe o pacote SYN/ACK do servidor e o reconhece enviando um pacote ACK. O cliente define o número de reconhecimento para um a mais do que o número de sequência (1+Y) que recebeu do servidor. 

Uma vez que o processo de handshake de três vias está completo, o cliente e o servidor podem enviar e receber dados um do outro.

Vantagens e Desvantagens do TCP

Como a maioria dos protocolos, o TCP não é perfeito; ele tem suas vantagens e desvantagens. Vamos olhar os prós e contras de usar o TCP abaixo. 

Vantagens

1. Confiável

O TCP é confiável porque garante que os pacotes de dados cheguem ao seu destino na ordem correta. Quando o TCP transmite um segmento de dados, ele inicia um temporizador e espera por um reconhecimento do destino. Ele reenviará o segmento se não receber nenhum reconhecimento. Além disso, utiliza sequenciamento para saber quando os pacotes de dados chegam fora de ordem.

2. Detecção de Erros e Recuperação

O TCP usa um checksum de ponta a ponta para verificar qualquer alteração nos pacotes à medida que chegam ao seu destino. Ele descarta pacotes com erros e espera que o remetente os reenvie. Além disso, descarta também duplicatas de dados. 

3. Controle de Congestionamento

O TCP utiliza bufferização e controle de janela para lidar com congestionamento. O congestionamento pode acontecer quando a extremidade receptora da conexão TCP recebe mais pacotes de dados do que pode processar de uma vez. O TCP usa buffers para lidar com o congestionamento, mas quando os buffers ficam cheios, ele utiliza o controle de janela para reduzir a quantidade de dados que o remetente pode enviar por vez.

Desvantagens

1. Velocidade Lenta

Comparado ao UDP, o TCP é lento. Primeiramente, o necessário aperto de mão de três vias leva tempo. Depois, há a redução de velocidade que o controle de fluxo, controle de congestionamento e verificação de erros causam durante a transferência de dados. Nesses casos, o TCP sacrifica velocidade pela confiabilidade. 

2. Vulnerável a Ataques DoS

O three-way handshake do TCP o torna vulnerável a ataques de DoS ou ataques DDoS. Um SYN flood é um desses ataques onde uma entidade maliciosa torna um servidor indisponível ao inundá-lo com pacotes SYN. Esse ataque visa sobrecarregar o servidor, impedindo-o de responder a solicitações genuínas. 

O que é UDP?

O User Datagram Protocol (UDP) é um protocolo de comunicação como o TCP que opera na camada de transporte do modelo OSI. Diferente do TCP, é um protocolo sem conexão, o que significa que um cliente não precisa estabelecer uma conexão com o servidor antes de transmitir pacotes de dados. Como resultado, não há handshake de três vias, controle de fluxo e sequenciamento.

UDP não se importa se os datagramas enviados chegam ao seu destino ou se chegam na ordem em que o cliente os enviou. Isso o torna menos confiável que o TCP, mas mais rápido, já que não precisa esperar por confirmações ou retransmitir dados. No entanto, o UDP se preocupa com a integridade dos dados e usa um checksum para confirmar que uma terceira parte não manipulou os datagramas. 

Como Funciona o UDP?

Com o UDP, o movimento de datagramas de sua origem até o destino é um processo fácil. Após adicionar seu cabeçalho aos pacotes IP que recebe da camada de rede, ele envia datagramas diretamente para o servidor de destino sem a necessidade de estabelecer qualquer conexão primeiro. É a natureza simples deste processo que faz do UDP um protocolo sem conexão.

Além disso, o UDP é ideal para comunicações sensíveis ao tempo onde a perda de dados durante o trânsito é aceitável. Por exemplo, comunicações de voz e vídeo utilizam o UDP.

Vantagens e Desvantagens do UDP

A falta de controle de fluxo e retransmissão de dados do UDP é tanto uma vantagem quanto uma desvantagem. Abaixo, analisamos os prós e contras de usar o UDP. 

Vantagens

1. Transmissão Rápida de Dados

Uma vez que o UDP não precisa reconhecer datagramas antes de o computador de destino poder receber mais e não retransmite dados, é mais rápido do que o TCP. Além disso, a ausência de um handshake de três vias resulta em menos sobrecarga e transmissões de dados mais rápidas.

2. Detecção de Erros

Como o TCP, o UDP usa um checksum de ponta a ponta para detectar se os datagramas têm algum erro. Ao fazer isso, mantém a integridade dos dados e descarta datagramas com erros. Como não há mecanismo de retransmissão, o UDP não recupera ou reenvia datagramas que descarta. 

Desvantagens

1. Não confiável

Recursos que tornam uma conexão confiável estão ausentes nas conexões UDP. Diferente do TCP, o UDP não garante que os datagramas enviados chegarão ao seu destino. Como resultado, os datagramas não possuem um temporizador nem precisam ser reconhecidos pelo dispositivo receptor. Além disso, não há garantia de que os datagramas chegarão ao seu destino na ordem correta. 

2. Sem Controle de Congestionamento

UDP não possui um mecanismo para controlar a congestão. Como não reconhece datagramas ou usa controle de janela para controlar a transmissão de dados, não há como prevenir a congestão. Como resultado, grandes rajadas de dados podem resultar em congestões. 

Diferenças Entre TCP e UDP

Abaixo, vamos analisar as diferenças entre o TCP orientado à conexão e o UDP sem conexão.

1. Confiabilidade

TCP é um protocolo mais confiável comparado ao UDP. O TCP confirmará que um segmento de dados chegue ao seu destino antes de enviar outro. Além disso, ele garantirá que os segmentos cheguem na mesma sequência em que foram enviados e retransmitirá dados que não chegarem ao destino. Adicionalmente, o TCP usa controle de fluxo para garantir que o cliente não envie pacotes mais rápido do que o servidor possa processá-los. Ao contrário, o UDP não faz nada do acima mencionado e se preocupa mais em transferir dados o mais rápido possível.  

2. Velocidade

As características do TCP que o tornam confiável também o tornam mais lento do que o TCP. O handshake de três vias, controle de fluxo, controle de congestionamento e mecanismo de retransmissão não fazem parte do UDP. Como resultado, com menos sobrecarga, o UDP é mais rápido do que o TCP. 

3. Uso

A transferência de dados orientada à conexão do TCP o torna adequado para aplicações que exigem confiabilidade e não podem aceitar a perda de dados. Por exemplo, ele suporta protocolos como HTTP, SSH, FTP, SMTP e IMAP. Por outro lado, a velocidade do UDP o torna adequado para aplicações ou protocolos sensíveis ao tempo que podem aceitar perda de dados, como chats de vídeo ou áudio ao vivo, Voice over IP, solicitações de DNS e jogos online.

Conclusão

TCP e UDP são a base da comunicação na internet. Sem esses dois protocolos, seria desafiador para dispositivos conectados à internet se comunicarem entre si. TCP é o protocolo ideal se você precisa de confiabilidade e precisão. Por outro lado, UDP é o protocolo de que você precisa se estiver menos preocupado com a perda de pacotes de dados e mais preocupado com a rapidez com que eles chegam ao seu destino.