Esta es una pequeña pregunta teórica que me ha estado confundiendo durante bastante tiempo.
Básicamente, si estamos dentro de una LAN privada y queremos que los paquetes entrantes lleguen, por ejemplo, a un servidor HTTP ubicado en una de las máquinas, reenviamos puertos para que los paquetes entrantes lleguen exactamente a esa computadora.
Ahora, estoy bastante confundido sobre cómo los paquetes de 'respuesta' llegan a su destino dentro de una LAN, por ejemplo, cuando abrimos una página web más o menos. Realmente no puedo encontrar ninguna información útil sobre ese tema.
Espero que alguien pueda darme un par de pistas o vincularme con alguna información que pueda explicarlo. Gracias.
EDITAR: Creo que debería aclarar. Un ejemplo de lo que estoy preguntando sería algo como esto:
1. Una computadora dentro de una LAN con una sola IP externa intenta cargar una página web desde un servidor web fuera de esta LAN (Básicamente en Internet)
2 El servidor web responde y envía la página web de regreso a esa computadora.
Lo que me confunde en este momento es cómo sabe el enrutador a qué computadora enviar los datos entrantes (dado que el enrutador está conectado a una LAN con varias computadoras) sin reenvío de puerto previo.
Respuestas:
A pesar de que la pregunta ha sido completamente cubierta. Siento que este proceso debería describirse mejor paso a paso.
Para este ejemplo, me siento en una LAN privada conectada a Internet a través de un enrutador. Debido a que nuestra red comparte una única dirección IP pública, utilizamos NAT.
Entonces, cuando solicito la página
superuser.com
que generará muchos paquetes IP. Veamos uno solo.Fuente del paquete IP :
192.168.1.12
(mi IP)Destino:
64.34.119.12
(superuser.com)Ahora, es muy probable que mi sistema esté configurado de manera similar al que está en cuestión. Tengo mi propia dirección IP (
192.168.1.12
), una máscara de subred (255.255.255.0
) y una puerta de enlace predeterminada (192.168.1.1
). Ahora, debido a que mi campo Destino en mi paquete IP apunta a una red diferente a la mía, se envía a mi puerta de enlace predeterminada (en lugar de a la computadora directamente).Pero, ¿cómo puede llegar el paquete a la puerta de enlace predeterminada, si el Destino apunta a otro lugar completamente diferente?
Ethernet
Eso es fácil, porque usamos el direccionamiento del protocolo Ethernet para eso. Simplemente configuramos nuestra dirección IP de destino en el paquete IP y la dirección MAC de nuestra puerta de enlace predeterminada como destino en la trama Ethernet .
Ahora eso asegurará que nuestra puerta de enlace predeterminada obtenga el paquete
superuser.com
. ¡Hurra!Ahora la puerta de enlace tiene nuestro paquete y podría enviarlo directamente a su ruta. Pero para asegurarse de que obtendrá la respuesta, primero debe reemplazar la dirección de origen del paquete (de lo contrario
superuser.com
, trataría de enviar la respuesta a algún (posiblemente) dispositivo inexistente con mi dirección IP en su red. Ahora eso no sería muy agradable.)Entonces mi enrutador colocará su dirección IP pública en el campo Fuente :
Fuente del paquete de IP :
92.69.127.243
(mi IP pública)Destino:
64.34.119.12
(superuser.com)Ahora ese mismo juego sigue y sigue con todos los enrutadores del mundo hasta que finalmente llega el paquete
superuser.com
y se genera una respuesta.La respuesta
Respuesta Paquete de IP
Fuente:
64.34.119.12
(superusuario.com)Destino:
92.69.127.243
(mi IP pública)Ok, la respuesta llegó a mi enrutador, ¿y ahora qué? ¿Cómo sabe ahora mi enrutador para enviar la respuesta
192.168.1.12
?TCP
Bueno, eso realmente funciona porque solo hemos examinado las partes IP y Ethernet de la comunicación. Lo que hace que esto funcione es la parte TCP.
Lo más probable es que sepa que los servidores web generalmente se ejecutan en el puerto
80
. IP no tiene noción de puertos . Eso viene de TCP . En TCP tenemos (como en IP) un puerto de origen y de destino .Mi paquete TCP a superuser.com
Fuente:
192.168.1.12
(mi IP)Puerto de origen:
11111
(el puerto que compuso mi computadora)Destino:
64.34.119.12
(superuser.com)Puerto de destino:
80
Cuando su enrutador envía ese paquete inicial (que se dirige al
superuser.com
puerto80
), colocará un nuevo puerto de origen allí (como12345
).¡Y esta es la parte importante! ¡Él recordará ese reemplazo!
Paquete TCP de mi enrutador a superuser.com
Fuente:
92.69.127.243
(mi IP pública)Puerto de origen:
12345
(el puerto que compuso mi enrutador)Destino:
64.34.119.12
(superuser.com)Puerto de destino:
80
Entonces, el paquete de respuesta recibido por el enrutador se ve así:
Contestar el paquete TCP de superuser.com
Fuente:
64.34.119.12
(superuser.com)Puerto de origen:
80
Destino:
92.69.127.243
(mi IP pública)Puerto de destino:
12345
(el puerto que compuso mi enrutador)Entonces, ahora obtiene ese paquete y ve que es para un puerto que antes recordaba que estaba asignado a operaciones NAT para la dirección IP
192.168.1.12
(mi dirección IP).Responda el paquete TCP desde mi enrutador
Fuente:
64.34.119.12
(superuser.com)Puerto de origen:
80
Destino:
192.168.1.12
(mi IP)Puerto de destino:
11111
(el puerto que compuso mi computadora)fuente
Traducción de direcciones de red . Brevemente, cuando el enrutador de la puerta de enlace de la LAN privada reemplaza la dirección de origen de la LAN privada con su propia dirección pública, modifica el paquete de alguna manera, como asignar un número de puerto único y de otro modo sin significado local que se asigna al nodo LAN de origen y la solicitud saliente . Recuerda este mapeo de puertos, por lo que cuando una respuesta vuelve a la IP pública / número de puerto único, (el enrutador) sabe cómo desasignarlo al de su nodo de origen. Así es también como puede ejecutar múltiples pestañas, navegadores o instancias de navegador y las respuestas a cada solicitud de navegador vuelven al navegador y la pestaña correctos.
fuente
Cuando un paquete inicial llega a la interfaz externa del enrutador, cambia la dirección IP de destino del paquete según la configuración de reenvío de puerto y transmite el paquete modificado en la interfaz interna del enrutador (después del ARP habitual si es necesario)
El paquete llega al servidor web y aún tiene una dirección IP de origen externa que se utilizará como dirección de destino para cualquier respuesta. En consecuencia, el servidor direcciona los paquetes de respuesta salientes de la manera habitual con una dirección IP de destino igual a la dirección IP de origen de la solicitud. Como la dirección IP del solicitante es externa, el paquete se dirige, en la capa MAC, a la interfaz interna del enrutador.
Tenga en cuenta que hay diferentes objetivos en cada capa de red.
fuente
El reenvío de puertos generalmente se realiza en un enrutador o dispositivo adyacente. Cuando un dispositivo en una LAN envía tráfico a otro dispositivo en esa misma LAN, el enrutador no está involucrado en absoluto. El tráfico ni siquiera lo toca. Sus reglas de reenvío de puertos no tendrán efecto en el tráfico de LAN a LAN.
Ethernet fue diseñado con una topología de "bus" en mente donde cada computadora estaba físicamente conectada al mismo medio. Si bien los conmutadores modernos optimizan el flujo de tráfico al aprender la dirección MAC en el otro extremo del puerto y replicar el tráfico en consecuencia, la topología del "bus" aún permanece. Cualquier cosa conectada a un conmutador estándar puede alcanzar "directamente" cualquier otra cosa (suponiendo que esté dentro de la misma subred) sin tener que "pasar" por un dispositivo intermedio como un enrutador.
Puede confundirse si el dispositivo al que está conectando todas las computadoras tiene múltiples puertos Ethernet "LAN" y luego un solo puerto "WAN". Estos tipos de dispositivos son en realidad un enrutador y un conmutador en el mismo chasis.
Entonces, dentro de su LAN, si su servidor HTTP tiene la dirección 192.168.1.55, para alcanzarla dentro de su LAN, deberá escribir " http://192.168.1.55 " en la barra de direcciones de su navegador. El enrutador nunca lo ve. Para alcanzarlo fuera de su LAN, necesitará escribir su IP externa, es decir, " http://256.99.88.77 : {el puerto que envió aquí}" o lo que sea. Esto afecta su enrutador, la función NAT del enrutador funciona en él y luego el enrutador lo envía a 192.168.1.55.
fuente
En pocas palabras, cuando una computadora dentro de la LAN privada inicia una conexión saliente, la puerta de enlace NAT genera automáticamente una asignación de puertos para ella. Son casi lo mismo que las asignaciones de puertos que ingresó manualmente antes: {puerto público, dirección privada, puerto privado}, y se usan de la misma manera. La mayor diferencia con las asignaciones dinámicas es que la puerta de enlace NAT a menudo tiene que asignar arbitrariamente los puertos públicos para las asignaciones, cuando el número de puerto esperado ya está en uso.
fuente