Como exatamente um proxy funciona?

11

Se eu quiser me conectar, por exemplo, IP 100.100.100.100, Porta 80, meu computador enviará um pacote TCP com este endereço para o fio.

Agora, se eu usar um servidor proxy, por exemplo, 200.200.200.200 Porto 8080 (esse tipo de proxy que você pode configurar no Internet Explorer) como este processo é alterado?

Quando eu ainda quiser me conectar ao mesmo IP, o cabeçalho IP incluirá o IP de destino ou o IP do proxy ou ambos?

Eu já pesquisei no Google, existem centenas de páginas que informam como configurar um proxy, mas nenhuma explica como funciona sob o capô.

    
por cody 01.04.2011 / 23:27

4 respostas

12

A solicitação HTTP é enviada do cliente para a porta 8080 do servidor proxy. O servidor proxy, em seguida, origina uma nova solicitação HTTP para o site de destino. O proxy, dependendo da configuração, geralmente adicionará um cabeçalho "X-Forwarded-For" à solicitação HTTP. Os arquivos de log no site de destino mostrarão o endereço IP do proxy, mas podem ou não estar configurados para registrar o endereço "X-Forwarded-For".

Essa é a configuração típica, mas o software de proxy permite todos os tipos de personalização.

EDIT: Eu deveria notar que quando li originalmente sua pergunta, eu tive a idéia que você estava perguntando sobre um Proxy HTTP especificamente, como o squid ou nginx. Existem muitos tipos diferentes de proxies disponíveis. No Internet Explorer, você provavelmente estará usando um proxy HTTP, mas há muitos outros tipos também.

    
por 01.04.2011 / 23:37
1

O HTTP é um protocolo da Camada 7, portanto, não confunda. quando você usa um proxy HTTP e digita, digamos, google.com, o cabeçalho HTTP ainda é mesmo google.com, mas o endereço IP de destino será o endereço IP do proxy, a origem será o IP dos hosts para o número de porta personalizado 8080.

    
por 08.03.2013 / 06:06
0

Para usar um proxy HTTP, a solicitação é enviada do cliente para o endereço IP do servidor proxy e não para o servidor de destino. O proxy deve então ler o cabeçalho HTTP para extrair o request-URI . O URI de solicitação inclui o nome ou o IP do servidor de destino e o servidor proxy usa essas informações para encaminhar a solicitação.

A especificação HTTP permite que a linha de solicitação exclua o nome do servidor e a porta quando um proxy não é usado (pois isso seria desnecessário se a solicitação fosse enviada diretamente para esse servidor). Mas, conforme a especificação ...

The absoluteURI form is REQUIRED when the request is being made to a proxy.

Portanto, quando não estiver usando um proxy, a linha de solicitação poderá se parecer com:

GET /robots.txt HTTP/1.1

mas para usar um proxy, a linha deve incluir o nome do servidor (e a porta, se não 80):

GET http://httpbin.org:80/robots.txt HTTP/1.1

O lado da resposta, se a operação puder ser mais simples, já que o servidor proxy pode simplesmente retransmitir a resposta textual através do soquete de solicitação pré-estabelecido.

    
por 25.10.2017 / 16:41
-7

Não existe o "pacote tcp". O TCP opera com fluxos de dados. Existem pacotes IP.

Parece que você não tem algum conhecimento básico sobre redes, sugiro que obtenha um bom livro sobre o TCP / IP. O favorito de todos parece ser "TCP / IP ilustrado" por W. Richard Stevens.

Voltar para sua pergunta.

Um proxy é um intermediário:

[você] - [proxy] - [servidor que você deseja conectar]

Agora existem duas conexões diferentes:

[você] - (sua conexão com o proxy) - [proxy] - (conexão do proxy com o servidor) - [servidor que você deseja conectar]

Quando você pensa que está se conectando a um servidor por meio de um proxy, na verdade está se conectando ao proxy e informando que deseja alcançar um determinado servidor. Em seguida, o proxy abre uma segunda conexão de si mesmo para esse servidor e age como intermediário transmitindo dados nas duas direções.

    
por 03.04.2011 / 00:35