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?
- 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:
- 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.
- 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.
- 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.
- 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’.
- 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).