2. Navegando IPv4

Acceso desde una LAN privada a varios servidores de Internet

 

Contexto:

Vamos a explicar el proceso completo de comunicación que ocurre cuando desde un equipo dentro de una LAN privada, abre dos pestañas de un navegador para acceder a Youtube y a Google.

 

Supongamos una computadora conectada a una red LAN privada. El equipo posee la dirección IP:

192.168.1.20/24

y utiliza como puerta de enlace predeterminada un router cuya interfaz LAN tiene la dirección:

192.168.1.1

El router, a su vez, está conectado a Internet mediante una interfaz WAN que posee una dirección IP pública, por ejemplo:

181.30.40.50

Ahora supongamos que el usuario abre un navegador y, simultáneamente, utiliza dos pestañas:

  • una pestaña para acceder a www.google.com

  • otra pestaña para acceder a www.youtube.com

NOTA: 

Este ejemplo permite observar como intervienen conjuntamente las direcciones de capa 2, las direcciones de capa 3 y los números de puerto de la capa de transporte.

Resolución de DNSs

Cuando el usuario escribe www.google.com, el equipo debe obtener primero la dirección IP asociada al nombre. Para ello realiza una consulta DNS.

Supongamos que el DNS responde:    www.google.com → 142.250.79.100

Del mismo modo, al acceder a www.youtube.com, se realiza otra resolución DNS. Supongamos, simplificando el ejemplo, que se obtiene:  www.youtube.com → 142.250.184.78

En una comunicación real, Google y YouTube pueden utilizar múltiples direcciones IP, CDN, balanceadores de carga y conexiones adicionales, pero estas direcciones resultan suficientes para comprender el funcionamiento básico.

CDN: Content Delivery Network o red de distribución de contenidos) es un grupo de servidores ubicados en distintas partes del mundo que guardan copias de los archivos de un sitio web para entregarlos más rápido a los usuarios.

En capa 3.

La computadora analiza ambas direcciones IP destino utilizando su máscara /24.

142.250.79.100 && 255.255.255.0 =142.250.79 esto es distinto de mi sub-red  192.168.1.0 !!!!!  

142.250.184.78 && 255.255.255.0 =142.250.184 esto es distinto de mi sub-red 192.168.1.0 !!!!!

Como ninguna pertenece a la red local 192.168.1.0/24, determina que los paquetes deben ser enviados a su puerta de enlace predeterminada, 192.168.1.1.

Aquí aparece una primera diferencia importante entre capa 2 y capa 3.

Para la conexión con Google, el paquete IP de Capa 3, será inicialmente para Google:

IP origen: 192.168.1.20
IP destino: 142.250.79.100

Mientras que para YouTube será:

IP origen: 192.168.1.20
IP destino: 142.250.184.78

En capa 2 

Sin embargo, para transportar esos paquetes sobre la LAN Ethernet, la computadora necesita conocer la dirección MAC de su siguiente salto, es decir, la MAC del router.

Supongamos:

MAC PC: 00:11:22:33:44:55

MAC Router LAN: AA:AA:AA:AA:AA:01

Si la computadora todavía no conoce esa dirección MAC, utiliza ARP para averiguarla. Una vez obtenida, las tramas Ethernet enviadas hacia ambos destinos tendrán inicialmente:

MAC origen: 00:11:22:33:44:55

MAC destino: AA:AA:AA:AA:AA:01

Dentro de esas tramas Ethernet se transportan los respectivos paquetes IP.

Importante:

  • Es importante observar que la computadora no necesita conocer la dirección MAC de Google ni la de YouTube. Solo necesita conocer la dirección MAC del dispositivo que constituye su próximo salto: el router.
  • Ver que las dos tramas, la que va con destino a Youtube y Google NO se diferencian en capa 2, son iguales, solo el contenido de capa 3 es diferente.

Pero todavía debemos incorporar un elemento fundamental: los números de puerto.

Puertos de transporte y puertos efímeros

Cuando el navegador inicia una conexión hacia un servidor web HTTPS, el destino normalmente utiliza el puerto TCP 443 que corresponde a un servicio HTTPS.

La computadora, sin embargo, no puede utilizar simplemente:

192.168.1.20:??? → Google:443

El sistema operativo selecciona entonces un puerto efímero, es decir, un número de puerto temporal utilizado para identificar la conexión desde el lado cliente.

Supongamos que para la pestaña de Google el sistema operativo selecciona el puerto efímero: 51500

Entonces la conexión podría representarse como:

192.168.1.20:51500 → 142.250.79.100:443  (4-tupla) 

Para la conexión hacia YouTube podría utilizar otro puerto efímero, por ejemplo: 51501

Por lo tanto:

192.168.1.20:51501 → 142.250.184.78:443

Ahora ambas conexiones pueden coexistir aun cuando proceden de la misma computadora y utilizan la misma dirección IP de origen.

Esto ocurre porque una conexión TCP no queda identificada únicamente por las direcciones IP, sino por la combinación de direcciones IP y números de puerto (4-tupla) 

Nota :  Ver que  NO decimos SOCKET, nos referimos como 4-tupla, ¿por qué? 

Rta: el router PAT no actúa como endpoint TCP. No responde al SYN en nombre de YouTube ni genera un nuevo SYN hacia YouTube. Simplemente modifica determinados campos de los paquetes que atraviesan el router y mantiene estado sobre esa traducción, por eso no lo llamamos SOCKET, nos referimos como 4-tupla,  es una diferencia sutil que no hace una diferencia al entender el funcionamiento, pero necesitamos diferenciarla.

De manera simplificada, una conexión TCP puede identificarse mediante la denominada 4-tupla:

IP origen, puerto origen, IP destino, puerto destino  (4-tupla) 

Por ejemplo:

Google:

192.168.1.20 : 51500 → 142.250.79.100 : 443

YouTube:

192.168.1.20 : 51501 → 142.250.184.78 : 443

Aunque ambas conexiones parten desde la misma computadora, resultan completamente diferentes para la pila TCP/IP.

Llegada al router y funcionamiento de PAT

Cuando estos paquetes llegan al router, aparece otro problema.

La dirección:  192.168.1.20  es una dirección IP privada perteneciente al espacio definido para redes internas y no puede ser encaminada globalmente a través de Internet.

El router deberá sustituirla por su dirección IP pública: 181.30.40.50

Si simplemente reemplazara la dirección IP privada por la pública estaríamos hablando conceptualmente de NAT (por que hasta aquí NO hay puertos !!, solo direcciones)

Sin embargo, en una red doméstica o empresarial normalmente hay muchos dispositivos utilizando simultáneamente una única dirección IP pública.

Para resolver este problema se utiliza PAT, Port Address Translation, también denominado frecuentemente NAPT, Network Address and Port Translation (aquí hay puertos !!)

PAT no solamente modifica la dirección IP, sino que puede modificar también el número de puerto de origen.

Para Google antes  del router:

 192.168.1.20:51500 → 142.250.79.100:443

Después del router:

181.30.40.50:61000 → 142.250.79.100:443

Y para YouTube, antes del router:

192.168.1.20:51501 → 142.250.184.78:443

Después del router:

181.30.40.50:61001 → 142.250.184.78:443

El router registra estas conversiones en una tabla interna de NAT/PAT. Notar que al cambiar parte de la cabecera , por ejemplo direcciones IP, el router DEBE realizar nuevamente el cálculo del CRC!.

Podríamos representar una parte de esa tabla así:

IP privada Puerto privado IP pública Puerto público Destino Puerto destino
192.168.1.20 51500 181.30.40.50 61000 142.250.79.100 443
192.168.1.20 51501 181.30.40.50 61001 142.250.184.78 443

Esta tabla es fundamental , gracias a ella, cuando llegan respuestas desde Internet, el router puede determinar qué host interno y qué conexión originaron cada comunicación.

Notar que esta tabla en el Router contiene una entrada por cada una de la aplicaciones o pestañas de cada uno de los equipos de la red local !!

Cambio de direcciones de capa 2

Una vez realizada la traducción PAT, el router debe enviar el paquete hacia Internet. El encabezado Ethernet utilizado en la LAN ya no sirve para el enlace siguiente.

La trama original era aproximadamente: MAC PC → MAC Router

El router elimina ese encabezado de capa 2. Luego consulta su tabla de encaminamiento y determina cuál es el próximo salto hacia Internet.

Finalmente construye una nueva trama correspondiente a su interfaz WAN usando la MAC de la interfaz del router, recordar que en general un router  podría tener varias interfaces WAN, no es así el router del ISP de la casa de un abonado, por ejemplo, donde siempre hay solo una.

Conceptualmente podríamos tener: MAC Router-WAN → MAC siguiente salto

Dentro de esa nueva trama se encuentra ahora el paquete IP modificado por PAT: 181.30.40.50:61000 → 142.250.79.100:443

Esto permite destacar una diferencia esencial.

Las direcciones MAC tienen significado local al enlace. No viajan intactas desde la computadora del usuario hasta Google. 

Cada router recibe una trama, elimina el encabezado de capa 2, procesa el paquete de capa 3 y genera una nueva trama para el enlace siguiente.

Por lo tanto:

  • las direcciones MAC cambian en cada salto de capa 2.
  • Las direcciones IP, en cambio, permiten identificar origen y destino a través de múltiples redes.

En este ejemplo, con IPv4, se puede observar la modificación adicional en capa 3 debido a NAT/PAT:

192.168.1.20 → 181.30.40.50

 

Respuesta desde Google

Supongamos ahora que Google responde a la conexión. Desde el punto de vista del servidor Google, el cliente no es: 192.168.1.20:51500

Google nunca recibió esa dirección. El servidor observa como origen de la conexión:

181.30.40.50:61000

Por lo tanto, responde: 142.250.79.100:443 → 181.30.40.50:61000

Cuando ese paquete llega al router, este consulta su tabla PAT. Encuentra una entrada que indica:

181.30.40.50:61000 ↔ 192.168.1.20:51500

Por lo tanto modifica el paquete que ingresa cambiando la dirección y pueto de destino a 192.168.1.20:51500 :

142.250.79.100:443 → 192.168.1.20:51500

Luego debe enviarlo dentro de la LAN. Para ello necesita nuevamente una dirección de capa 2. Si conoce la MAC de 192.168.1.20 en su tabla ARP, genera una trama: MAC Router LAN → MAC PC

es decir: AA:AA:AA:AA:AA:01 → 00:11:22:33:44:55

Finalmente, el sistema operativo de la computadora observa que el paquete TCP tiene como puerto destino: 51500 y lo entrega al socket correspondiente a la conexión con Google.

Respuesta desde Youtube

Para YouTube se producirá un proceso equivalente, solo que se puede observar que el puerto de destino es distinto al igual que la IP de origen, esto permite que vaya esa trama a la pestaña correspondiente del navegador.

La respuesta podría llegar como: 142.250.184.78:443 → 181.30.40.50:61001

El router consulta su tabla PAT y determina: 181.30.40.50:61001 ↔ 192.168.1.20:51501

Por lo tanto, la transforma en: 142.250.184.78:443 → 192.168.1.20:51501

El sistema operativo recibe el paquete y, gracias al puerto 51501, puede asociarlo con la conexión correspondiente a YouTube.

¿Qué ocurriría con varias computadoras?

Aquí se aprecia todavía mejor la utilidad de PAT.

Supongamos que existe otra computadora en la misma LAN:  192.168.1.30

Esta computadora también podría elegir casualmente el puerto efímero 51500 para conectarse a Google.

Tendríamos:

PC1:

192.168.1.20:51500 → Google:443

PC2:

192.168.1.30:51500 → Google:443

El router puede asignar distintos puertos públicos:

192.168.1.20:51500 → 181.30.40.50:61000

192.168.1.30:51500 → 181.30.40.50:61002

Desde Internet, ambas comunicaciones parecen provenir de la misma dirección IP:

181.30.40.50

pero utilizan distintos números de puerto.

Ésta es precisamente una de las funciones más importantes de PAT: permitir que muchos equipos de una red privada compartan simultáneamente una única dirección IPv4 pública.

Resumen del proceso

Podemos observar la comunicación desde tres niveles diferentes.

En capa 2, dentro de la LAN:

MAC PC → MAC Router

En capa 3, antes de NAT:

192.168.1.20 → IP Google

En capa 4:

51500 → 443

Después de atravesar el router PAT:

En capa 3:

181.30.40.50 → IP Google

En capa 4:

61000 → 443

Por lo tanto, una conexión podría representarse completamente como:

192.168.1.20:51500

181.30.40.50:61000

142.250.79.100:443

Mientras que simultáneamente otra conexión desde la misma computadora podría ser:

192.168.1.20:51501

181.30.40.50:61001

142.250.184.78:443

Este ejemplo permite apreciar cómo trabajan conjuntamente distintas capas del modelo de comunicaciones.

Ethernet y las direcciones MAC permiten transportar una trama hasta el siguiente dispositivo dentro de un enlace local.

IP permite encaminar paquetes entre diferentes redes.

TCP y sus números de puerto permiten identificar múltiples comunicaciones y aplicaciones simultáneas dentro de un mismo host.

PAT permite que muchas de esas comunicaciones, incluso provenientes de distintos equipos privados, compartan una única dirección IPv4 pública.