Como o roteador sabe para onde encaminhar o pacote

57

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 alternará o local endereço 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 (não é?) e todos os computadores estão usando a porta 80?

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

Como exatamente isso funciona?

    
por Kornelije Petak 07.02.2010 / 14:11

2 respostas

65

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

Você também verá isso como NAPT ou IP Masquerading. Todos os três últimos termos significam a mesma coisa no uso geral. (As siglas - 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ê está ciente. 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 vá para www.google.com. Seu computador (por exemplo, 192.168.1.100) procura esse endereço e faz uma conexão TCP para 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 para o roteador, que escolhe uma nova porta alta aleatória e reescreve o pacote. Cada conexão de saída recebe sua própria porta no roteador. O roteador encaminha o pacote para o seu provedor 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 eles 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 procura essas informações na tabela e encaminha o pacote para 192.168.1.100:37641.

    
por 10.09.2010 / 23:40
0

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

Apenas um excerto do Volume 1 Ilustrado do TCP / IP sobre o NAPT, com uma palavra sobre as deficiências de seu primo simples, NAT Básico:

Basic NAT performs rewriting of IP addresses only. In essence, a private address is rewritten to be a public address, often from a pool or range of public addresses supplied by an ISP. This type of NAT is not the most popular because it does not help to dramatically reduce the need for IP addresses—the number of globally routable addresses must equal or exceed the number of internal hosts that wish to access the Internet simultaneously. A much more popular approach, NAPT involves using the transport-layer identifiers (i.e., ports for TCP and UDP, query identifiers for ICMP) to differentiate which host on the private side of the NAT is associated with a particular packet (see Figure 7-4). This allows a large number of internal hosts (i.e., multiple thousands) to access the Internet simultaneously using a limited number of public addresses, often only a single one. We shall ordinarily use the term NAT to include both traditional NAT and NAPT unless the distinction is important in a particular context.

    
por 26.06.2014 / 17:22