Learn

284 artigosCategoria: Tudo
Rede

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ísticaConteúdo
Orientado à conexãoEstabelece conexão com a outra parte antes de enviar e receber dados
Confirmação de chegadaConfirma se os dados enviados chegaram
ReenvioReenvia dados que não chegaram, conforme necessário
Controle de ordemOrganiza dados que chegaram fora de ordem
Tratamento de duplicaçãoOrganiza 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ísticaConteúdo
Sem conexãoNão pressupõe estabelecimento de conexão como TCP
Sem garantia de chegadaO próprio UDP não garante que os dados cheguem
Sem garantia de ordemO próprio UDP não garante a ordem de chegada
Sem reenvioO próprio UDP não reenvia automaticamente dados perdidos
Unidade de datagramaTrata 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.

ItemTCPUDP
Ideia básicaAdministra a comunicação para entregar corretamenteMantém o método de comunicação leve e minimiza controles
ConexãoComunica depois de estabelecer conexãoNão pressupõe estabelecimento de conexão
Tratamento dos dadosTrata como sequência contínua de bytesTrata em unidades de datagrama
Confirmação de chegadaFazO próprio UDP não faz
Controle de ordemFazO próprio UDP não faz
ReenvioFaz conforme necessárioO próprio UDP não faz
Usos adequadosComunicação em que precisão importaComunicação em que baixa latência ou controle flexível importa
ExemplosHTTP/1.1, HTTP/2, login, envio de arquivos, emailDNS, 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

DNS Leak Test

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.

URL : https://www.dnsleaktest.com/

Abrir site externo

Artigos relacionados