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

02 - Destination Port

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

Destination Port (Porta de Destino)

1. Definição e Posicionamento no Cabeçalho

O campo Destination Port (Porta de Destino) é o segundo campo de 16 bits do cabeçalho UDP, logo após o Source Port. Sua função é absolutamente crítica: ele identifica o processo (aplicação) receptor para o qual o datagrama está destinado.

Enquanto a Porta de Origem ajuda na resposta, a Porta de Destino é o que torna a entrega possível. É através deste campo que o sistema operacional do host receptor sabe se deve entregar os dados para o servidor Web, o cliente de DNS, o jogo ou qualquer outro aplicativo que esteja aguardando comunicações.

Layout do cabeçalho UDP (8 bytes fixos):

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          Source Port          |       Destination Port        |  <-- este campo
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            Length             |           Checksum            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

2. A Função de Desmultiplexação (Demultiplexação)

O conceito técnico central associado à Porta de Destino é a Desmultiplexação.

2.1 O Problema da Chegada

Um computador (host) possui um único endereço IP (ou poucos), mas pode rodar dezenas ou centenas de processos de rede ao mesmo tempo. Quando um datagrama IP chega ao computador, a Camada de Rede (IP) cumpriu sua parte (entregou até a máquina). Agora, a Camada de Transporte (UDP) deve decidir o que fazer com esses dados.

2.2 A Solução

A Camada de Transporte lê o campo Destination Port. Ela consulta sua tabela de soquetes internos para ver se existe algum processo (aplicação) que solicitou permissão para "escutar" (aguardar dados) nesse número de porta específico.

/* Exemplo POSIX: servidor escutando na porta 53 (DNS) */
int sockfd = socket(AF_INET, SOCK_DGRAM, 0);
struct sockaddr_in addr = {0};
addr.sin_family = AF_INET;
addr.sin_port = htons(53);                // Destination Port que será escutada
addr.sin_addr.s_addr = htonl(INADDR_ANY);
bind(sockfd, (struct sockaddr*)&addr, sizeof(addr));
recvfrom(sockfd, buf, sizeof(buf), 0, NULL, NULL);

2.3 Entrega ou Descarte

  • Entrega: Se houver um processo escutando nessa porta, o sistema operacional copia o payload do datagrama para a memória desse processo.
  • Descarte: Se não houver nenhum processo escutando, o datagrama é descartado e, geralmente, uma mensagem de erro ICMP ("Port Unreachable") é enviada de volta ao remetente.

3. Classificação IANA de Portas (RFC 6335)

A IANA (Internet Assigned Numbers Authority) divide o espaço de 16 bits em três faixas:

Faixa Designação Uso típico Privilégio
0 – 1023 Well-Known (System) Servidores padrão (DNS, HTTP, SSH) root/admin
1024 – 49151 Registered (User) Aplicações comerciais registradas Usuário comum
49152 – 65535 Dynamic / Private (Ephemeral) Portas efêmeras em clientes Usuário comum

3.1 Portas Bem Conhecidas (Well-Known)

Servidores esperam que os clientes saibam antecipadamente em qual porta contatá-los. Exemplos notáveis de portas UDP:

Porta Protocolo Descrição
53 DNS Domain Name System (consultas)
67/68 DHCP Server (67) / Client (68)
69 TFTP Trivial File Transfer Protocol
123 NTP Network Time Protocol
161/162 SNMP Agent (161) / Trap (162)
500 IKE IPsec Key Exchange
514 Syslog System Logging
520 RIP Routing Information Protocol
1900 SSDP Simple Service Discovery Protocol (UPnP)
5353 mDNS Multicast DNS (Bonjour/Avahi)
5060 SIP Session Initiation Protocol
1194 OpenVPN VPN sobre UDP

Se um cliente UDP envia dados para a porta 53, está implicitamente dizendo: "Este dado é para o seu serviço de DNS". Se envia para 161, é SNMP.

3.2 Privilégio de Abertura

Em sistemas Unix-like, abrir (bind) uma porta abaixo de 1024 requer privilégios de root (ou a capability CAP_NET_BIND_SERVICE). Isso evita que usuários comuns rodem servidores falsos de SSH, DNS ou HTTP em máquinas compartilhadas.

# Conceder capability a um binário sem dar root total
sudo setcap 'cap_net_bind_service=+ep' /usr/bin/my_custom_dns

4. Papel em Servidor vs Cliente

O papel da Porta de Destino é fixo para o servidor, mas varia para o cliente.

  • No Servidor: A Porta de Destino é geralmente estática e conhecida. O servidor DNS sempre espera dados na porta 53. O servidor Web sempre espera dados na porta 80 (HTTP) ou 443 (HTTPS/TLS, com HTTP/3 usando QUIC/UDP).
  • No Cliente: Quando um cliente inicia uma requisição, ele envia o pacote para a Porta de Destino do servidor (ex.: 53). O servidor usa essa informação para rotear a requisição internamente para o software correto.

Exemplo de Troca de Papéis (Request/Response)

Cliente (192.168.1.10)              Servidor DNS (8.8.8.8)
  src_port=54321 dst_port=53   --->   "consulta A example.com"

  src_port=53    dst_port=54321 <---  "resposta 93.184.216.34"

Na requisição, Destination Port = 53 (serviço). Na resposta, Destination Port = 54321 (porta efêmera do cliente). A Porta de Destino inverte-se a cada pacote em uma conversa bidirecional.

5. Port Forwarding e NAT

Em redes com NAT residencial ou CGNAT, o campo Destination Port é frequentemente reescrito por Port Forwarding (DNAT - Destination NAT):

Internet --> Router (NAT) --> LAN
              |
              |  dst_port=80 -> reescreve para 192.168.1.100:8080
              |  dst_port=53 -> reescreve para 192.168.1.10:53

Isso permite que serviços internos sejam acessíveis pela internet mesmo sem IP público dedicado. Em UDP, a entrada na tabela de NAT expira tipicamente em 30-60 segundos se não houver tráfego, exigindo keepalive (ex.: SIP, STUN).

6. Falha na Entrega (Port Unreachable)

Se um datagrama UDP chegar a um host e o campo Destination Port apontar para um número onde nenhum processo está escutando:

  1. O sistema operacional descarta o datagrama (os dados nunca chegam à aplicação).
  2. O sistema operacional gera uma mensagem de erro ICMPv4 Tipo 3, Código 3 ("Destination Unreachable - Port Unreachable").
  3. Essa mensagem ICMP é enviada de volta ao endereço IP de origem notificando o erro.

Detecção com Ping/Traceroute

# Detectar que ninguém está escutando na porta UDP 161 do alvo
$ nmap -sU -p 161 192.168.1.1
PORT    STATE  SERVICE
161/udp closed snmp

# Teste manual com hping3
$ hping3 --udp -p 9999 192.168.1.1
ICMP Port Unreachable from 192.168.1.1

Em IPv6, o equivalente é ICMPv6 Tipo 1, Código 4 (Port Unreachable).

Atenção: UDP e ICMP Rate Limiting

Para evitar abuse, kernels Linux limitam a geração de ICMP Port Unreachable por socket:
- net.ipv4.icmp_ratelimit (default 1000 ms)
- net.ipv4.icmp_ratemask (quais tipos são limitados)

Em firewalls configurados com DROP silencioso (em vez de REJECT), nenhuma ICMP é gerada, e o emissor fica esperando um timeout. É a chamada diferença entre "REJECT" (envia ICMP) e "DROP" (silêncio).

7. Inspeção com Ferramentas

Listar portas UDP em escuta:

$ ss -tulnp
Netid  State   Recv-Q Send-Q  Local Address:Port  Peer Address:Port
udp    UNCONN  0      0       0.0.0.0:53          0.0.0.0:*   users:(("named",pid=1234,fd=20))
udp    UNCONN  0      0       0.0.0.0:161         0.0.0.0:*   users:(("snmpd",pid=5678,fd=12))

Cada linha representa um socket escutando em uma Destination Port específica, pronto para receber datagramas.

8. Resumo Técnico

Atributo Valor
Tamanho 16 bits (2 octetos)
Posição Bytes 2-3 do cabeçalho UDP
Faixa 0 a 65535
Obrigatório? Sim (deve apontar para um serviço válido)
Atribuição no servidor Estática (well-known ou registrada)
Atribuição no cliente Reaproveitada da Source Port original do cliente
Endianness Big-endian (network byte order)
RFC de referência RFC 768 (1980), RFC 6335 (2011)

9. Conclusão

O campo Destination Port é o coração da desmultiplexação em UDP: ele converte um mero endereçamento de máquina (IP) em endereçamento de processo. Sem ele, o IP entregaria pacotes a um host, mas ninguém saberia o que fazer com eles. Compreender a hierarquia IANA (well-known, registered, dynamic), o mecanismo de Port Unreachable, o papel do NAT/Port Forwarding e as ferramentas de inspeção é fundamental para diagnosticar falhas em serviços de rede baseados em UDP.