Hay muchas capas en esto. Y lo más importante, muchos de ellos son intercambiables.
Por ejemplo, puede tener una red de cable coaxial, un ethernet o un Wi-Fi inactivo en el nivel físico. HTTP funciona además de todos ellos, pero cada uno de ellos tiene un manejo ligeramente diferente de la carga útil que se envía.
HTTP funciona sobre otro protocolo, llamado TCP, que a su vez se ejecuta más o menos sobre otro protocolo, llamado IP (hoy en día principalmente en dos variantes: IPv4 e IPv6).
Por lo que el servidor HTTP registra una dirección IP (como 184.38.45.1
, o más a menudo "cualquiera"), junto con un puerto TCP ( 80
siendo el valor por defecto para HTTP, pero en general todo de 1
a 65535
), con el sistema operativo. Ahora, el servidor HTTP le dice al sistema operativo que haga ping cuando lleguen datos (u otro mensaje). El sistema operativo sabe cuándo sucede eso, porque el controlador de la tarjeta de interfaz de red lo dice. Y el controlador de la NIC es informado por la propia NIC, que en realidad tiene su propio software para interpretar las señales eléctricas en el cable de red (o las señales inalámbricas en el aire, etc., se entiende).
Nota al margen :
Si desea saber más acerca de cómo la NIC puede iniciar la comunicación con el controlador / sistema operativo, es posible que desee buscar información básica sobre las interrupciones de hardware, básicamente, se detiene todo lo que la CPU está haciendo actualmente y el flujo del programa cambia a una interrupción rutina de controlador: un código extremadamente simple que se encarga de notificar al sistema y luego devuelve inmediatamente el control a lo que estaba haciendo la CPU. De hecho, podría responder muchas preguntas sobre el funcionamiento interno del sistema operativo y la computadora en sí, como cómo un sistema operativo puede "robar" la CPU de las aplicaciones en ejecución y mezclar los recursos de la CPU entre diferentes aplicaciones que se ejecutan al mismo tiempo, incluso si no cooperan.
De vuelta a los negocios:
En la analogía de su teléfono manual, imagine que su teléfono no suena realmente. Para saber si está intentando realizar una llamada telefónica, deberá mirar la pantalla periódicamente y verificar. Para que sea más fácil de administrar para el servidor HTTP (dado que ya hay bastantes capas que realizan esa verificación periódica), puede bloquear el intento de verificación.
Entonces, en lugar de verificar, ver que no hay nada allí y volver a verificar, básicamente sigue mirando la pantalla todo el tiempo. Sin embargo, básicamente tiene un sistema completamente separado para manejar esto (en su caso, el centro de audición, que verifica las vibraciones del aire para obtener información útil, el anillo), por lo que en realidad no requiere su atención (tiempo de CPU).
Esto se mejora aún más mediante técnicas que le permiten monitorear muchas conexiones a la vez (IOCP). Esto se acerca cada vez más al sistema de timbre del teléfono: tiene una habitación con diez mil teléfonos, pero solo le importan los que están sonando en este momento, los otros no le están prestando atención.