¿Cómo viaja Data Packet a través de Internet?

Trataré de explicar con un ejemplo: ¿qué sucede cuando un Host-A solicita una página web ‘www.google.com’ a través de una aplicación de navegador?

  1. El host-A primero debe resolver ‘www.google.com’ en una dirección IP (gethostbyname). El Host-A prepara un paquete DNS (protocolo UDP) con la dirección IP de destino como servidor de nombres (Esta es una dirección IP DNS dada por el servidor DHCP y almacenada en /etc/resolv.conf). Para que se envíe un paquete UDP / IP, debe tener srcIP, dstIP, srcPort, dstPort, srcMac, dstMac … Ya sabes lo que es srcIP, dstIP, srcPort, dstPort, srcMac. Pero necesitas encontrar un dstMac. El paquete DNS se pondrá en espera hasta que se encuentre dstMac utilizando el protocolo ARP. Aquí hay dos casos:
    1. dstIp y srcIp están en la misma subred (el conmutador puentea el paquete). El Host-A enviará una transmisión ARP en el dominio de transmisión local y el servidor de nombres responderá con su dirección Mac. Después de encontrar el dstMac, Host-A enviará el paquete de solicitud de DNS al servidor de nombres.
    2. dstIp y srcIp están en una subred diferente (el switch debe enrutar el paquete). El Host-A solo pondrá la dirección mac de la dirección mac del switch / default-gateway y preparará el paquete DNS y lo enviará al switch / default-gateway. Ahora el switch ve que dstMac es su propia dirección mac y pasa el paquete a su capa L3. La capa L3 ahora intenta enrutar este paquete al servidor DNS. Si la dirección MAC no está disponible en la tabla ARP del conmutador, vaya al paso 1a, en este caso el conmutador realizará la transmisión ARP en lugar del Host-A.
    3. Cuando el servidor de nombres recibe la solicitud, busca en su tabla la dirección IP de ‘www.google.com’ y envía la respuesta DNS al Host-A con el mismo proceso que los pasos 1a y 1b.
  2. Una vez que se resuelve la dirección IP de ‘www.google.com’, el Host-A enviará una solicitud HTTP a esta dirección IP. El paquete HTTP se prepara y se pasa al núcleo. La capa TCP (L4) establecerá srcPort, dstPort en el encabezado TCP y pasará a la capa IP (L3). La capa L3 establecerá srcIP y dstIP en el encabezado IP y pasará a la capa L2. La capa L2 necesita configurar srcMac y dstMac en el Encabezado de Ethernet, ahora si no se conoce dstMac de ‘www.google.com’, entonces este paquete HTTP se pone en espera y se envía una solicitud ARP para resolver dstMac, como mencioné en los pasos 1a y 1b. Una vez que se encuentra el dstMac, el paquete HTTP se envía a ‘www.google.com’.
  3. Una vez que el servidor HTTP ‘www.google.com’ recibe la solicitud del Host-A, envía la respuesta con el contenido de la página web al Host-A. (Cuando la solicitud se envió desde el Host-A al servidor, los conmutadores / enrutadores en la ruta habrán aprendido la ruta de regreso al Host-A).

Los primeros datos que desea enviar deben encapsularse como se define a través de la pila ISO / OSI / TCP / IP [y, por lo tanto, las “etiquetas” se agregan secuencialmente a “sus” datos, como el número de puerto, la dirección IP y la dirección MAC]

En aras de la simplicidad, consideremos un solo paquete UDP [los paquetes TCP e ICMP tienen que pasar por el mismo proceso, pero siempre fue más simple para mí si las explicaciones se mantuvieron cortas y sucintas y al menos al principio simples, así que a propósito no va a profundizar en los detalles de la resolución DNS, etc …]

Suponiendo que necesita enviar un paquete desde el host de ip 1.1.1.5 a 2.2.2.2 y tiene un enrutador en su subred con ip de 1.1.1.1.

Primero tiene su marco [sus datos encapsulados hasta la capa 2 de ISO / OSI, el receptor hace la encapsulación en orden inverso subiendo las capas ”

Luego, debe hacer la resolución ARP para la dirección MAC para una IP determinada “que tiene 2.2.2.2” si el host estuviera en su subred local, respondería, de lo contrario, hay muchas posibilidades de que su enrutador responda “hey send que para mí mi dirección MAC es … “. Entonces su host lo enviará con el MAC de origen propio y enrutadores MAC como destino, si hay un interruptor en el camino reenviará la trama al enrutador. Una vez que el enrutador ingrese a su interfaz, el marco de usted eliminará la encapsulación de marco de la capa 2 y verá la dirección IP de la capa 3.

Luego mirará su tabla de enrutamiento para verificar si conoce una ruta a la red [en otras palabras, hay una interfaz que “conduce” directa o indirectamente al destino] a la que pertenece 2.2.2.2. Como probablemente no lo haga, lo más probable es que tenga una puerta de enlace de último recurso que diga “si no conoce la ruta, envíela aquí”.

Lo más probable es que su subred de la vida real tenga una dirección IP local / privada como 10.xxx o 172.16.xx o 192.168.xx
En tal caso, el enrutador haría un paso adicional de NAT, que es eliminar la dirección privada como fuente del paquete y colocar allí su propia dirección como fuente pero pública de Internet y enrutable [para que el paquete tenga como enrutador de origen en lugar de su host cuando otros enrutadores lo vean allá afuera en el mundo. El paquete entrante a su host sufriría un proceso inverso, el enrutador de su subred eliminaría su IP pública del destino y colocaría su IP local allí antes de encapsularla en el marco de ethernet L2 y enviarla a su subred

Los enrutadores generalmente están conectados a largas distancias, por lo que en lugar de usar Ethernet algún tipo de conexión WAN para comunicarse entre sí, en tal caso, la encapsulación de capa inferior es comúnmente PPP.

El siguiente enrutador examinará su tabla de enrutamiento y verá si sabe a dónde enviar el paquete de ip 2.2.2.2. Si no lo hace y no tiene una puerta de enlace de último recurso, soltará el paquete. Lo siento. Pero suponiendo que lo haga, reenviará el paquete a su enrutador vecino que dice que sabe cómo llegar a la red a la que pertenece 2.2.2.2 [perteneciente. Está determinado por la máscara de subred]. Esto se repetirá hasta que finalmente un enrutador diga “¡oye esta subred a la que estoy conectado localmente!” E irá al proceso inverso de lo que su enrutador hizo primero: NAT, luego consulta ARP a la subred “quién tiene ip 2.2.2.2” y luego formará una trama L2 con la dirección MAC dada en la respuesta ARP, la enviará a su interfaz de ethernet local, luego será [probablemente por un interruptor en la subred de destino] enrutada a su host de destino, que desencapsulará los datos hasta ISO / Aplicación de capa 7 OSI.

¡FELICIDADES! ¡Sus datos llegaron a su destino a través de Internet!

Los paquetes de datos generalmente se generan a partir de aplicaciones que tienen la intención de comunicarse con una máquina remota. Dentro de un host, un paquete de datos viaja a través de las capas OSI: aplicación, transporte, IP, enlace de datos y PHY que se envía a través del medio (cables o aire) al siguiente salto. El siguiente salto podría ser un enrutador o un destino. Más comúnmente, será un enrutador cuando intentes llegar a un host remoto.

Una vez que el enrutador recibe el paquete, el paquete se transferirá a su capa de enlace de datos y luego a IP, donde el enrutador determina el siguiente salto para el paquete en función de la tabla de reenvío. Modifica las direcciones MAC de origen y destino y reduce el TTL en 1. El paquete pasa al siguiente salto. De esta manera, viaja hasta llegar a la red IP de destino, donde finalmente se entrega al servidor de destino.

En el servidor de destino, el paquete viaja desde PHY a la capa de aplicación donde finalmente lo recibe la aplicación web que atiende la solicitud.