Proxy TCP como um proxy reverso e um balanceador de carga

Guias, maio-06-20225 minutos de leitura

Um proxy do protocolo de controlo de transporte (TCP) funciona no nível TCP do modelo Open System Interconnection (OSI). O servidor proxy TCP é um proxy intermédio entre o cliente e o servidor de destino. O cliente estabelece uma ligação com o servidor proxy TCP, que por sua vez estabelece uma ligação com o servidor de destino. O servidor proxy TCP

Um proxy do protocolo de controlo de transporte (TCP) funciona no nível TCP do modelo Open System Interconnection (OSI). O servidor proxy TCP é um proxy intermédio entre o cliente e o servidor de destino. 

O cliente estabelece uma ligação com o servidor proxy TCP, que por sua vez estabelece uma ligação com o servidor de destino. O servidor proxy TCP actua como servidor e cliente para aceder a serviços que restringem as ligações com base no endereço de rede.

Algumas páginas Web só podem ser acedidas a partir de máquinas internas e o utilizador recebe uma mensagem de erro de acesso negado quando as acede a partir de outro local. No entanto, pode ver esta página a partir de um navegador Web em qualquer parte da Internet, utilizando um proxy numa das máquinas internas.

O servidor Web pensa que está a servir os dados a um cliente na máquina que executa o proxy. No entanto, o proxy encaminha os dados para fora da rede para o cliente real. 

O servidor proxy aceita ligações de vários clientes e reencaminha-as utilizando várias ligações ao servidor. O cliente ou o servidor devem ler ou escrever dados nas suas ligações e não devem bloquear o servidor proxy, recusando-lhe qualquer operação.

Modelo OSI - Uma antevisão

Os modelos OSI conceptualizam o processo de ligação em rede dos computadores. Tem sete camadas:

  • Camada física
  • Camada de ligação de dados
  • Camada de rede
  • Camada de transporte
  • Camada de sessão
  • Camada de apresentação
  • Camada de aplicação

A camada de transporte é responsável pela transferência de dados através de uma rede. Utiliza dois protocolos diferentes, o TCP e o User Datagram Protocol (UDP). O TCP é normalmente utilizado para a transferência de dados e este protocolo orienta a forma de enviar os dados. Divide a mensagem em segmentos e depois envia-os da origem para o destino.

Ligação da tomada

Há um emissor e um recetor que transmitem pedaços de dados em circunstâncias normais. O emissor e o recetor estão a comunicar com máquinas diferentes ao mesmo tempo, pelo que o proxy estabelece uma ligação de socket entre o emissor e o recetor envolvidos numa comunicação.

O socket é uma ligação lógica entre ambos utilizando o IP e o número da porta. O proxy estabelece uma ligação de tomada no lado do emissor e do recetor. O endereço da tomada, constituído por um endereço IP e um número de porta, é único para a comunicação entre o emissor e o recetor.

O endereço único do socket garante que a transmissão de dados se efectua em paralelo e que os pacotes não colidem uns com os outros.

Implementação de um proxy na camada TCP

Um proxy TCP recebe o tráfego de entrada e abre uma tomada de saída através da qual leva o tráfego de entrada para o servidor de destino. Move dados entre o cliente e o servidor, mas não pode alterar quaisquer dados, uma vez que não os compreende.

Um proxy neste nível tem acesso ao endereço IP e ao número da porta a que o recetor tenta ligar-se no servidor backend. Se o servidor utilizar o número de porta 3306 para ouvir os pedidos, o proxy implementa-o neste nível e também ouve nesta porta. 

O proxy escuta essa porta e retransmite as mensagens para o servidor. O proxy TCP cria uma ligação através de um socket através de uma única combinação de anfitrião: porta.

A implementação de um proxy na camada de transporte é leve e rápida, uma vez que a camada é responsável apenas pela transferência de dados.

Os proxies actuam como um meio para passar mensagens para trás e para a frente e não podem ler as mensagens. Estes proxies ajudam a monitorizar a rede, a esconder a rede interna da rede pública, a colocar as ligações em fila de espera para evitar a sobrecarga do servidor e a limitar as ligações. É a melhor solução para serviços de balanceamento de carga que comunicam através de TCP, como o tráfego de bases de dados para MYSQL e Postgres.

Proxy TCP como proxy reverso

Um proxy reverso aceita um pedido de um cliente, encaminha-o para um servidor que o pode satisfazer e devolve a resposta do servidor ao cliente. Pode implementar um proxy invertido mesmo que exista apenas um servidor ou aplicação.

O proxy invertido é visto publicamente por outros utilizadores na rede. É implementado na extremidade da rede do sítio para aceitar pedidos de navegadores Web e aplicações móveis. 

A implementação de um proxy TCP como um proxy reverso tem as seguintes vantagens:

Segurança - Aumenta a segurança da rede. Os clientes maliciosos não podem aceder aos servidores backend, uma vez que estes não são visíveis para a rede exterior. Não podem aceder-lhes diretamente para explorar quaisquer vulnerabilidades.

Prevenir ataques DDOS - Os servidores backend são protegidos pelo proxy reverso para protegê-los contra a negação de serviço distribuída (DDOS).

Regulação do tráfego - Pode rejeitar o tráfego de um determinado endereço IP do cliente (lista negra) ou limitar o número de ligações do cliente.

Escalabilidade e flexibilidade - é flexível alterar a configuração do backend porque o cliente só pode ver o endereço do proxy invertido. Para equilibrar a carga no servidor, pode aumentar ou diminuir o número de servidores para corresponder à alteração do volume de tráfego.

Aceleração Web - Reduz o tempo necessário para gerar uma resposta para o cliente que a solicita. 

Compressão - o proxy TCP responde antes de retornar ao cliente, reduzindo a quantidade de largura de banda necessária para transmitir os dados pela rede.

Encriptação - O tráfego entre o cliente e o servidor na rede requer encriptação. O processo de encriptação representa uma sobrecarga para o cliente e para o servidor, uma vez que é computacionalmente exaustivo. O proxy invertido efectua a encriptação e a desencriptação, libertando assim os servidores backend para se dedicarem apenas a servir os clientes.

Cache - O proxy invertido armazena uma cópia do pedido no seu sistema local antes de o servir ao cliente. O proxy inverso serve o pedido a partir da cache em vez de o reencaminhar para o servidor e ir buscar o mesmo pedido quando o cliente o solicita novamente. 

Proxy TCP como balanceador de carga

Um equilibrador de carga é um proxy que gere o tráfego quando existem vários servidores. Permite que o servidor funcione de forma eficiente e dimensiona o servidor quando o tráfego é elevado. O balanceador de carga distribui o tráfego entre os servidores e encaminha as ligações originais diretamente dos clientes para um servidor backend saudável, sem interrupções.

O proxy TCP utiliza o retorno direto do servidor para levar as respostas dos servidores backend saudáveis para os clientes diretamente e não para os balanceadores de carga. O servidor backend termina o tráfego SSL (secure socket layer) e não o balanceador de carga. 

Afinidade de sessão

O tráfego TCP entre o cliente e o servidor suporta a afinidade de sessão. A afinidade de sessão é quando o cliente pode enviar pedidos para o mesmo servidor backend, desde que este seja saudável e capaz. 

Monitorizar servidores

O proxy TCP efectua verificações de saúde do servidor backend, monitorizando periodicamente a sua prontidão. Quando o servidor backend não consegue lidar com o tráfego, é um nó não saudável, e o servidor redirecciona o tráfego para outros servidores backend saudáveis.

O proxy TCP apresenta as seguintes características quando actua como um equilibrador de carga:

Comportamento assíncrono - O proxy TCP tem um comportamento assíncrono, o que significa que se um cliente deixar subitamente de ler a partir do socket para o proxy, os outros clientes não devem notar quaisquer interrupções de serviço através do proxy.

Suporte de outros protocolos - O proxy TCP suporta HTTP e também outros protocolos da camada de aplicação, como FTP.

Atuar como proxy inverso - Um utilizador pode utilizar um proxy TCP como proxy inverso com base na localização da implementação. No lado do servidor, regula o tráfego do cliente para o utilizador. 

Opção de escala de janela

A janela de receção TCP é a quantidade de dados que um recetor pode tratar, em bytes, que pode armazenar em buffer durante uma ligação. O recetor deve atualizar o tamanho da sua janela antes de iniciar a comunicação e aguardar o aviso de receção. 

O remetente envia dados com base no tamanho da janela. O design da pilha TCP/IP do Windows ajusta-se à alteração do tamanho dos dados e utiliza um tamanho de janela maior. Cada vez que o remetente transmite, ele usa um tamanho de janela maior do que o usado na transmissão anterior.

O tamanho da janela não é fixo porque pode ser redimensionado ajustando o tamanho máximo do segmento (MSS). O cliente e o servidor negoceiam o MSS durante a configuração da ligação. Ajustar a janela de receção para incrementos do MSS aumenta a percentagem de segmentos TCP de tamanho completo utilizados durante as transmissões de dados em massa.

A dimensão da janela de receção é determinada da seguinte forma:

O cliente envia o primeiro pedido de ligação ao servidor, anunciando um tamanho de janela de receção de 16K (16.384 bytes). Quando a ligação é estabelecida, o cliente ajusta o tamanho da janela de receção com base no MSS. O tamanho da janela é ajustado para quatro vezes o MSS, até um tamanho máximo de 64 K, exceto se for utilizada a opção de escalonamento da janela.

Perguntas mais frequentes

1. Qual é a diferença entre um proxy reverso e um proxy de balanceamento de carga?

Proxy inversoProxy de balanceamento de carga
Um proxy invertido é uma aplicação intermediária que é implementada entre o cliente e o servidor.Um proxy de balanceamento de carga distribui o tráfego de forma uniforme e eficiente entre vários servidores back-end.
Os proxies inversos aumentam a segurança dos servidores Web, garantindo que os clientes não comunicam diretamente com o servidor original.Existem vários servidores backend e, em caso de falha de rede ou de ataque DDoS, um proxy de equilíbrio de carga ajuda a evitar o encerramento do sítio, uma vez que o tráfego pode ser reencaminhado para um servidor alternativo.
O processo: - O utilizador faz um pedido HTTP. - O proxy reverso recebe-o. - O proxy invertido permite ou recusa o pedido do utilizador. - Se for permitido, o proxy reverso encaminha o pedido para o servidor. - Se for recusado, o proxy invertido envia uma mensagem de erro ao cliente. - O servidor envia a resposta correspondente para o proxy reverso, que encaminha a resposta do servidor para o cliente.O processo:- O equilibrador de carga recebe o pedido do cliente.- O equilibrador de carga envia o pedido a um único servidor do grupo de servidores backend.- O servidor selecionado envia a resposta de volta ao equilibrador de carga.- O equilibrador de carga reencaminha a resposta do servidor para o utilizador.
Exemplos de alguns proxies reversos de código aberto sãoNGINXApache HTTP ServerApache Traffic ServerExemplos de alguns algoritmos de balanceamento de carga sãoHashRound RobinPower of Two Choices

2. Diferença entre um proxy HTTP e um proxy TCP.

Proxy HTTPProxy TCP
Numa zona desmilitarizada (DMZ), é utilizado como um equilibrador de carga ou um fornecedor de IP público para proteger os servidores de backend.É utilizado como um proxy inverso para uma ligação TCP entre o cliente e o servidor.
Cria um pedido/resposta HTTP.Abre uma conexão de soquete TCP e move dados através dela.
O proxy HTTP lê o endereço do anfitrião e liga-se ao anfitrião adequado.O proxy TCP não altera os dados porque não os consegue compreender.
Para além de HTTP, pode servir pedidos HTTPS e FTP.Para além do TCP, pode servir pedidos HTTP e FTP.

Considerações finais

Um proxy TCP actua como um proxy inverso e também como um equilibrador de carga. Ambos os tipos de aplicações residem entre clientes e servidores, aceitando pedidos dos primeiros e entregando respostas dos segundos.

Por vezes, o proxy invertido e o equilibrador de carga podem parecer a mesma coisa e gerar confusão. Explorar quando e por que razão pode implantá-los num sítio Web ajudá-lo-á a compreendê-lo.

A recolha de dados é uma tarefa imensa e é importante para uma empresa estabelecida ou para uma empresa em fase de arranque. É um processo que requer tendências de mercado, análise da concorrência e preferências dos clientes para a tomada de decisões. 

ProxyScrape oferece proxies premium, proxies residenciais e proxies dedicados para recolher grandes quantidades de dados de sítios Web. Há uma combinação flexível de proxies à escolha e o preço também é acessível. Continue a consultar o nosso blogue para obter mais informações sobre os proxies recentemente introduzidos, as suas utilizações e os benefícios que ProxyScrape oferece.