Home Comunidade Eventos YouTube Networks Desafios // produtos Academy News CTI | CVE Contato

01 - Não Orientado à Conexão

video explicativo
Video explicativoEspaco reservado para o video desta anotação — adicione video: https://youtu.be/... no frontmatter da nota.

Não Orientado à Conexão (Connectionless)

1. Definição

A característica "Não Orientado à Conexão" é o princípio operacional fundamental do protocolo UDP (RFC 768). Ela define que não existe um ciclo de vida formal para a comunicação: não há fase preliminar de estabelecimento (handshake), não há fase de manutenção de estado e não há fase formal de encerramento.

No modelo "sem conexão", a comunicação é tratada como uma série de transações isoladas. O processo remetente envia dados para o processo receptor sem perguntar se o receptor está pronto, sem avisar que vai enviar e sem esperar um "sinal verde". É o equivalente digital a enviar uma carta pelo correio: você escreve, coloca na caixa e espera que chegue, sem saber se o destinatário está em casa.

Comparação com TCP (Orientado à Conexão)

Fase TCP (orientado) UDP (não orientado)
Estabelecimento Three-way handshake (SYN, SYN-ACK, ACK) Nenhum
Transferência Fluxo contínuo de bytes com estado Datagramas isolados sem estado
Encerramento Four-way (FIN, ACK, FIN, ACK) + TIME_WAIT Nenhum
Estado no kernel TCB (Transmission Control Block) por conexão Nenhum
Latência inicial 1 RTT antes do primeiro byte Zero
Memória Proporcional ao nº de conexões Quase constante

2. Ausência de Handshake (Aperto de Mão)

A diferença mais imediata em relação a protocolos orientados à conexão é a falta de estabelecimento formal.

  • Início Imediato: No TCP, antes de qualquer dado útil viajar, os hosts devem trocar mensagens de sincronização (SYN, SYN-ACK, ACK). Isso consome tempo (pelo menos 1 RTT - Round Trip Time). No UDP, o cabeçalho é criado e os dados são passados imediatamente para a Camada IP. A latência inicial é zero.
  • Sem Negociação de Parâmetros: Como não há handshake, não há oportunidade para negociar parâmetros como MSS (Maximum Segment Size) ou janela de recebimento. O remetente assume que o receptor pode lidar com o que está sendo enviado, o que exige que a aplicação evite pacotes maiores que o MTU (Path MTU Discovery, RFC 1191).

Diagrama de Tempo

TCP (3-way handshake):
   Cliente            Servidor
      |--- SYN ------->|
      |<-- SYN/ACK ----|
      |--- ACK ------->|  (1 RTT antes do 1o byte de dados)
      |--- data ------->|

UDP (sem handshake):
   Cliente            Servidor
      |--- data ------->|   (imediatamente)

3. Comunicação "Dispare e Esqueça" (Fire and Forget)

O fluxo de dados é estritamente unidirecional do ponto de vista do transporte.

  • Isolamento da Transmissão: Quando o emissor envia um datagrama, o protocolo UDP descarta a informação imediatamente após o envio. Ele não mantém uma cópia do datagrama em um buffer de retransmissão e não espera por uma resposta.
  • Foco na Ação: A responsabilidade do protocolo termina no momento em que o dado é entregue à Camada de Rede. Se o dado chegar ao destino, ótimo. Se se perder no caminho, o emissor nunca saberá (a menos que a aplicação implemente seu próprio timer).

4. Ausência de Estado (Statelessness)

Em arquitetura de redes, "estado" significa manter memória sobre transações passadas. O UDP é stateless (sem estado).

4.1 Sem TCB (Transmission Control Block)

No TCP, cada conexão requer que o kernel aloque uma estrutura de dados complexa (TCB) contendo números de sequência, tamanhos de janela, timers, buffers de reordenação, etc. Em Linux (struct tcp_sock), isso chega a ~2 KB por conexão. Um servidor com 100.000 conexões TCP já consome ~200 MB só de TCBs.

4.2 Eficiência de Memória no UDP

No UDP, o servidor não precisa alocar memória para manter o estado de um "cliente conectado". O servidor simplesmente tem um socket aberto na porta. Quando um datagrama chega, ele lê, processa e esquece. Isso permite que um servidor UDP atenda a milhões de clientes simultâneos com uso de memória constante.

Exemplos práticos:

  • Servidor DNS recursivo (BIND, Unbound): Pode atender dezenas de milhares de clientes por segundo com poucos MB de RAM.
  • Servidor NTP: Um único servidor NTP público (ex.: pool.ntp.org) atende centenas de milhares de clientes UDP por segundo com uso de CPU e RAM desprezíveis.

5. Flexibilidade na Topologia

A natureza sem conexão oferece flexibilidade operacional.

  • Mudança Dinâmica de Destino: Como não há "tubo" fixo, um remetente pode enviar o primeiro datagrama para o IP A e o segundo para o IP B usando o mesmo socket. Exemplo: um servidor DNS que responde a clientes diferentes a partir do mesmo socket UDP/53.
  • Multicast Nativo: O modelo sem conexão é o único que suporta Multicast eficientemente. Não seria possível estabelecer conexões TCP bilaterais com 10.000 receptores simultaneamente. Com UDP, o servidor envia um único datagrama para um endereço de grupo (224.0.0.0/4), e a rede faz a replicação. O receptor entra (IGMP Join) e sai (IGMP Leave) do grupo sem nunca "conversar" com o servidor.

Exemplos de aplicações multicast UDP: IPTV, streaming de câmeras IP (RTP/RTSP), descoberta de serviços (mDNS, SSDP), sincronização de estado em clusters (Corosync, VRRP).

6. O Princípio do "Melhor Esforço" (Best-Effort)

O UDP herda o serviço "melhor esforço" do IP. Ser não orientado à conexão significa aceitar as imperfeições da rede.

  • Perda Silenciosa: Se a rede estiver congestionada e um roteador descartar o datagrama UDP (tail drop, RED, CoDel), o UDP não será notificado. Não haverá retransmissão automática.
  • Chegada Fora de Ordem: Como não há conexão com números de sequência contínuos, o receptor aceita os datagramas na ordem em que o IP os entrega. Se o Datagrama 2 chegar antes do 1, será entregue primeiro à aplicação.
  • Duplicação: Em raros casos (ex.: reconfiguração de rota em redes redundantes), um mesmo datagrama pode chegar duas vezes. O UDP não remove duplicatas.

7. Implicações para a Aplicação

Como o protocolo de transporte não oferece conectividade gerenciada, a aplicação assume a responsabilidade:

  • Confiabilidade Opcional: Se a aplicação precisa saber que o dado chegou (ex.: TFTP - Trivial File Transfer Protocol, RFC 1350), ela deve implementar sua própria lógica de números de sequência e ACKs sobre o UDP.
  • Descoberta de Falhas: A aplicação pode implementar timeouts. Se não receber resposta em X segundos, assume que o pedido foi perdido e tenta novamente.
  • Controle de Congestionamento Opcional: Aplicações que geram grandes volumes de tráfego UDP (ex.: QUIC antes da adoção generalizada, alguns protocols P2P) devem implementar controle de congestão para não saturar a rede. A RFC 8085 define diretrizes obrigatórias para uso de UDP.

8. Latência Comparativa: TCP vs UDP

Cenário de consulta DNS a 50 ms de RTT:

Etapa TCP UDP
Handshake +50 ms (1 RTT) 0 ms
Envio da consulta +50 ms (1 RTT) +50 ms
Total até resposta ~100 ms ~50 ms

Essa diferença de 50 ms explica por que DNS, NTP, SNMP, DHCP e protocolos de tempo real (VoIP, gaming) usam UDP: a latência de handshake é inaceitável para esses casos.

9. Resumo Técnico

Atributo UDP (não orientado)
Handshake Não
Estado por fluxo Não (stateless)
Latência inicial 0 ms
Multicast Suportado nativamente
Custo de memória por fluxo ~0
RFC de referência RFC 768 (1980), RFC 8085 (2017)

10. Conclusão

"Não Orientado à Conexão" representa a escolha pela velocidade e simplicidade. O UDP remove toda a burocracia da comunicação de rede (handshake, estado, encerramento, ACKs), permitindo que dados voem pela rede sem atrasos, mas exige que as aplicações sejam resilientes e tolerantes a falhas. É a base ideal para DNS, NTP, VoIP, streaming e qualquer cenário onde baixa latência e escala massiva importem mais que entrega garantida.