Mi pregunta no se refiere a cómo se mueve a través de Internet, sino cómo se mueve a través del enrutador a un determinado dispositivo. Todos los dispositivos conectados a un enrutador en una red doméstica tienen la misma IP externa. Digamos que el dispositivo A está cargando una página y los paquetes se envían desde una fuente externa al enrutador porque los paquetes conocen la IP externa del dispositivo A y pueden llegar al enrutador. Pero ahora, ¿cómo llega al dispositivo A? ¿Cómo sabe el enrutador enviarlo al dispositivo A en lugar del dispositivo B?
Creo que esto involucra a NAT, pero solo estoy buscando una explicación lógica de lo que NAT hace para lograr esto.
Respuestas:
Cuando inicia una conexión a un sitio externo, el enrutador está usando un número de puerto de origen diferente cada vez ... luego usa ese número de puerto de origen (que es donde regresan los datos) como la clave para buscar en qué máquina su red interna de donde vino la solicitud. Esto se llama Traducción de direcciones de PUERTO (en oposición a la Traducción de direcciones de red, que es cuando tiene múltiples direcciones de red disponibles para su enrutador).
fuente
Normalmente, todos los dispositivos de la red doméstica tienen una dirección interna diferente (dirección privada, siempre 192.168.0.1 ~ 192.168.0.255).
Cuando se envía un paquete desde la red doméstica (digamos Dispositivo A: 192.168.0.123), cuando pasa a través del enrutador, el enrutador traducirá la dirección privada a la dirección externa del enrutador (supongamos que es 140.191.2.5), y el enrutador también registrará esto mapeo en su NAT.
Cuando vuelve la respuesta, el enrutador asigna el NAT y encuentra que la fuente original es el Dispositivo A.
entonces el dispositivo A eventualmente recibe el paquete.
Esto es solo un concepto, para más detalles, consulte wiki: NAT.
fuente