темный логотип proxyscrape

TCP Proxy как обратный прокси и балансировщик нагрузки

Путеводители, Май-06-20225 минут чтения

A transport control protocol (TCP) proxy operates at the TCP layer of the Open System Interconnection (OSI) model. The TCP proxy server is an intermediate proxy between the client and the destination server.  The client establishes a connection with the TCP proxy server, which in turn establishes a connection with the destination server. The TCP

Прокси-сервер протокола управления транспортом (TCP) работает на уровне TCP в модели Open System Interconnection (OSI). Прокси-сервер TCP является промежуточным прокси между клиентом и сервером назначения. 

Клиент устанавливает соединение с TCP-прокси-сервером, который, в свою очередь, устанавливает соединение с сервером назначения. Прокси-сервер TCP выступает в роли и сервера, и клиента для доступа к службам, ограничивающим соединения на основе сетевого адреса.

Некоторые веб-страницы доступны только с внутренних машин, и при обращении к ним из других мест вы получаете сообщение об ошибке "Доступ запрещен". Однако вы можете просматривать эту страницу через веб-браузер в любой точке Интернета, используя прокси-сервер на одной из внутренних машин.

Веб-сервер считает, что он обслуживает данные клиента на машине, на которой установлен прокси. Однако прокси пересылает данные по сети реальному клиенту. 

Прокси-сервер принимает соединения от нескольких клиентов и пересылает их с помощью нескольких соединений на сервер. Клиент или сервер должны читать или записывать данные на своих соединениях и не должны вешать прокси-сервер, отказывая ему в выполнении каких-либо операций.

Модель OSI - предварительный обзор

Модели OSI концептуализируют процесс создания компьютерных сетей. Она состоит из семи уровней:

  • Физический уровень
  • Уровень канала передачи данных
  • Сетевой уровень
  • Транспортный уровень
  • Сеансовый уровень
  • Уровень представления
  • Прикладной уровень

Транспортный уровень отвечает за передачу данных по сети. На нем используются два различных протокола - TCP и User Datagram Protocol (UDP). TCP обычно используется для передачи данных, и этот протокол определяет, как отправлять данные. Он разбивает сообщение на сегменты, а затем отправляет их от источника к месту назначения.

Разъемное соединение

В обычных условиях есть отправитель и получатель, передающие порции данных. Отправитель и получатель одновременно находятся на разных машинах, поэтому прокси устанавливает сокетное соединение между отправителем и получателем, участвующими в обмене данными.

Сокет - это логическое соединение между двумя сторонами, использующее IP и номер порта. Прокси устанавливает сокетное соединение на стороне отправителя и получателя. Адрес сокета, состоящий из IP-адреса и номера порта, уникален для связи между отправителем и получателем.

Уникальный адрес сокета гарантирует, что передача данных происходит параллельно и пакеты не сталкиваются друг с другом.

Реализация прокси на уровне TCP

TCP-прокси получает входящий трафик и открывает исходящий сокет, через который передает входящий трафик на сервер назначения. Он перемещает данные между клиентом и сервером, но не может изменить какие-либо данные, поскольку не понимает их.

Прокси на этом уровне имеет доступ к IP-адресу и номеру порта, к которому приемник пытается подключиться на внутреннем сервере. Если сервер использует порт 3306 для прослушивания запросов, то прокси реализует его на этом уровне и также прослушивает этот порт. 

Прокси прослушивает этот порт и передает сообщения на сервер. TCP-прокси создает соединение через сокет с одной комбинацией хост: порт.

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

Прокси-серверы служат для передачи сообщений туда и обратно и не могут их читать. Эти прокси помогают контролировать сеть, скрывать внутреннюю сеть от публичной, ставить соединения в очередь, чтобы предотвратить перегрузку сервера, и ограничивать соединения. Это лучшее решение для балансировки нагрузки на сервисы, обменивающиеся данными по TCP, такие как трафик баз данных MYSQL и Postgres.

TCP-прокси в качестве обратного прокси

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

Обратный прокси виден другим пользователям сети. Он устанавливается на границе сети сайта и принимает запросы от веб-браузеров и мобильных приложений. 

Реализация TCP-прокси в качестве обратного прокси имеет следующие преимущества:

Безопасность - Повышает безопасность сети. Вредоносные клиенты не могут получить доступ к внутренним серверам, поскольку они не видны во внешней сети. Они не могут получить к ним прямой доступ, чтобы использовать уязвимости.

Предотвращение DDOS-атак - Внутренние серверы защищены обратным прокси, что позволяет защитить их от распределенного отказа в обслуживании (DDOS).

Регулирование трафика - может отклонять трафик с определенного IP-адреса клиента (черный список) или ограничивать количество подключений от клиента.

Масштабируемость и гибкость - можно гибко менять конфигурацию бэкэнда, поскольку клиент видит только адрес обратного прокси. Чтобы сбалансировать нагрузку на сервер, вы можете увеличивать или уменьшать количество серверов в соответствии с изменяющимся объемом трафика.

Веб-ускорение - сокращает время, затрачиваемое на генерацию ответа для запрашивающего клиента. 

Сжатие - TCP-прокси отвечает, прежде чем вернуться к клиенту, уменьшая пропускную способность, необходимую для передачи данных по сети.

Шифрование - трафик между клиентом и сервером в сети требует шифрования. Процесс шифрования накладывает нагрузку на клиента и сервер, поскольку требует больших вычислительных затрат. Обратный прокси выполняет шифрование и дешифрование, тем самым освобождая внутренние серверы, чтобы они могли заниматься только обслуживанием клиентов.

Кэширование - обратный прокси хранит копию запроса в своей локальной системе, прежде чем передать его клиенту. Обратный прокси обслуживает запрос из кэша вместо того, чтобы пересылать запрос на сервер и получать его, когда клиент запрашивает его снова. 

TCP-прокси в качестве балансировщика нагрузки

Балансировщик нагрузки - это прокси-сервер, который управляет трафиком при наличии нескольких серверов. Он позволяет серверу работать эффективно и масштабировать его при высоком трафике. Балансировщик нагрузки распределяет трафик между серверами и направляет оригинальные соединения непосредственно от клиентов к здоровому внутреннему серверу без перебоев.

TCP-прокси использует прямое возвращение сервера, чтобы передавать ответы от здоровых внутренних серверов клиентам напрямую, а не через балансировщики нагрузки. Внутренний сервер завершает трафик защищенного уровня сокетов (SSL), а не балансировщик нагрузки. 

Сродство с сессией

TCP-трафик между клиентом и сервером поддерживает сродство сессий. Сродство сессии - это когда клиент может отправлять запросы на один и тот же внутренний сервер, пока он здоров и дееспособен. 

Серверы мониторинга

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

TCP-прокси обладает следующими характеристиками, когда выступает в роли балансировщика нагрузки:

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

Поддержка других протоколов - TCP-прокси поддерживает HTTP, а также другие протоколы прикладного уровня, такие как FTP.

Действие в качестве обратного прокси - пользователь может использовать TCP-прокси в качестве обратного прокси, исходя из места внедрения. На стороне сервера он регулирует трафик от клиента к пользователю. 

Опция масштабирования окна

Окно приема TCP - это объем данных, который приемник может обработать в байтах и который он может буферизировать во время соединения. Приемник должен обновить размер окна перед началом соединения и дождаться подтверждения. 

Отправитель посылает данные в зависимости от размера окна. Конструкция стека Windows TCP/IP подстраивается под изменяющийся размер данных и использует больший размер окна. Каждый раз, когда отправитель передает данные, он использует размер окна, больший, чем тот, который использовался при предыдущей передаче.

Размер окна не является фиксированным, поскольку вы можете изменить его размер, настроив максимальный размер сегмента (MSS). Клиент и сервер согласовывают MSS во время установки соединения. Настройка окна приема на величину, равную MSS, увеличивает процент полноразмерных сегментов TCP, используемых при передаче больших объемов данных.

Размер окна приема определяется следующим образом:

  1. Клиент отправляет первый запрос на соединение с сервером, объявляя размер окна приема 16K (16 384 байта).
  2. Когда соединение установлено, клиент настраивает размер окна приема на основе MSS.
  3. Размер окна устанавливается в четыре раза больше MSS, до максимального размера 64 K, если не используется опция масштабирования окна.

Часто задаваемые вопросы

1. Чем обратный прокси отличается от прокси с балансировкой нагрузки?

Обратный прокси-серверПрокси-сервер для балансировки нагрузки
Обратный прокси - это приложение-посредник, которое устанавливается между клиентом и сервером.Прокси-сервер с функцией балансировки нагрузки равномерно и эффективно распределяет трафик между несколькими внутренними серверами.
Обратные прокси-серверы повышают безопасность веб-серверов, гарантируя, что клиенты не будут напрямую общаться с оригинальным сервером.Имеется несколько внутренних серверов, и в случае отключения сети или DDoS-атаки прокси-сервер для балансировки нагрузки помогает предотвратить остановку сайта, поскольку трафик может быть перенаправлен на альтернативный сервер.
The process: – The user makes an HTTP request. – The reverse proxy receives it. – The reverse proxy either allows or denies the user’s request. – If allowed, the reverse proxy forwards the request to the server. – If denied, the reverse proxy sends an error message to the client. – The server sends the corresponding reply to the reverse proxy.The reverse proxy forwards the server’s response to the client.The process:– The load balancer receives the client’s request.– The load balancer sends the request to a single server in the group of backend servers.– The selected server sends the response back to the load balancer.– The load balancer forwards the server’s response to the user.
Examples of some open-source reverse proxies areNGINXApache HTTP ServerApache Traffic ServerExamples of some load-balancing algorithms areHashRound RobinPower of Two Choices

2. Разница между HTTP-прокси и TCP-прокси.

HTTP-проксиTCP-прокси
В демилитаризованной зоне (DMZ) он используется в качестве балансировщика нагрузки или публичного IP-провайдера для защиты внутренних серверов.Он используется в качестве обратного прокси для TCP-соединения между клиентом и сервером.
Создает HTTP-запрос/ответ.Открывает соединение TCP-сокета и передает через него данные.
HTTP-прокси считывает адрес хоста и подключается к соответствующему узлу.TCP-прокси не изменяет данные, так как не может их понять.
Помимо HTTP, он может обслуживать HTTPS и FTP-запросы.Помимо TCP, он может обслуживать HTTP- и FTP-запросы.

Заключительные размышления

TCP-прокси действует как обратный прокси, а также как балансировщик нагрузки. Оба типа приложений находятся между клиентами и серверами, принимая запросы от первых и доставляя ответы от вторых.

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

Сбор данных - огромная задача, важная как для устоявшегося бизнеса, так и для стартапа. Это процесс, который требует изучения тенденций рынка, анализа конкурентов и предпочтений клиентов для принятия решений. 

ProxyScrape предлагает прокси премиум-класса, жилые прокси и выделенные прокси для сбора огромного количества данных с веб-сайтов. На выбор предлагается гибкая комбинация прокси-серверов, а также доступные цены. Следите за нашим блогом, чтобы узнать больше о новых прокси-серверах, их использовании и преимуществах, которые предлагает ProxyScrape .