Diferença entre TCP e UDP
Na comunicação pela Internet, vários métodos são usados para entregar dados à outra parte. Entre os mais representativos estão TCP e UDP.
TCP é um método de comunicação que prioriza entregar dados corretamente. UDP é um método que prioriza manter o próprio mecanismo de comunicação leve e facilitar menor latência.
No entanto, TCP e UDP não devem ser comparados como "qual é superior". O método adequado muda conforme o objetivo da comunicação.
O que é TCP
TCP é um método de comunicação que prioriza confiabilidade.
No TCP, estabelece-se uma conexão com a outra parte e os dados são enviados e recebidos sobre essa conexão. O protocolo confirma se os dados enviados chegaram e reenvia dados perdidos no caminho.
Além disso, na rede, os dados nem sempre chegam na mesma ordem em que foram enviados. No TCP, os dados têm informações para administrar a ordem, e o lado que recebe os organiza na ordem correta.
Por isso, TCP é adequado para comunicações em que perda ou desordem dos dados causa problema.
Por exemplo, processos de login, envio e recebimento de arquivos, envio de email e comunicação Web por HTTP/1.1 ou HTTP/2 exigem precisão dos dados. Se parte das informações de login faltar ou parte de um arquivo quebrar, o processamento correto não é possível.
TCP realiza confirmações, reenvios e outros controles para obter confiabilidade. Isso aumenta o controle em relação a UDP, mas é importante quando se quer tratar os dados na ordem correta com segurança.
TCP "administra para chegar corretamente"
A característica do TCP não é apenas "enviar dados", mas administrar a comunicação para que os dados enviados possam ser tratados corretamente.
Concretamente, TCP tem características como as seguintes.
| Característica | Conteúdo |
|---|---|
| Orientado à conexão | Estabelece conexão com a outra parte antes de enviar e receber dados |
| Confirmação de chegada | Confirma se os dados enviados chegaram |
| Reenvio | Reenvia dados que não chegaram, conforme necessário |
| Controle de ordem | Organiza dados que chegaram fora de ordem |
| Tratamento de duplicação | Organiza dados duplicados quando chegam repetidos |
Com esses mecanismos, TCP oferece às aplicações um fluxo de dados confiável e ordenado.
No entanto, TCP não preserva necessariamente "a unidade de dados enviada uma vez pela aplicação". TCP trata os dados como uma sequência contínua de bytes.
Por isso, a aplicação precisa definir separadamente onde começa e termina uma mensagem. Protocolos superiores, como HTTP, têm regras para isso.
O que é UDP
UDP é um método que prioriza leveza e baixa latência.
UDP não estabelece uma conexão antes de comunicar como TCP. Além disso, o próprio UDP não tem mecanismo para reenviar dados que não chegaram nem para reorganizar a ordem.
UDP envia dados em unidades relativamente simples. Essa unidade é chamada de datagrama.
Como UDP não coloca muitos controles no próprio método de comunicação, o processamento fica leve. Com isso, pode ser fácil usá-lo em comunicações em que tempo real é importante.
No entanto, pensar simplesmente "UDP sempre é rápido" não é preciso. Velocidade real e qualidade percebida também dependem de ambiente de rede, desenho da aplicação, criptografia, existência de reenvio, congestionamento e outros fatores.
A essência do UDP é que o próprio método de comunicação não carrega muitas garantias.
UDP "reduz garantias para facilitar o tratamento"
UDP não tem no próprio protocolo mecanismos de confiabilidade como TCP.
| Característica | Conteúdo |
|---|---|
| Sem conexão | Não pressupõe estabelecimento de conexão como TCP |
| Sem garantia de chegada | O próprio UDP não garante que os dados cheguem |
| Sem garantia de ordem | O próprio UDP não garante a ordem de chegada |
| Sem reenvio | O próprio UDP não reenvia automaticamente dados perdidos |
| Unidade de datagrama | Trata cada unidade enviada como datagrama |
Isso pode fazer UDP parecer comunicação incompleta. Mas UDP é usado porque reduzir garantias permite que a aplicação projete a comunicação com mais liberdade.
Por exemplo, em uma chamada de vídeo, pode ser mais natural entregar o áudio atual rapidamente do que reenviar com precisão áudio antigo depois. Em jogos online, refletir o estado atual rapidamente pode ser mais importante do que reenviar perfeitamente uma posição antiga.
Além disso, uma aplicação que usa UDP não fica impedida de criar garantias. Quando necessário, a aplicação pode adicionar seus próprios mecanismos de confirmação, reenvio, controle de ordem, criptografia e outros.
QUIC é um exemplo representativo. QUIC se apoia em UDP, mas não é uma comunicação UDP simples. Ele sobrepõe a UDP mecanismos como gerenciamento de conexão, criptografia, reenvio e controle de fluxos.
Comparação entre TCP e UDP
A diferença entre TCP e UDP não é apenas "ter confiabilidade ou não". O desenho da comunicação é diferente.
| Item | TCP | UDP |
|---|---|---|
| Ideia básica | Administra a comunicação para entregar corretamente | Mantém o método de comunicação leve e minimiza controles |
| Conexão | Comunica depois de estabelecer conexão | Não pressupõe estabelecimento de conexão |
| Tratamento dos dados | Trata como sequência contínua de bytes | Trata em unidades de datagrama |
| Confirmação de chegada | Faz | O próprio UDP não faz |
| Controle de ordem | Faz | O próprio UDP não faz |
| Reenvio | Faz conforme necessário | O próprio UDP não faz |
| Usos adequados | Comunicação em que precisão importa | Comunicação em que baixa latência ou controle flexível importa |
| Exemplos | HTTP/1.1, HTTP/2, login, envio de arquivos, email | DNS, chamadas de vídeo, jogos online, QUIC, HTTP/3 |
Comunicações adequadas a TCP
TCP é adequado quando perda de dados ou desordem tende a causar problema.
Ao baixar um arquivo, se faltar apenas uma parte, o arquivo inteiro pode ser corrompido. Em login, se a informação necessária para autenticação não chegar corretamente, o processamento não funciona.
Na Web, HTTP/1.1 e HTTP/2 operam sobre TCP. HTML, CSS, JavaScript, imagens e outros elementos de uma página Web precisam, em geral, ser obtidos corretamente.
Assim, TCP é adequado quando a precisão da comunicação é importante.
No entanto, a comunicação Web atual não funciona apenas com TCP. HTTP/3 usa QUIC, que se apoia em UDP.
Por isso, memorizar apenas "Web usa TCP" fica impreciso para entender comunicações atuais. É mais correto organizar como "HTTP/1.1 e HTTP/2 usam TCP; HTTP/3 usa QUIC".
Comunicações adequadas a UDP
UDP é adequado quando tempo real ou flexibilidade de desenho são importantes.
Em chamadas de vídeo, é mais importante receber áudio e vídeo atuais rapidamente do que receber perfeitamente áudio e vídeo de alguns instantes atrás. Mesmo que parte do áudio ou vídeo se perca, pode ser mais natural continuar a comunicação do que parar tudo.
Em jogos online, baixa latência também é importante. Pode ser melhor atualizar o estado atual em intervalos curtos do que reenviar perfeitamente estados antigos.
DNS também usa UDP com frequência. DNS consulta informações como o endereço IP correspondente a um domínio. Para consultas e respostas curtas, UDP é adequado.
No entanto, DNS não usa sempre apenas UDP. Quando a resposta é grande, em transferências de zona ou em métodos como DNS over TLS, TCP é usado.
Ou seja, DNS é um exemplo típico de UDP, mas não é "comunicação apenas UDP".
Relação entre QUIC e UDP
QUIC é um método de comunicação apoiado em UDP. HTTP/3 funciona sobre QUIC.
O ponto importante é que QUIC não é "sem confiabilidade porque usa UDP".
O próprio UDP não tem confirmação de chegada, reenvio, controle de ordem nem criptografia. Mas QUIC sobrepõe controles próprios a UDP e realiza confiabilidade e criptografia.
O motivo para criar isso sobre UDP, e não modificar TCP, é que TCP está profundamente incorporado em OS e equipamentos de rede; projetar um novo método sobre UDP é mais flexível.
Por isso, UDP não é apenas "comunicação grosseira". Ele também é usado como base para implementar novos métodos de comunicação.
TCP ou UDP: qual é melhor
TCP e UDP não têm uma relação em que um seja sempre superior.
TCP prioriza confiabilidade. UDP mantém o método de comunicação leve e permite mais controle no lado da aplicação.
TCP é adequado quando precisão é importante. UDP pode ser adequado quando baixa latência ou tempo real são importantes.
Além disso, mesmo usando UDP, a aplicação pode complementar a confiabilidade. Por outro lado, mesmo usando TCP, se a rede estiver ruim, haverá latência e reenvios.
Portanto, TCP e UDP não devem ser separados simplesmente como "rápido/lento" ou "seguro/perigoso". Eles são escolhidos conforme o objetivo da comunicação, a latência aceitável, se a perda de dados é tolerável e até onde a aplicação vai controlar.
Ponto de contato com anonimato
A diferença entre TCP e UDP também se relaciona a anonimato e à aparência da comunicação.
Por exemplo, em , , DNS, HTTP/3, chamadas de vídeo e jogos online, o tratamento pode mudar conforme TCP ou UDP é usado.
Em TCP, início, continuidade e término da conexão são relativamente claros. Em UDP, não há uma forma de conexão tão clara quanto TCP, e datagramas curtos podem fluir de modo intermitente.
Essa diferença é importante para firewalls, NAT, VPN, proxies e redes de anonimização.
Por exemplo, Tor é projetado basicamente para tratar fluxos TCP. Por isso, nem sempre é possível passar diretamente por Tor comunicações de aplicações que usam UDP.
Além disso, como HTTP/3 usa QUIC, a comunicação Web também pode ser baseada em UDP. Nesses casos, a forma como a comunicação aparece e é controlada pode mudar em relação ao HTTP/1.1 e HTTP/2 tradicionais.
DNS também é importante para anonimato e privacidade. A observação da comunicação muda conforme consultas DNS saem por UDP, por TCP ou por métodos DNS criptografados.
Entender TCP e UDP ajuda a organizar não apenas que "há comunicação", mas que tipo de comunicação é transportada e de que forma.
Resumo
TCP é um método de comunicação que prioriza confiabilidade. Ele estabelece conexão, confirma se dados chegaram, reenvia quando necessário e organiza a ordem.
UDP mantém o método de comunicação leve e não tem como funções básicas confirmação de chegada, reenvio ou controle de ordem. Por isso é usado em comunicações que exigem baixa latência ou desenho flexível.
TCP é adequado a HTTP/1.1, HTTP/2, login, envio e recebimento de arquivos e email. UDP é usado em DNS, chamadas de vídeo, jogos online, QUIC e HTTP/3.
No entanto, DNS também usa TCP, não apenas UDP. QUIC se apoia em UDP, mas não é simples comunicação UDP; ele tem mecanismos próprios de confiabilidade e criptografia.
TCP e UDP não são uma relação de superioridade. Eles são escolhidos conforme o objetivo: priorizar precisão, baixa latência ou flexibilidade.
Ferramentas relacionadas
DNSLeakTest
Recurso externo relacionado a este artigo. Abra apenas se fizer sentido para sua situação e seu modelo de ameaça.
Por que aparece aqui: Pode ajudar com o tema do artigo, mas fica fora do Anonymity Sense e deve ser avaliado antes do uso.