Minha máquina está conectada em uma LAN local. para se conectar à internet, o tráfego passa pelo servidor proxy. meu entendimento do servidor proxy é que ele envia a solicitação em nome do remetente da solicitação original. Portanto, quando o servidor responde, ele envia a resposta ao proxy, pensando que é o cliente. O proxy encaminha a resposta para minha máquina.
Veja o caso da tradução de endereços de rede . Sua solicitação passa pelo roteador nat. O roteador nat fornece um endereço IP público e armazena esse mapeamento em sua tabela. A resposta (do servidor) é enviada para este endereço público atribuído. O qual o roteador nat resolve para o seu endereço IP local da tabela e encaminha a resposta para sua máquina.
Minha pergunta: por que o nat é necessário quando o próprio proxy é capaz de mediar o tráfego e fornecer acesso à internet?
fonte
Respostas:
MadHatter escreveu uma excelente explicação para os leigos sobre as diferenças entre proxies e NAT.
Para mais detalhes técnicos, sugiro que você leia o modelo OSI e o modelo TCP / IP. Nat opera mais tarde no 3 do modelo OSI (a camada de rede, IP neste caso) e os proxies geralmente operam na camada 7 (a camada de aplicativos, HTTP ou o que você estiver usando como proxy).
NAT e proxies também estão tentando resolver problemas ligeiramente diferentes. O NAT está ocultando vários IPs privados por trás de um número menor de IPs públicos para aliviar a falta de endereços IP, enquanto os proxies estão criando um "ponto de estrangulamento" da rede por motivos de segurança, auditoria ou desempenho.
fonte
Parece-me que você compreendeu bem os fundamentos aqui, e a resposta curta é que, se você estiver usando um proxy com um endereço público, não precisará do NAT - para os protocolos mediados pelo proxy .
No entanto, existem mais protocolos no céu e na terra do que se sonha em sua filosofia ; nem todos eles são proxiable, e proxies não existem mesmo para todos, portanto o NAT é um substituto útil para eles.
Editar : um proxy é um dispositivo de computação que funciona em um nível de aplicativo. Um proxy HTTP recebe solicitações HTTP para um site remoto e, como você apontou, ele é direcionado para o próprio site, faz a solicitação e passa a resposta de volta ao cliente solicitante. Mas ele precisa entender o HTTP em um nível detalhado para fazer isso.
Da mesma forma, você pode escrever um proxy FTP, mas ele precisa entender os detalhes dos comandos MKD, DELE, LIST e outros comandos de protocolo ftp, a fim de proxy corretamente as solicitações do cliente. Qualquer proxy que queira trabalhar de forma transparente geralmente precisa entender intimamente as partes internas do protocolo para fazer a proxy desse protocolo.
O SOCKS é, em certa medida, uma exceção a essa regra, mas isso ocorre porque o protocolo SOCKS cria uma interface mais geral para proxy, exigindo que cada cliente seja SOCKSified e, portanto, capaz de fazer as solicitações corretas do proxy SOCKS para definir o tipo de proxy que cada um exige, o que não é exatamente transparente.
fonte