Допустим, клиент C хочет отправить HTTP-запрос на сервер S, но через прокси-сервер P.
Насколько я понимаю, это делается только с помощью двух следующих модификаций простого HTTP-запроса:
Клиент отправляет обычное HTTP-сообщение, просто с полным URL-адресом (в первой строке HTTP-сообщения), а не относительным, и добавляет заголовки для прокси-сервера, если это необходимо. Прокси обрабатывает и удаляет прокси-специфичные заголовки. Это операция прикладного уровня.
Это сообщение отправляется на адрес TCP/IP прокси, а не на адрес сервера. Прокси-сервер выполняет запрос к TCP/IP-адресу сервера (который находится в первой строке HTTP-сообщения). Это операция уровней TCP/IP.
Поэтому я бы сказал, что проксирование выполняется на уровнях IP, TCP и приложений.
Это правильно?