Skip to content

Instantly share code, notes, and snippets.

@Scemist
Created December 21, 2021 16:44
Show Gist options
  • Save Scemist/3e80039e5623cac49463be8f3c566983 to your computer and use it in GitHub Desktop.
Save Scemist/3e80039e5623cac49463be8f3c566983 to your computer and use it in GitHub Desktop.
Roteamento

A maioria dos roteadores domésticos usa um caso especial de NAT chamado PAT.

Você também o verá referido como NAPT ou IP Masquerading. Todos os três últimos termos significam a mesma coisa no uso geral. (As siglas - Tradução de endereço de rede / Tradução de endereço de porta / Tradução de porta de endereço de rede)

Quando o pacote sai de sua máquina interna, o endereço de origem é reescrito conforme você sabe. A porta de origem também é alterada, geralmente para um número alto, e o roteador mantém uma tabela de tradução de endereços.

Por exemplo, digamos que você tenha uma máquina cliente que vai para www.google.com. Seu computador (por exemplo, 192.168.1.100) procura esse endereço e faz uma conexão TCP para 72.14.204.147 na porta 80 do seu endereço IP interno, usando uma porta de origem aleatória.

Para o seu computador, a conexão é parecida com esta:

192.168.1.100:37641 <--> 72.14.204.147:80

O computador envia o pacote ao roteador, que escolhe uma nova porta alta aleatória e reescreve o pacote. Cada conexão de saída obtém sua própria porta no roteador. O roteador então encaminha o pacote para seu ISP após adicioná-lo à sua tabela de conexão:

Private Public Remote
IP 192.168.1.100 10.6.23.5 72.14.204.147
Port 37641 59273 80
PrivatePort PublicPort RemotePort

(A tabela é um tanto simplificada.)

Para o Google, a conexão é parecida com esta:

10.6.23.5:59273 <--> 72.14.204.147:80

O Google enviará sua resposta para 10.6.23.5 na porta 59273. Seu roteador, então, procura essas informações na tabela e encaminha o pacote para 192.168.1.100:37641.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment