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
.