Qual é a diferença entre UDP e TCP?

46

Meu roteador possui dois protocolos (e uma opção "ambos") que posso selecionar ao configurar o encaminhamento de porta: UDP e TCP. Qual é a diferença entre esses dois protocolos e quando você selecionaria um sobre o outro no encaminhamento de porta?

Cara
fonte

Respostas:

51

O TCP é apoiado por acks e novas tentativas para garantir que os dados cheguem aonde estão indo. O UDP é sem conexão e "dispara e esquece". O UDP é usado principalmente para aplicativos do tipo streaming, onde se você perder alguns dados, não precisará enviá-los novamente.

Qual deles você usa depende do aplicativo. Por exemplo, um servidor web usa TCP.


fonte
3
Isso faz sentido. Portanto, se você estiver transmitindo um vídeo, não há sentido em reenviar um quadro ausente mais tarde, porque você já passou desse ponto. Obrigado
Guy
15
+1. Apenas para acrescentar, quem procura um entendimento mais aprofundado deve ler um dos muitos livros excelentes de W. Richard Stevens sobre o assunto. "TCP / IP Illustrated, v1" e "UNIX Network Programming" servem como excelentes tutoriais e referências.
Murali Suriar #
73

Você pode encontrar um bom resumo aqui:

Qual é a diferença entre os protocolos de Internet UDP e TCP?

O TCP e o UDP funcionam no modelo TCP / IP da camada de transporte, mas têm um uso muito diferente.

As diferenças mais importantes são:

  • Confiabilidade :
    TCP: orientado a
    conexão UDP: sem conexão
  • Pedido :
    TCP: a ordem de recebimento da mensagem é garantida
    UDP: a ordem não é garantida
  • Peso do protocolo :
    TCP: pesado, por causa da sobrecarga de conexão / pedido
    UDP: leve, com muito pouca sobrecarga
  • Pacotes :
    TCP: streaming, os dados são lidos como um "stream", sem distinguir onde um pacote termina e o outro começa. Pode haver vários pacotes por chamada de leitura.
    UDP: datagramas, um pacote por chamada de leitura.

Quadro estrutural

Quando os dados são enviados pela rede, eles precisam ser encapsulados nos chamados "quadros". Existem vários métodos de encapsulamento, dependendo do protocolo e da topologia que estão sendo usados. As imagens a seguir mostram como as estruturas de quadros TCP e UDP diferem.

Esta é a estrutura do quadro TCP:

Quadro TCP

E essa é a estrutura de quadros UDP, muito mais simples:

Quadro UDP

Os protocolos típicos que usam TCP são HTTP, FTP e SMTP. Exemplos de protocolos usando UDP são DNS e DHCP.

splattne
fonte
@splattne - fim da mensagem de recebimento é garantia, não transmissão
Alnitak
@ Alnitak: claro, você está certo. Eu quis dizer que o recebimento é garantido na ordem de transmissão. Vou atualizar para deixar isso claro.
Splattne 17/05/09
43

E a explicação no nível do CEO:

UDP é quando você joga seu papel na direção geral da lixeira.

Quando o TCP falha, você lança cópias exatas do mesmo papel repetidamente até que caia na lixeira. Haveria desperdício de papel e até pacotes TCP reenviados resultariam em desperdício de recursos de rede ou sistema.

pgs
fonte
1
Essa é uma explicação muito boa do "nível de CEO" - eu gosto!
214 Keithius
Eu não sou um CEO, mas por que ninguém me disse isso antes! : p
Nicolas Dorier
Isto é brilhante!
shylent
7

TCP e UDP são ambos protocolos executados em cima do IP. O TCP tem entrega garantida e o UDP não. Você selecionaria um ou outro para encaminhamento de porta, dependendo do serviço que está tentando encaminhar. HTTP, por exemplo, é TCP. Se você não sabe qual protocolo o serviço que está tentando encaminhar, é quase certamente o TCP.

Brian
fonte
3

Para responder a outra parte da sua pergunta, você precisa encaminhar o que seu aplicativo usa. Para encaminhar o tráfego HTTP, selecione TCP. Para encaminhar o tráfego TFTP, selecione UDP. Os programas p2p usam principalmente tcp e udp, então encaminhe os dois.

Tudo depende do protocolo e do programa que você está usando.

hayalci
fonte
você não está totalmente certo. O DNS também usa tcp / 53, não com tanta frequência, mas ainda assim [por exemplo. para transferência de zona].
pQd
sim. Além disso, é totalmente válido enviar consultas regulares ao DNS através do TCP. Mudei o exemplo para TFTP, que usa exclusivamente UDP.
25609 hayalci
2

Além das diferenças mencionadas até agora, o TCP também fornece

controle de fluxo. Usando um mecanismo de janela, o destinatário limita quantos octetos (bytes) deseja receber do remetente antes que o remetente aguarde a permissão para enviar mais dados. O tamanho da janela pode ser alterado pelo receptor à medida que a conversa prossegue. Isso permite que um receptor 'acelere' a taxa de dados provenientes de um remetente: o UDP não permite isso e tudo o que um receptor pode fazer é jogar fora os dados que não podem ser armazenados em buffer ou processar na chegada.

algumas instalações mais técnicas, como reconhecimento não-contíguo (usa reconhecimentos seletivos para permitir ao remetente retransmitir apenas um quadro ausente, em vez do quadro ausente e subsequentes que o receptor já possui, mas não pôde reconhecer da maneira usual), manipulação de congestionamentos e retransmissão adaptativa (ajustando o temporizador que decide quanto tempo reenviar um quadro transmitido quando uma confirmação não é recebida). Eles não são relevantes para o UDP, mas ajudam o TCP a fornecer serviços extras sobre o UDP sem aumentar muito a carga da rede para o mesmo volume de carga útil.

mas
fonte
2

O TCP faz um esforço para garantir que os dados cheguem ao destinatário; UDP não.

J. Polfer
fonte
Errado. O protocolo IP não é confiável e pode ocorrer perda de dados. O TCP faz um esforço para garantir que os dados enviados (que são divididos em pequenas partes e enviados por pacotes IP) cheguem ao destinatário (eventualmente reenviando pequenas partes, se necessário).
Anônimo
@ Anônimo - Você basicamente reafirmou o que eu disse acima. Como eu estou errado?
22909 J. Polfer
Acho que vocês dois descobrirão que o IP é a estrutura subjacente (pilha) e o protocolo de comunicação básico usado pelo UDP e pelo TCP. Na verdade, você não pode comunicar dados úteis pela Internet usando APENAS IP, tanto quanto eu sei - mesmo pings básicos etc. usam um protocolo em cima do IP (o outro principal; ICMP).
Lee B
1

Não importa todas as respostas que explicam uma contra a outra. Para propósitos de configurar um encaminhamento de porta, as regras são bem simples: você precisa escolher o TCP, a menos que os documentos para o protocolo / aplicativo que você está usando digam para usar UDP. Geralmente, aqueles que usam UDP estão relacionados a streaming, ou coisas muito simples que favorecem protocolos leves / velocidade sobre confiabilidade (particularmente DNS e NTP). Observe que também existem outros protocolos além do TCP e UDP - ICMP, protocolos de encapsulamento etc.

Lee B
fonte
1

Quanto mais conhecido é um protocolo, mais roteadores no caminho interferem no protocolo. Envie pacotes tcp, e há uma grande probabilidade de os pacotes recebidos serem altamente mutilados. O UDP geralmente não é tão confundido, e os outros 254 protocolos de paylod IP geralmente são completamente intocados.


fonte
0

Protocolo de datagrama de usuário (UDP)

Faz parte dos protocolos base do Internet Protocol Suite. Programas em computadores em rede podem enviar mensagens curtas, às vezes chamadas de datagramas. O UDP não garante confiabilidade (acontece que o datagrama pode chegar fora de ordem, duplicado ou ausente sem aviso prévio). O fato de não verificar se todos os pacotes são realmente entregues é feito, o UDP prova ser mais rápido e eficiente, para aplicativos que não precisam de entrega garantida. O UDP encontra seus usos em tais situações:

Aplicativos sensíveis ao tempo. Os problemas devido a pacotes atrasados ​​são evitados

Também é útil para servidores que respondem a pequenas consultas de um grande número de clientes. O UDP suporta transmissão de pacotes (transmite a todos na rede local) e multicasting (transmite a todos os assinantes).

Protocolo de controle de transmissão (TCP)

É freqüentemente chamado de TCP / IP devido à importância desse protocolo no Internet Protocol Suite. O TCP opera em um nível superior, preocupado apenas com os dois sistemas finais (por exemplo, entre um navegador da web e um servidor da web). O TCP fornece entrega seqüencial e confiável de um fluxo de dados de um programa em um computador para outro programa em outro computador. Os usos comuns do TCP reagrupam suporte por email, transferência de arquivos e aplicativos da Web. Entre suas tarefas de gerenciamento, o TCP controla o tamanho da mensagem, a taxa na qual as mensagens são trocadas e o congestionamento do tráfego da rede. Quanto ao IP, ele lida com transmissões de nível inferior de computador para computador como uma mensagem transferida pela Internet.


fonte
0

Bem, ambos são protocolos de rede criados sobre algo chamado IP ou Internet Protocol. O Protocolo da Internet é o principal protocolo da Internet e é, por exemplo, o que nos permite navegar na web. É por isso que você frequentemente vê esses protocolos escritos como TCP / IP ou UDP / IP. Na verdade, eles são protocolos principais da internet.

Nos dois casos, seus dados são divididos em blocos chamados pacotes. O TCP garante que esses pacotes cheguem ao seu destino, na ordem correta e sem erros.

O UDP, por outro lado, não garante que um pacote de dados chegue. Apenas garantirá que, se chegar, será sem erros.

Normalmente, outros protocolos são executados sobre TCP e UDP e são conhecidos como protocolos de aplicativos porque operam dentro de um aplicativo e não dentro do sistema operacional. Sua navegação na web usa o protocolo HTTP, que utilizará o protocolo TCP.

Pesquisas de nome de domínio ou consultas DNS geralmente usam UDP, mas também podem usar TCP. Vários serviços de streaming usam UDP sob outros protocolos de aplicativos.

Espero que responda sua pergunta em inglês mais simples.

Matt
fonte