TCP vs. UDP

Existem dois tipos de tráfego IP (Internet Protocol). Eles são TCP ou protocolo de Controle de Transmissão e UDP ou Protocolo de datagrama do usuário. O TCP é orientado à conexão - uma vez que uma conexão é estabelecida, os dados podem ser enviados bidirecionais. O UDP é um protocolo da Internet mais simples e sem conexão. Várias mensagens são enviadas como pacotes em pedaços usando UDP.

Gráfico de comparação

Diferenças - Semelhanças - Gráfico de comparação TCP versus UDP
TCPUDP
Acrônimo para protocolo de Controle de Transmissão Protocolo de datagrama do usuário ou Protocolo de datagrama universal
Conexão Transmission Control Protocol é um protocolo orientado a conexão. User Datagram Protocol é um protocolo sem conexão.
Função Como uma mensagem percorre a Internet de um computador para outro. Isso é baseado em conexão. O UDP também é um protocolo usado no transporte ou transferência de mensagens. Isso não é baseado em conexão, o que significa que um programa pode enviar uma carga de pacotes para outro e isso seria o fim do relacionamento.
Uso O TCP é adequado para aplicativos que exigem alta confiabilidade e o tempo de transmissão é relativamente menos crítico. O UDP é adequado para aplicativos que precisam de transmissão rápida e eficiente, como jogos. A natureza apátrida do UDP também é útil para servidores que respondem a pequenas consultas de um grande número de clientes.
Uso por outros protocolos HTTP, HTTPs, FTP, SMTP, Telnet DNS, DHCP, TFTP, SNMP, RIP, VOIP.
Ordenação de pacotes de dados O TCP reorganiza os pacotes de dados na ordem especificada. O UDP não tem ordem inerente, pois todos os pacotes são independentes um do outro. Se o pedido for necessário, ele deverá ser gerenciado pela camada do aplicativo.
Velocidade de transferência A velocidade do TCP é mais lenta que o UDP. O UDP é mais rápido porque a recuperação de erros não é tentada. É um protocolo de "melhor esforço".
Confiabilidade Há garantia absoluta de que os dados transferidos permanecem intactos e chegam na mesma ordem em que foram enviados. Não há garantia de que as mensagens ou pacotes enviados cheguem a todos.
Tamanho do cabeçalho O tamanho do cabeçalho TCP é 20 bytes O tamanho do cabeçalho UDP é de 8 bytes.
Campos de cabeçalho comuns Porta de origem, porta de destino, soma de verificação Porta de origem, porta de destino, soma de verificação
Streaming de dados Os dados são lidos como um fluxo de bytes, nenhuma indicação distinta é transmitida para os limites da mensagem de sinal (segmento). Os pacotes são enviados individualmente e verificados quanto à integridade somente se chegarem. Os pacotes têm limites definidos que são respeitados no recebimento, o que significa que uma operação de leitura no soquete do receptor produzirá uma mensagem inteira como foi originalmente enviada.
Peso O TCP é pesado. O TCP requer três pacotes para configurar uma conexão de soquete, antes que qualquer dado do usuário possa ser enviado. O TCP lida com confiabilidade e controle de congestionamento. UDP é leve. Não há pedidos de mensagens, conexões de rastreamento etc. É uma pequena camada de transporte projetada sobre o IP.
Controle de fluxo de dados TCP faz controle de fluxo. O TCP requer três pacotes para configurar uma conexão de soquete, antes que qualquer dado do usuário possa ser enviado. O TCP lida com confiabilidade e controle de congestionamento. O UDP não tem uma opção para controle de fluxo
Verificação de erros O TCP verifica e recupera erros. Pacotes errados são retransmitidos da origem para o destino. O UDP faz a verificação de erros, mas simplesmente descarta pacotes errados. A recuperação de erros não foi tentada.
Campos 1. Número de sequência, 2. Número de confirmação, 3. Desvio de dados, 4. Reservado, 5. Bit de controle, 6. Janela, 7. Ponteiro urgente 8. Opções, 9. Preenchimento, 10. Check Sum, 11. Porta de origem, 12. porta de destino 1. Comprimento, 2. Porta de origem, 3. Porta de destino, 4. Verificar soma
Reconhecimento Segmentos de reconhecimento Nenhum reconhecimento
Aperto de mão SYN, SYN-ACK, ACK Sem handshake (protocolo sem conexão)

Conteúdo: TCP vs UDP

  • 1 Diferenças nos recursos de transferência de dados
    • 1.1 Confiabilidade
    • 1.2 Pedido
    • 1.3 Conexão
    • 1.4 Método de transferência
    • 1.5 Detecção de erro
  • 2 Como o TCP e o UDP funcionam
  • 3 aplicações diferentes de TCP e UDP
    • 3.1 TCP vs. UDP para servidores de jogos
  • 4 Referências

Diferenças nos recursos de transferência de dados

TCP garante uma entrega confiável e ordenada de um fluxo de bytes do usuário para o servidor ou vice-versa. UDP não é dedicado a conexões de ponta a ponta e a comunicação não verifica a prontidão do receptor.

Confiabilidade

TCP é mais confiável, pois gerencia o reconhecimento de mensagens e retransmissões em caso de perda de peças. Portanto, não há absolutamente nenhum dado ausente. UDP não garante que a comunicação chegue ao receptor, uma vez que os conceitos de reconhecimento, tempo limite e retransmissão não estão presentes.

Encomenda

TCP as transmissões são enviadas em uma sequência e são recebidas na mesma sequência. No caso de segmentos de dados chegarem na ordem errada, o TCP reordena e entrega o aplicativo. No caso de UDP, A sequência de mensagens enviadas pode não ser mantida quando chega ao aplicativo de recebimento. Não há absolutamente nenhuma maneira de prever a ordem em que a mensagem será recebida.

Conexão

TCP é uma conexão pesada que requer três pacotes para uma conexão de soquete e lida com controle de congestionamento e confiabilidade. UDP é uma camada de transporte leve projetada sobre um IP. Não há conexões de rastreamento ou ordenação de mensagens.

Método de transferência

TCP lê dados como um fluxo de bytes e a mensagem é transmitida aos limites do segmento. UDP as mensagens são pacotes enviados individualmente e na chegada são verificados quanto à sua integridade. Pacotes definiram limites enquanto o fluxo de dados não possui.

Detecção de erro

O UDP trabalha com base no "melhor esforço". O protocolo suporta detecção de erro via soma de verificação, mas quando um erro é detectado, o pacote é descartado. A retransmissão do pacote para recuperação desse erro não é tentada. Isso ocorre porque o UDP geralmente é para aplicativos sensíveis ao tempo, como jogos ou transmissão de voz. A recuperação do erro seria inútil porque, no momento em que o pacote retransmitido for recebido, ele não será útil..

O TCP usa a detecção e a recuperação de erros. Os erros são detectados através da soma de verificação e, se um pacote estiver incorreto, ele não será reconhecido pelo receptor, o que desencadeia uma retransmissão pelo remetente. Esse mecanismo operacional é chamado de reconhecimento positivo com retransmissão (PAR).

Como o TCP e o UDP funcionam

Uma conexão TCP é estabelecida por meio de um handshake de três vias, que é um processo de iniciar e confirmar uma conexão. Uma vez estabelecida a conexão, a transferência de dados pode começar. Após a transmissão, a conexão é encerrada fechando todos os circuitos virtuais estabelecidos.

O UDP usa um modelo de transmissão simples, sem diálogos implícitos de agitação manual para garantir confiabilidade, pedidos ou integridade dos dados. Assim, o UDP fornece um serviço não confiável e os datagramas podem chegar fora de ordem, aparecer duplicados ou desaparecer sem aviso prévio. O UDP pressupõe que a verificação e correção de erros não sejam necessárias ou executadas no aplicativo, evitando a sobrecarga desse processamento no nível da interface de rede. Ao contrário do TCP, o UDP é compatível com difusões de pacotes (enviando para todos na rede local) e multicast (enviar para todos os assinantes).

Diferentes aplicações de TCP e UDP

Navegação na Web, email e transferência de arquivos são aplicativos comuns que fazem uso do TCP. O TCP é usado para controlar o tamanho do segmento, a taxa de troca de dados, o controle de fluxo e o congestionamento da rede. O TCP é preferido quando os recursos de correção de erros são necessários no nível da interface de rede. O UDP é amplamente utilizado por aplicativos sensíveis ao tempo e por servidores que respondem a pequenas consultas de um grande número de clientes. O UDP é compatível com a transmissão de pacotes - enviando para todos em uma rede e multicast - enviando para todos os assinantes. O UDP é comumente usado no sistema de nomes de domínio, voz sobre IP, protocolo de transferência de arquivos trivial e jogos online.

TCP vs. UDP para servidores de jogos

Para jogos MMO (massively multiplayer online), os desenvolvedores geralmente precisam fazer uma escolha arquitetônica entre usar conexões persistentes UDP ou TCP. As vantagens do TCP são conexões persistentes, confiabilidade e capacidade de usar pacotes de tamanhos arbitrários. O maior problema com o TCP nesse cenário é o algoritmo de controle de congestionamento, que trata a perda de pacotes como um sinal de limitações de largura de banda e limita automaticamente o envio de pacotes. Em redes 3G ou Wi-Fi, isso pode causar uma latência significativa.

O desenvolvedor experiente Christoffer Lernö avaliou os prós e os contras e recomenda os seguintes critérios para escolher se deseja usar TCP ou UDP para o seu jogo:

  • Use HTTP sobre TCP para fazer consultas sem estado sem estado, iniciadas pelo cliente, quando houver problema em ter um atraso ocasional.
  • Use soquetes TCP simples persistentes se o cliente e o servidor enviarem pacotes independentemente, mas um atraso ocasional for bom (por exemplo, Online Poker, muitos MMOs).
  • Use o UDP se o cliente e o servidor puderem enviar pacotes de forma independente e o atraso ocasional não estiver bom (por exemplo, na maioria dos jogos de ação para vários jogadores, alguns MMOs).

Referências

  • Wikipedia: Protocolo de Controle de Transmissão
  • Wikipedia: Protocolo de datagrama de usuário
  • UDP vs TCP para servidores de jogos
  • O Protocolo de Controle de Transmissão