Większość routerów domowych korzysta ze specjalnego przypadku NAT o nazwie PAT.
Zobaczysz go również jako NAPT lub maskowanie IP. Wszystkie trzy ostatnie terminy oznaczają to samo w powszechnym użyciu. (Akronimy - tłumaczenie adresu sieciowego / tłumaczenie adresu portu / tłumaczenie adresu sieciowego)
Gdy pakiet wychodzi z komputera wewnętrznego, adres źródłowy jest przepisywany, jak wiadomo. Port źródłowy jest również zmieniany, zwykle na dużą liczbę, a router utrzymuje tablicę translacji adresów.
Załóżmy na przykład, że masz komputer kliencki, który przechodzi na stronę www.google.com. Twój komputer (np. 192.168.1.100) wyszukuje ten adres i nawiązuje połączenie TCP z 72.14.204.147 na porcie 80 z twojego wewnętrznego adresu IP, używając losowego portu źródłowego.
Połączenie z komputerem wygląda następująco:
192.168.1.100:37641 <--> 72.14.204.147:80
Komputer wysyła pakiet do routera, który wybiera nowy losowo wysoki port i przepisuje pakiet. Każde połączenie wychodzące ma swój własny port na routerze. Router przekazuje następnie pakiet do twojego dostawcy usług internetowych po dodaniu go do tabeli połączeń:
PrivateIP PrivatePort PublicIP PublicPort Remote RemotePort
------------- ---------- ----------- ----------- ---------- -----------
192.168.1.100 37641 *10.6.23.5 59273 72.14.204.147 80
* Na przykład użyłem adresu zaczynającego się od 10, ale nie można ich publicznie routować. Tabela jest również nieco uproszczona.
W przypadku Google połączenie wygląda następująco:
10.6.23.5:59273 <--> 72.14.204.147:80
Google wyśle odpowiedź do 10.6.23.5 na porcie 59273. Router następnie wyszukuje te informacje w tabeli i przekazuje pakiet do 192.168.1.100:37641.
www.google.com
by mnie znalazł, gdybym nie wysłał pierwszej prośby. Innymi słowy, wiadomości mogą docierać do mnie przez router tylko wtedy, gdy początkowo wysłałem żądanie przez router