HTTP-туннель

Связывает два компьютера с сетевым ограничением

HTTP-туннелирование используется для создания сетевого соединения между двумя компьютерами в условиях ограниченного сетевого подключения, включая брандмауэры , NAT и ACL , среди прочих ограничений. Туннель создается посредником, называемым прокси-сервером , который обычно находится в DMZ .

Туннелирование также может обеспечить связь с использованием протокола , который обычно не поддерживается в ограниченной сети.

Метод HTTP-CONNECT

Наиболее распространенной формой HTTP-туннелирования является стандартизированный метод HTTP CONNECT . [1] [2] В этом механизме клиент просит HTTP-прокси-сервер переслать TCP- соединение в желаемое место назначения. Затем сервер приступает к установлению соединения от имени клиента. После того, как соединение установлено сервером, прокси-сервер продолжает проксировать TCP-поток к клиенту и от него. Только начальный запрос на соединение является HTTP — после этого сервер просто проксирует установленное TCP-соединение.

Этот механизм позволяет клиенту за HTTP-прокси получать доступ к веб-сайтам с помощью SSL или TLS (т. е. HTTPS). Прокси-серверы также могут ограничивать соединения, разрешая соединения только с портом HTTPS по умолчанию 443, внося хосты в белый список или блокируя трафик, который не выглядит как SSL.

Пример переговоров

Клиент подключается к прокси-серверу и запрашивает туннелирование, указывая порт и хост-компьютер, к которому он хотел бы подключиться. Порт используется для указания запрашиваемого протокола. [3]

ПОДКЛЮЧИТЬ  streamline.t-mobile.com:22  HTTP / 1.1 Прокси-авторизация :  Базовые закодированные учетные данные

Если соединение было разрешено и прокси-сервер подключился к указанному хосту, то прокси-сервер вернет ответ об успешном подключении 2XX. [3]

HTTP / 1.1  200  ОК

Теперь клиент проксируется на удаленный хост. Все данные, отправленные на прокси-сервер, теперь пересылаются, без изменений, на удаленный хост [3], и клиент может общаться, используя любой протокол, принятый удаленным хостом. В примере ниже клиент начинает SSH-коммуникации, на что указывает номер порта в начальном запросе CONNECT.

SSH-2.0-OpenSSH_4.3\r\n...

HTTP-туннелирование без использования CONNECT

HTTP-туннель также может быть реализован с использованием только обычных HTTP-методов, таких как POST, GET, PUT и DELETE. Это похоже на подход, используемый в Bidirectional-streams Over Synchronous HTTP ( BOSH ).

Специальный HTTP-сервер работает вне защищенной сети, а клиентская программа запускается на компьютере внутри защищенной сети. Всякий раз, когда от клиента передается сетевой трафик, клиент переупаковывает данные трафика в HTTP-запрос и передает данные на внешний сервер, который извлекает и выполняет исходный сетевой запрос для клиента. Ответ на запрос, отправленный на сервер, затем переупаковывается в HTTP-ответ и передается обратно клиенту. Поскольку весь трафик инкапсулируется внутри обычных запросов и ответов GET и POST, этот подход работает через большинство прокси-серверов и брандмауэров. [a]

Смотрите также

Примечания

  1. ^ "Мост: Динамический переадресатор портов через HTTP (с поддержкой HTTP PROXY)". GitHub .

Ссылки

  1. ^ Филдинг, Р. (июнь 1999 г.). «Определения методов, CONNECT». Протокол передачи гипертекста — HTTP/1.1. IETF . стр. 56. раздел 9.9. doi : 10.17487/RFC2616 . RFC 2616. Получено 16 января 2025 г.
  2. ^ Khare, R.; Lawrence, S. (май 2000 г.). Протокол передачи гипертекста — HTTP/1.1. IETF . doi : 10.17487/RFC2817 . RFC 2817 . Получено 16 января 2025 г. .
  3. ^ abc Fielding, R.; Reschke, J. (июнь 2014 г.). "CONNECT". HTTP/1.1 Semantics and Content. IETF . стр. 30. раздел 4.3.6. doi : 10.17487/RFC7231 . RFC 7231. Получено 16 января 2025 г.
Взято с "https://en.wikipedia.org/w/index.php?title=HTTP_tunnel&oldid=1269780049"