Portas TCP/IP

Portas são muito usadas para determinar quais aplicações podem rodar em um dispositivo na rede e quais não podem. Sem elas, qualquer aplicação poderia rodar, criando uma enorme brecha de segurança para códigos maliciosos. Com as portas, um firewall pode ser usado para bloquear todas as portas, exceto aquelas que rodam serviços realmente necessários para o dispositivo. Tomemos como exemplo um servidor: ele pode bloquear o acesso a todas as portas, exceto portas como a do HTTP, SSH, SMTP e HTTPS. Não é possível rodar mais de uma aplicação ao mesmo tempo em uma porta.

Uma porta é um número de 16 bits. Assim, ela pode ser representada por 2^16 valores diferentes. Os valores representados vão de 0 a 65535. Isso vale tanto pro TCP como pro UDP. As portas podem ser classificadas de acordo com a faixa de valores na qual elas se encontram:

Portas bem-conhecidas
Vão de 0 a 1023. São alocadas para serviços de servidor pela IANA. Exemplo: a porta 80 é usada para HTTP, enquanto a porta 53 é usada pelo DNS.
Portas registradas
Vão de 1024 a 49151. Essas portas podem ser registradas para serviços ou aplicações pela IANA. Exemplos: protocolo de chat usado pelos jogos da Blizzard (1119) e a porta usada pelo jogo Civilization IV (2033). Programas que não tem autorização da IANA não devem usar essas portas.
Portas dinâmicas, privadas ou efêmeras
Vão de 49152-65535. São portas que você pode usar para a sua aplicação, se você não tiver autorização da IANA para usar as portas registradas.

Existem muitas portas bem-conhecidas e registradas. Porém, é claro que você não precisa saber todas. Você precisa apenas conhecer as mais importantes, aquelas que são mais comuns no desenvolvimento web:

  • HTTP: Porta 80
  • HTTPS: Porta 443
  • SSH: Porta 22
  • SMTP: Porta 25
  • SMTPS: Porta 465
  • SMTP TLS: Porta 587
  • FTP: Porta 21 (porta de comandos)
  • FTPS: Porta 989/990
  • POP3: Porta 110
  • IMAP: Porta 143
  • Telnet: Porta 23
  • DNS: Porta 53

Você pode especificar a porta em uma URL seguindo essa sintaxe: scheme://host:port/path. Exemplo: http://localhost.project.com:8080/movies. Note que a porta 8080 é uma porta registrada, e você pode pensar que ela não deveria ser usada nesse caso por ser uma aplicação criada pelo usuário. Porém, a IANA concedeu acesso a essa porta como alternativa à porta padrão do HTTP (80) de forma oficial.