Название вопроса четко описывает себя
Самый простой ответ заключается в том, что переадресация портов (как в NAT) обычно прозрачна для клиента, тогда как прокси-сервер SOCKS (или HTTP) требует, чтобы клиент явно использовал протокол прокси.
Устройство NAT выполняет «преобразование адресов» (кортеж [порт TCP / UDP: IP-адрес] в другой кортеж), тогда как прокси прекращается (в терминах сети) уровень протокола, выполняет адаптацию (опять же в терминах сети) и перестраивает другое соединение к месту назначения.
Другими словами, NAT пытается быть настолько «прозрачным» для клиентского протокола, насколько это возможно, тогда как PROXY на самом деле представляет собой «два соединения, соединенных друг с другом» (одинаковые или разные протоколы на каждой стороне).
Я согласен с приведенными выше определениями, но добавлю, что NAT и прокси имеют совсем другое назначение. NAT - это просто маршрутизация: нет кеширования и настоящего «надзора» из-за отсутствия лучшего слова. Прокси устанавливаются для кеширования, мониторинга, формирования трафика. Они очень важны для контроля.
Таким образом, у NAT очень мало накладных расходов, но он не предлагает много вариантов, в то время как прокси-серверы имеют гораздо более высокие накладные расходы (иногда значительно выше), но позволяют большой контроль.