02 - Portas (0 a 65535)
video: https://youtu.be/... no frontmatter da nota.Portas TCP/UDP (0 a 65535)
As Portas são os identificadores numéricos de 16 bits utilizados pela Camada de Transporte para diferenciar múltiplos processos (aplicações) que estão sendo executados em um mesmo host. Enquanto o endereço IP identifica "qual computador" é o destino, a porta identifica "qual aplicação" dentro desse computador deve receber os dados.
Como o campo de porta tem 16 bits, o intervalo de valores possíveis varia de 0 a 65.535. Essa faixa de números é um recurso globalmente compartilhado, mas gerenciado localmente por cada sistema operacional, permitindo que milhares de serviços e conexões coexistam simultaneamente sem conflito.
1. A Estrutura de 16 Bits
A decisão de usar 16 bits para as portas define um limite matemático e técnico para a quantidade de "portas de entrada" simultâneas que um computador pode teoricamente ter.
- Capacidade:
2^16 = 65.536possibilidades (de 0 a 65.535). - Representação Binária: Vai de
0000000000000000a1111111111111111. - Cabeçalho TCP/UDP: Tanto no TCP quanto no UDP, o cabeçalho possui dois campos de 16 bits dedicados a portas: Source Port (Porta de Origem) e Destination Port (Porta de Destino), totalizando 32 bits de endereçamento de processo.
Onde Ficam no Cabeçalho TCP
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 | (16 bits cada)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Acknowledgment Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data | |U|A|P|R|S|F| |
| Offset| Reserved |R|C|S|S|Y|I| Window |
| | |G|K|H|T|N|N| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
2. Classificação das Portas (Faixas IANA)
Para organizar o uso desses 65.536 números e evitar conflitos onde diferentes softwares tentam usar o mesmo número, a IANA (Internet Assigned Numbers Authority) definiu três faixas principais, formalizadas na RFC 6056 e no registro IANA Port Numbers.
A. Portas Bem Conhecidas (Well-Known Ports): 0 a 1.023
Esta faixa é reservada para os serviços de sistema mais comuns e protocolos padrão da Internet.
- Característica: São universalmente reconhecidas. Se você vê um pacote com destino à porta 80, qualquer dispositivo na rede sabe que provavelmente é tráfego Web (HTTP).
- Restrição de Acesso: Em sistemas operacionais como Unix/Linux e Windows, apenas processos rodando com privilégios de administrador (root ou SYSTEM) podem se "ligar" (bind) a essas portas. Isso impede que usuários comuns executem malwares que se disfarcem de serviços críticos (como um DNS falso na porta 53).
| Porta | Protocolo | Descrição |
|---|---|---|
| 20 | TCP | FTP Data |
| 21 | TCP | FTP Control |
| 22 | TCP | SSH |
| 23 | TCP | Telnet |
| 25 | TCP | SMTP |
| 53 | TCP/UDP | DNS |
| 67 | UDP | DHCP Server |
| 68 | UDP | DHCP Client |
| 69 | UDP | TFTP |
| 80 | TCP | HTTP |
| 110 | TCP | POP3 |
| 123 | UDP | NTP |
| 143 | TCP | IMAP |
| 161 | UDP | SNMP |
| 389 | TCP/UDP | LDAP |
| 443 | TCP | HTTPS |
| 465 | TCP | SMTPS |
| 636 | TCP | LDAPS |
| 993 | TCP | IMAPS |
| 995 | TCP | POP3S |
B. Portas Registradas (Registered Ports): 1.024 a 49.151
Esta faixa é usada por processos de usuário ou aplicações comerciais específicas que não fazem parte dos serviços "fundamentais" da Internet, mas que são padrões de mercado.
- Característica: Vendors de software (Oracle, Microsoft, Valve) registram suas portas junto à IANA para evitar conflitos com outros softwares.
- Acesso: Geralmente, qualquer usuário pode se ligar a essas portas, mas é considerado má ética usar uma porta registrada por outro software.
| Porta | Protocolo | Descrição |
|---|---|---|
| 1433 | TCP | Microsoft SQL Server |
| 1521 | TCP | Oracle DB |
| 1723 | TCP | PPTP VPN |
| 3306 | TCP | MySQL / MariaDB |
| 3389 | TCP | RDP (Microsoft) |
| 5432 | TCP | PostgreSQL |
| 5900 | TCP | VNC |
| 6379 | TCP | Redis |
| 8080 | TCP | HTTP Alt (proxy/Tomcat) |
| 8443 | TCP | HTTPS Alt |
| 9042 | TCP | Cassandra |
| 9200 | TCP | Elasticsearch |
| 11211 | TCP | Memcached |
| 27017 | TCP | MongoDB |
| 27015 | UDP | Steam (jogos) |
| 25565 | TCP | Minecraft |
C. Portas Dinâmicas e/ou Privadas (Dynamic/Private Ports): 49.152 a 65.535
Também conhecidas como portas efêmeras (ephemeral ports).
- Característica: Esta faixa é reservada para uso temporário pelo cliente.
- Função: Quando você abre o navegador e acessa um site, seu computador precisa de uma porta de origem para receber a resposta. O sistema operacional escolhe aleatoriamente um número nesta faixa alta para essa conexão específica.
- Ciclo de Vida Curta: A porta é atribuída automaticamente pelo kernel no momento da conexão e liberada quando a conexão termina. Não há registros permanentes aqui.
A faixa exata de portas efêmeras varia por sistema operacional conforme tabela abaixo:
| Sistema Operacional | Faixa Efêmera Default |
|---|---|
| Linux (kernel 5.x) | 32.768 a 60.999 |
| Windows 10/11 | 49.152 a 65.535 |
| macOS | 49.152 a 65.535 |
| FreeBSD | 10.000 a 65.553 |
# Ver faixa efêmera no Linux
cat /proc/sys/net/ipv4/ip_local_port_range
# 32768 60999
# Alterar faixa efêmera temporariamente
echo "10000 65535" > /proc/sys/net/ipv4/ip_local_port_range
3. O Papel da Porta na Comunicação
As portas desempenham papéis diferentes dependendo de estarem no lado de origem ou destino:
- Porta de Destino (Destination Port): Sempre é um número fixo e conhecido (geralmente nas faixas Bem Conhecida ou Registrada) que identifica o serviço que o cliente quer acessar. Ex: Sempre 443 para HTTPS.
- Porta de Origem (Source Port): Geralmente é um número aleatório alto (na faixa Efêmera) que identifica o processo cliente específico que iniciou a requisição. Isso permite que o servidor saiba para quem enviar a resposta de volta.
Exemplo Prático de Conexão
Cliente 192.168.1.50:52431 → Servidor 93.184.216.34:443
- O cliente na porta efêmera 52431 (atribuída automaticamente) faz uma requisição HTTPS ao servidor example.com na porta 443.
- O servidor responde do par
(93.184.216.34, 443)para o cliente(192.168.1.50, 52431).
4. Conceito de "Listening" vs. "Connected"
É crucial entender que uma porta pode ter dois estados distintos em um host:
- Listening (Escutando): Uma porta está em estado de listening quando um servidor (como o Apache ou Nginx) iniciou e aguardou passivamente por conexões. O servidor "amarrou" (bound) a porta 80 e disse ao SO: "Qualquer pacote que chegar para a porta 80, me entregue". Apenas um processo pode estar em listening em uma porta específica por protocolo (TCP ou UDP) por vez.
- Connected (Conectado): Quando uma conexão é estabelecida (TCP), a porta é considerada "conectada" ou "alocada". Um único servidor na porta 80 pode ter milhares de conexões simultâneas, mas o que as distingue é a tupla completa (IP Remoto + Porta Remota + IP Local + Porta Local). O servidor usa a mesma porta local (80) para todos, mas conversa com milhares de portas remotas diferentes.
# Visualizar portas em listening
ss -tlnp # TCP listening com processo
ss -ulnp # UDP listening
# Visualizar conexões estabelecidas
ss -tn state established
5. A Tupla de 5 Elementos
Uma conexão TCP/UDP é identificada unicamente pela combinação de 5 valores:
- Protocolo (TCP ou UDP)
- IP de Origem
- Porta de Origem
- IP de Destino
- Porta de Destino
Isso significa que teoricamente um único servidor na porta 443 pode manter 2^32 × 2^16 = 281 trilhões de conexões TCP simultâneas (limitado na prática por memória e CPU, não por portas). O conceito de "esgotamento de portas" se refere geralmente ao lado cliente, que tem ~28 mil portas efêmeras disponíveis para conexões de saída.
6. Exceções e Casos Especiais
- Porta 0: Tecnicamente válida no campo de 16 bits, mas não utilizada para comunicações reais. Em alguns sistemas operacionais, ao pedir uma porta efêmera dinâmica, se um pedido específico for feito à porta 0, o sistema operacional atribuirá automaticamente uma porta livre na faixa efêmera.
- Conflito de Protocolo: Um processo pode ouvir na porta 53 via TCP e outro processo pode ouvir na porta 53 via UDP simultaneamente, pois eles são protocolos de transporte diferentes. No entanto, dois processos não podem ouvir na porta 53 via TCP ao mesmo tempo (a menos que usem
SO_REUSEPORT). - NAT e Port Forwarding: Roteadores NAT (CGNAT) realizam tradução de portas para permitir que múltiplos dispositivos compartilhem um único IP público. Cada conexão de saída recebe uma porta efêmera única no lado público.
7. Conclusão
As portas de 0 a 65.535 são o mecanismo de endereçamento que torna possível a multitarefa na rede, permitindo que um único dispositivo realize a função de servidor web, cliente de e-mail, jogador online e cliente de bate-papo tudo ao mesmo tempo, sem confundir os dados de cada aplicação. A divisão em três faixas (Well-Known, Registered e Dynamic) mantida pela IANA garante organização global e interoperabilidade entre sistemas.
| Atributo | Valor |
|---|---|
| Tamanho do campo | 16 bits |
| Intervalo | 0 a 65.535 |
| Well-Known (IANA) | 0 a 1.023 |
| Registered (IANA) | 1.024 a 49.151 |
| Dynamic/Private (IANA) | 49.152 a 65.535 |
| RFC de referência | RFC 6056, RFC 760 |
| Privilegio para bind em 0-1023 | root / Administrator |