На каком уровне TCP / IP работает веб-прокси и правильно ли я понимаю реализацию?

425
croraf

Допустим, клиент C хочет отправить HTTP-запрос на сервер S, но через прокси-сервер P.

Насколько я понимаю, это делается только с помощью двух следующих модификаций простого HTTP-запроса:

  1. Клиент отправляет обычное HTTP-сообщение, просто с полным URL-адресом (в первой строке HTTP-сообщения), а не относительным, и добавляет заголовки для прокси-сервера, если это необходимо. Прокси обрабатывает и удаляет прокси-специфичные заголовки. Это операция прикладного уровня.

  2. Это сообщение отправляется на адрес TCP / IP прокси, а не на адрес сервера. Прокси-сервер выполняет запрос к TCP / IP-адресу сервера (который находится в первой строке HTTP-сообщения). Это операция уровней TCP / IP.

Поэтому я бы сказал, что проксирование выполняется на уровнях IP, TCP и приложений.

Это правильно?

0
Я редактировал вопрос. croraf 6 лет назад 0
Хорошее редактирование. Ваш заголовок может привлечь к себе внимание, поскольку сам вопрос, похоже, не задает вопрос о том, * как * реализован прокси в стеке TCP / IP. (и я не рекомендую спрашивать только «как», так как это снова сделает ваш вопрос слишком широким.) Twisty Impersonator 6 лет назад 0
это было какое-то время, но это звучит правдоподобно ... Вы пишете "Это операция уровней TCP / IP". Это довольно бессмысленно, хотя. Вы говорите, что «проксирование выполняется на уровнях IP, TCP и приложений». Ну, HTTP-проксирование, да, я полагаю, что так, хотя прошло некоторое время. barlop 6 лет назад 0
A) кто-то может попытаться усложнить то, что вы говорите, с помощью i) прокси-сервера socks ii) прокси-сервера https, не говоря в первую очередь о том, правы ли вы в отношении того, о чем говорите. т.е. простой http прокси. (не ssl, нет носков), хотя я думаю, что это также будут IP, TCP и уровень приложений. Б) Вы должны настроить прокси с помощью, например, analogx или ccproxy, и использовать wireshark (анализатор пакетов) и точно видеть, что происходит. barlop 6 лет назад 0
Также вы связали конкретные протоколы с названием слоя. Итак, в эталонной схеме OSI это сетевой уровень, транспортный уровень, прикладной уровень. IP - это один протокол на сетевом уровне, но в сети может работать IPX. Также любая реальная вещь будет работать на более низких уровнях, таких как физический уровень и канальный уровень. Можно сказать, что одним конкретным протоколом часто является один конкретный уровень (возможно, с некоторыми исключениями, такими как ARP). Или, может быть, маршрутизатор cisco или многие другие, возможно, не затрагивают другие уровни ... но часто реальные вещи работают на других уровнях. barlop 6 лет назад 0
Итак, если пакет и я имею в виду пакет в общем смысле того, что отправляется, если пакет должен будет переместиться на другой компьютер, то что-то должно будет работать на физическом и канальном уровнях ... коммутатор будет работать на канальном уровне. И если вы будете отслеживать свой пакет, вы увидите изменение фрейма, канальный уровень. Но это будет от сетевого коммутатора. barlop 6 лет назад 0
@barlop Рассмотрим обычный HTTP-прокси. Компьютер OFC будет работать на физическом и канальном уровнях, но это не имеет отношения к работе прокси. Вопрос в том, какие операции на каких уровнях выполняют прокси-работу, а не (или в дополнение к) обычному HTTP. croraf 6 лет назад 0
@croraf хорошо, HTTP это не слой, это протокол на уровне. Я могу согласиться с вами, что мы можем исключить физический уровень и уровень канала передачи данных, так что остается только сетевой уровень, транспортный уровень, прикладной уровень. Очевидно, что прокси работает на сетевом уровне. Что же касается других уровней, ну, вы правильно упомянули, что он смотрит на заголовки HTTP, так ясно, что он работает на прикладном уровне. А что с транспортным уровнем, ну, может быть, это решает операционная система. прокси-программа будет сильно зависеть от вызовов операционной системы для сортировки транспортного уровня, и это barlop 6 лет назад 0
(КНТ) действительно будет рассматриваться как часть прокси-программы. потому что не существует специального имени, такого как «Transporter» для вещи, которая имеет дело с TCP. Кроме того, я думаю, возможно, если у вас есть что-то, работающее на нескольких слоях, то я не думаю, что терминология слоев не так уж полезна. Хотя сетевым инженерам полезно различать концентраторы, маршрутизаторы и коммутаторы! Я не уверен, насколько это полезно за пределами этого barlop 6 лет назад 0
Я не использовал термин HTTP в качестве слоя. Когда я говорил «обычный HTTP», я имел в виду запрос «HTTP через прокси», а не «обычный HTTP без прокси». Под транспортом я имел в виду, что при обращении к прокси он может использовать другой порт, чем порт, который прокси будет использовать для доступа к серверу? croraf 6 лет назад 0
@croraf Есть разница между HTTP и веб-прокси. Если вы имеете в виду «HTTP через прокси-сервер» и говорите «Обычный HTTP», когда спрашиваете о слоях, то это крайне неясно, потому что HTTP - это протокол на прикладном уровне. Я полагаю, что веб-прокси (обычно, по крайней мере) работает на трех уровнях, как вы сказали. Однако я могу вспомнить случай, когда веб-прокси будет работать только на уровне приложений. Так же, как некоторые брандмауэры прозрачны (т.е. не рассматриваются как прыжок). Точно так же веб-прокси может быть настроен как прозрачный, и он может просто изменить HTML. barlop 6 лет назад 1

0 ответов на вопрос