A maioria dos roteadores domésticos usa um caso especial de NAT chamado PAT.
Você também verá isso 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 da sua máquina interna, o endereço de origem é reescrito como você está ciente. A porta de origem também é alterada, geralmente para um número alto, e o roteador mantém uma tabela de conversão de endereços.
Por exemplo, digamos que você tenha uma máquina cliente que vá 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 a partir do seu endereço IP interno, usando uma porta de origem aleatória.
Para o seu computador, a conexão é assim:
192.168.1.100:37641 <--> 72.14.204.147:80
Seu computador envia o pacote para o roteador, que escolhe uma nova porta alta aleatória e reescreve o pacote. Cada conexão de saída recebe sua própria porta no roteador. O roteador encaminha o pacote para o seu provedor depois de adicioná-lo à sua tabela de conexão:
PrivateIP PrivatePort PublicIP PublicPort Remote RemotePort
------------- ---------- ----------- ----------- ---------- -----------
192.168.1.100 37641 *10.6.23.5 59273 72.14.204.147 80
* Por exemplo, usei um endereço começando com 10, mas eles não são publicamente roteáveis. A tabela também é um pouco simplificada.
Para o google, a conexão é assim:
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 procura essas informações na tabela e encaminha o pacote para 192.168.1.100:37641.