Чем HTTP-прокси отличается от NAT?
Хост в локальной сети с IP (10.0.0.1 TCP-порт 8888) подключается к серверу, не зная, что на границе сети есть поле NAT. Поле NAT не используется и просто переводит порт 8888 в какой-то другой порт 5555 и изменяет IP-адрес на общедоступный IP-адрес (скажем, 205.209.96.96) и сохраняет в словаре пару ключ-значение: (5555,10.0.0.1:8888),
Получив ответ, он выполняет обратную трансляцию и пересылает пакет обратно на хост. Чем отличается работа HTTP-прокси от этой? Я понимаю, что прокси-сервер может выполнять другие функции, такие как фильтрация, кэширование и т. Д., Но чем отличается базовая работа прокси-сервера от блока NAT?
3 ответа
HTTP прокси не будет работать ни для чего, кроме HTTP.
Он не будет работать для соединений OpenVPN, он не будет работать для трафика P2P, многопользовательских 3D-игр и т. Д.
NAT хорош для всех видов TCP трафика. Многие из них также обрабатывают UDP и ICMP (ограниченным образом, поскольку ICMP не имеет портов).
NAT работает на более низком уровне протокола - он только переписывает IP-адрес и порт; в противном случае он не нарушает соединение TCP (и, таким образом, он в основном прозрачен для протоколов более высокого уровня).
HTTP-прокси делает что-то совсем другое: сначала TCP-соединение заканчивается там, и он открывает совершенно другое соединение с целевым хостом. Во-вторых, он выполняет собственную обработку и преобразования HTTP-запросов и ответов.
Они во многом похожи, они оба являются Вратами. HTTP-прокси работает на уровне HTTP-запроса. Маршрутизатор, выполняющий NAT, работает на уровне соединения TCP/IP. Многие сетевые маршрутизаторы также выполняют обе функции.