Я думаю, что это о методе "CONNECT" HTTP.
В этом механизме клиент просит прокси-сервер HTTP переслать TCP-соединение в желаемое место назначения. Затем сервер переходит к установлению соединения от имени клиента. Как только соединение установлено сервером, прокси-сервер продолжает прокси-поток TCP-потока к клиенту и от него. Обратите внимание, что только первоначальный запрос на соединение является HTTP - после этого сервер просто проксирует установленное TCP-соединение.
Последнее предложение является ключевым. Вы просите proxy1
прокси-соединение с proxy2
. Затем все, что следует, переходит к proxy2
через proxy1
который больше не интерпретирует, поэтому вы просите прокси к proxy3
и этот запрос перехватывается и интерпретируется proxy2
. Следующий запрос CONNECT (для прокси-сервера на proxy4
) пройдет через proxy1
и proxy2
, он будет интерпретирован proxy3
- и так далее. Каждый прокси в цепочке интерпретирует ровно один запрос CONNECT.
После того, как все прокси были правильно настроены с цепочкой начальных пакетов, все, что использует двустороннее TCP-соединение, может быть пропущено через туннель CONNECT.
Остерегайтесь этого
Не все прокси-серверы HTTP поддерживают эту функцию, и даже те, которые поддерживают, могут ограничивать поведение.
Последнее замечание: во время экспериментов у вас могут возникнуть проблемы с цепочкой прокси-серверов, если программа, которую вы запускаете, использует GET вместо CONNECT. GET не позволяет цепочки, это покрыто здесь. Ваша путаница с цепочкой прокси может быть вызвана тем, что вы более знакомы (т.е. вы думаете с точки зрения) механизма GET.