Mesmo que a questão tenha sido totalmente abordada. Eu sinto que esse processo deve ser melhor descrito passo a passo.
Neste exemplo, estou em uma LAN privada conectada à Internet através de um roteador. Como nossa rede compartilha um único endereço IP público, usamos o NAT.
Então, quando eu solicito a página superuser.comque irá gerar muitos pacotes IP. Vamos olhar para um único.
Origem do pacote IP : 192.168.1.12(meu IP)
Destino: 64.34.119.12(superuser.com)
Agora, meu sistema provavelmente está configurado de maneira semelhante à que está em questão. Eu tenho meu próprio endereço IP ( 192.168.1.12), uma máscara de sub-rede ( 255.255.255.0) e um gateway padrão ( 192.168.1.1). Agora, como o meu campo Destino no meu pacote IP aponta para uma rede diferente da minha, ele é enviado ao meu gateway padrão (e não ao computador diretamente).
Mas como o pacote pode chegar ao gateway padrão, se o Destino apontar para outro lugar completamente?
Ethernet
Isso é fácil, porque usamos o endereçamento do protocolo Ethernet para isso. Acabamos de definir o endereço IP de destino no pacote IP e o endereço MAC do gateway padrão como destino no quadro Ethernet .
Agora isso garantirá que nosso gateway padrão obtenha o pacote superuser.com. Yay!
Agora, o gateway possui nosso pacote e pode enviá-lo no caminho certo. Mas, para garantir que ela receba a resposta, primeiro é necessário substituir o endereço de origem do pacote (caso contrário superuser.com, tentaria enviar a resposta para alguns dispositivos (possivelmente) inexistentes pelo meu endereço IP na rede deles. muito bom.)
Portanto, meu roteador colocará seu endereço IP público no campo Origem :
Origem do pacote IP : 92.69.127.243(meu IP público)
Destino: 64.34.119.12(superuser.com)
Agora esse mesmo jogo continua com todos os roteadores do mundo até o pacote finalmente chegar superuser.come uma resposta ser gerada.
A resposta
Resposta
Fonte do pacote IP : 64.34.119.12(superuser.com)
Destino: 92.69.127.243(meu IP público)
Ok, a resposta chegou ao meu roteador, e agora? Como meu roteador agora sabe enviar a resposta 192.168.1.12?
TCP
Bem, isso realmente funciona porque analisamos apenas as partes IP e Ethernet da comunicação. O que faz isso funcionar é a parte do TCP.
Você provavelmente sabe que os servidores web geralmente rodam na porta 80. IP não tem noção de portas . Isso vem do TCP . No TCP, temos (como no IP) uma porta de origem e destino .
Meu pacote TCP para superuser.com
Origem: 192.168.1.12(meu IP)
Porta de origem: 11111(a porta criada pelo meu computador)
Destino: 64.34.119.12(superuser.com)
Porta de destino:80
Quando seu roteador envia esse pacote inicial (endereçado à superuser.comporta 80), ele coloca uma nova porta de origem (como 12345).
E esta é a parte importante! Ele vai se lembrar dessa substituição!
Pacote TCP do meu roteador para superuser.com
Origem: 92.69.127.243(meu IP público)
Porta de origem: 12345(a porta que meu roteador compôs)
Destino: 64.34.119.12(superuser.com)
Porta de destino:80
Portanto, o pacote de resposta recebido pelo roteador se parece com o seguinte:
Resposta TCP Packet de superuser.com
Fonte: 64.34.119.12(superuser.com)
Porta de origem: 80
Destino: 92.69.127.243(meu IP público)
Porta de destino: 12345(a porta que meu roteador compunha)
Então agora ele recebe esse pacote e vê que é para uma porta que anteriormente lembrava ter sido atribuída às operações NAT para o endereço IP 192.168.1.12(meu endereço IP).
Resposta TCP Packet do meu roteador
Origem: 64.34.119.12(superuser.com)
Porta de origem: 80
Destino: 192.168.1.12(meu IP)
Porta de destino: 11111(a porta criada pelo meu computador)