Mesmo que a pergunta tenha sido totalmente abordada. Eu sinto que este processo deve ser melhor descrito passo a passo.
Para este exemplo, eu me sento 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 solicitar a página superuser.com
, isso gerará muitos pacotes IP. Vamos olhar para um único.
Pacote IP em
Fonte: 192.168.1.12
(meu IP)
Destino: 64.34.119.12
(superuser.com)
Agora, meu sistema provavelmente está configurado de maneira semelhante ao 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 meu campo Destination no meu pacote IP aponta para uma rede diferente que a minha, ele é enviado para o meu gateway padrão (em vez de diretamente para o computador).
Mas como o pacote pode chegar ao gateway padrão, se o Destino apontar completamente para outro lugar?
Ethernet
Isso é fácil, porque usamos o endereçamento do protocolo Ethernet para isso. Acabamos de definir nosso endereço IP de destino no pacote IP e o endereço MAC de nosso gateway padrão como o destino no quadro Ethernet .
Agora, isso garantirá que nosso gateway padrão receba o pacote para superuser.com
. Yay!
Agora, o gateway tem nosso pacote e pode enviá-lo em seu caminho. Mas, para ter certeza de que obterá a resposta, primeiro é necessário substituir o endereço Fonte do pacote (caso contrário superuser.com
tentaria enviar a resposta para algum dispositivo (possivelmente) inexistente com meu endereço IP em sua rede. Agora isso não seria muito bom.)
Assim, meu roteador colocará seu endereço IP público no campo Origem :
Pacote IP em
Fonte: 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é que o pacote finalmente chegue em superuser.com
e uma resposta seja gerada.
A resposta
Responda ao pacote IP
Fonte: 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 para 192.168.1.12
?
TCP
Bem, isso realmente funciona porque só analisamos as partes IP e Ethernet da comunicação. O que faz este trabalho é a parte TCP.
Você provavelmente sabe que os servidores da web geralmente são executados na porta 80
. O IP não possui noção de portas . Isso vem de TCP . No TCP temos (como no IP) uma fonte e destino porta .
Meu pacote TCP para superuser.com
Fonte: 192.168.1.12
(meu IP)
Porta de origem: 11111
(a porta que meu computador criou)
Destino: 64.34.119.12
(superuser.com)
Porta de destino: 80
Quando seu roteador envia aquele pacote inicial (que é endereçado a superuser.com
na porta 80
), ele colocará uma nova porta de origem lá (como 12345
).
E esta é a parte importante! Ele vai se lembrar dessa substituição!
O pacote TCP do meu roteador para superuser.com
Fonte: 92.69.127.243
(meu IP público)
Porta de Origem: 12345
(a porta que meu roteador criou)
Destino: 64.34.119.12
(superuser.com)
Porta de destino: 80
Assim, o pacote de resposta recebido pelo roteador realmente se parece com isso:
Responda ao 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 criou)
Agora, ele obtém esse pacote e vê que é para uma porta que lembrou anteriormente foi atribuído às operações NAT para o endereço IP 192.168.1.12
(meu endereço IP).
Responda ao TCP Packet do meu roteador
Fonte: 64.34.119.12
(superuser.com)
Porta de Origem: 80
Destino: 192.168.1.12
(meu IP)
Porta de destino: 11111
(a porta que meu computador compôs)