Більшість домашніх маршрутизаторів використовують спеціальний корпус NAT під назвою PAT.
Ви також побачите це як NAPT або IP маскування. Усі три останні терміни означають одне і те ж у загальному користуванні. (Скорочення - Переклад мережевих адрес / Переклад адрес порта / Переклад портів мережевих адрес)
Коли пакет виходить з вашої внутрішньої машини, адреса джерела буде переписана, як вам відомо. Порт джерела також змінюється, як правило, на велику кількість, і маршрутизатор зберігає таблицю перекладу адрес.
Наприклад, скажімо, у вас є клієнтська машина, яка переходить на www.google.com. Ваш комп'ютер (наприклад, 192.168.1.100) шукає цю адресу і здійснює з'єднання TCP до 72.14.204.147 на порту 80 з вашої внутрішньої IP-адреси, використовуючи випадковий вихідний порт.
Підключення до комп'ютера виглядає так:
192.168.1.100:37641 <--> 72.14.204.147:80
Ваш комп'ютер посилає пакет до маршрутизатора, який вибирає новий випадковий високий порт і переписує пакет. Кожне вихідне з'єднання отримує власний порт на маршрутизаторі. Потім маршрутизатор пересилає пакет у свій Інтернет-провайдер після додавання його до таблиці зв’язку:
PrivateIP PrivatePort PublicIP PublicPort Remote RemotePort
------------- ---------- ----------- ----------- ---------- -----------
192.168.1.100 37641 *10.6.23.5 59273 72.14.204.147 80
* Для прикладу, я використовував адресу, починаючи з 10, але вони не є загальнодоступними. Таблиця також дещо спрощена.
Для google з'єднання виглядає так:
10.6.23.5:59273 <--> 72.14.204.147:80
Google надішле відповідь на 10.6.23.5 на порт 59273. Потім ваш маршрутизатор шукає цю інформацію в таблиці та пересилає пакет на 192.168.1.100:37641.
www.google.com
би мене знайти, якби я не надіслав йому початковий запит. Іншими словами, повідомлення можуть надходити до мене лише через маршрутизатор, якщо я спочатку надіслав запит через маршрутизатор