Un navegador es uno de los programas más complejos que ejecuta un ordenador: traduce URL en píxeles, ejecuta código no fiable y mantiene aisladas páginas web hostiles entre sí. Este artículo recorre el funcionamiento interno de cualquier navegador moderno —Chrome, Firefox, Safari u otros— partiendo de un objetivo claro: comprender los problemas compartidos que todo motor de navegación debe resolver y la arquitectura que los conecta, más allá de las diferencias entre implementaciones concretas.
El texto arranca explicando qué es un navegador y desglosa sus grandes subsistemas: el agente de usuario, la pila de red, el motor de documento, el entorno de ejecución de JavaScript y WebAssembly, el motor de renderizado, la frontera de seguridad entre orígenes, el sistema de almacenamiento y la carcasa de aplicación con pestañas, historial y herramientas de desarrollo. A continuación sigue el ciclo completo de una navegación: interpretación del texto en la barra de direcciones, normalización del URL, comprobaciones de política (HSTS, control parental, extensiones, listas de seguridad, caché, service workers), resolución DNS, negociación TLS/QUIC y envío de la petición HTTP.
El artículo describe después cómo los bytes recibidos se convierten en un documento: análisis de HTML en un árbol DOM, procesamiento de CSS en estilos calculados, cálculo de layout, generación de la lista de pintado, rasterización y composición en la GPU para producir los píxeles finales. Explica también el papel del bucle de eventos en JavaScript, cómo un clic físico se transforma en un evento DOM, la organización en procesos e hilos, los mecanismos de almacenamiento (cookies, localStorage, IndexedDB, credenciales) y los modelos de seguridad que aíslan orígenes. El objetivo es ofrecer un mapa conceptual aplicable a cualquier navegador moderno, con secciones dedicadas a la arquitectura, los protocolos y los compromisos de diseño que rigen su funcionamiento.
