Como o roteador sabe para onde encaminhar pacotes


68

Se vários computadores com endereços locais (192.168.0. #) Estiverem conectados a um roteador e cada computador abrir um navegador da Web e solicitar uma página por HTTP, quando esses pacotes TCP: 80 forem enviados, o roteador alterna o endereço local com o IP estático do roteador (ou seja, IP fornecido pelo provedor) para que o servidor possa responder ao endereço apropriado.

Mas como o roteador sabe para qual computador encaminhar a resposta HTTP, já que o cabeçalho TCP não contém o endereço IP local (contém?) E todos os computadores estão usando a porta 80?

Isso tem algo a ver com os endereços MAC?

Como, exatamente, isso funciona?

Respostas:


78

A maioria dos roteadores domésticos usa um caso especial de NAT chamado PAT.

Você também o verá conhecido como NAPT ou IP Masquerading. Todos os três últimos termos significam a mesma coisa em uso geral. (Os acrônimos - Tradução de Endereço de Rede / Tradução de Endereço de Porta / Tradução de Porta de Endereço de Rede)

Quando o pacote sai da sua máquina interna, o endereço de origem é reescrito como você sabe. A porta de origem também é alterada, geralmente para um número alto, e o roteador mantém uma tabela de conversão de endereços.

Por exemplo, digamos que você tenha uma máquina cliente que acesse www.google.com. Seu computador (por exemplo, 192.168.1.100) procura esse endereço e faz uma conexão TCP com 72.14.204.147 na porta 80 a partir do seu endereço IP interno, usando uma porta de origem aleatória.

Para o seu computador, a conexão é assim:

192.168.1.100:37641   <-->  72.14.204.147:80

Seu computador envia o pacote ao roteador, que escolhe uma nova porta alta aleatória e reescreve o pacote. Cada conexão de saída obtém sua própria porta no roteador. O roteador encaminha o pacote para o seu ISP depois de adicioná-lo à sua tabela de conexão:

PrivateIP        PrivatePort   PublicIP      PublicPort    Remote          RemotePort
-------------    ----------    -----------   -----------   ----------      -----------
192.168.1.100    37641         *10.6.23.5    59273         72.14.204.147   80

* Por exemplo, usei um endereço começando com 10, mas estes não são publicamente roteáveis. A tabela também é um pouco simplificada.

Para o google, a conexão é assim:

10.6.23.5:59273   <-->  72.14.204.147:80

O Google enviará sua resposta para 10.6.23.5 na porta 59273. Seu roteador pesquisa essas informações na tabela e encaminha o pacote para 192.168.1.100:37641.


3
Então, para resumir, o roteador usa números de porta para lembrar o que de fora da rede local vai para o que é de dentro da rede. No entanto, isso não explica como www.google.comme encontraria se eu não enviasse uma solicitação inicial. Em outras palavras, as mensagens só pode alcançar-me através do roteador se eu inicialmente enviou um pedido através do roteador
CodyBugstein

2
@Irmay google.com (ou qualquer outra coisa na Internet) não consegue encontrar o seu computador se o computador não iniciou a solicitação. É por isso que ter um roteador adiciona muita segurança.
22414 Jason

6
@ Jason Esse é um mito perigoso. Ter um firewall adiciona segurança. O trabalho de um roteador SoHo típico é apenas fazer as coisas funcionarem, não impedir que elas funcionem. Veja aqui para mais informações.
David Schwartz

11
@ Jason Melhor não excluir o seu comentário, pois não é possível ler o que seria uma discussão que valeria a pena ler.
barlop

2
Bom exemplo, mas isso significa que todas as portas de alto número estão sempre abertas em nossos roteadores?
21815 jiggunjer

1

Os roteadores entre a rede local e o restante da Internet usam uma técnica chamada NAT.

Apenas um trecho do TCP / IP Illustrated Volume 1 sobre NAPT, com uma palavra sobre as deficiências de seu primo simples, Basic NAT:

O NAT básico executa a reescrita apenas dos endereços IP. Em essência, um endereço privado é reescrito para ser um endereço público, geralmente de um pool ou intervalo de endereços públicos fornecidos por um ISP. Esse tipo de NAT não é o mais popular porque não ajuda a reduzir drasticamente a necessidade de endereços IP - o número de endereços roteáveis ​​globalmente deve ser igual ou superior ao número de hosts internos que desejam acessar a Internet simultaneamente. Uma abordagem muito mais popular, o NAPT envolve o uso dos identificadores da camada de transporte (portas para TCP e UDP, identificadores de consulta para ICMP) para diferenciar qual host no lado privado do NAT está associado a um pacote específico (veja a Figura 7- 4) Isso permite um grande número de hosts internos (ou seja, milhares) para acessar a Internet simultaneamente usando um número limitado de endereços públicos, geralmente apenas um. Normalmente, usaremos o termo NAT para incluir o NAT tradicional e o NAPT, a menos que a distinção seja importante em um contexto específico.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.