Ci sono molti livelli in questo. E, soprattutto, molti di loro sono intercambiabili.
Ad esempio, puoi avere una rete via cavo coassiale, una Ethernet o una rete Wi-Fi a livello fisico. HTTP funziona sopra a tutti questi, ma ognuno di essi ha una gestione leggermente diversa del payload che viene inviato in giro.
HTTP funziona su un altro protocollo, chiamato TCP, che a sua volta funziona più o meno su un altro protocollo, chiamato IP (oggi principalmente in due varianti: IPv4 e IPv6).
Quindi il server HTTP registra un indirizzo IP (come 184.38.45.1
, o molto spesso "qualsiasi"), insieme a una porta TCP (che 80
è l'impostazione predefinita per HTTP, ma in generale qualsiasi cosa da 1
a 65535
), con il sistema operativo. Ora, il server HTTP dice al SO di eseguire il ping quando arrivano i dati (o un altro messaggio). Il sistema operativo sa quando ciò accade, perché il driver della scheda di interfaccia di rete lo dice. E il driver della scheda di rete è indicato dalla scheda di rete stessa, che in realtà ha il proprio software per interpretare i segnali elettrici sul cavo di rete (o i segnali wireless nell'aria, ecc., Si ottiene l'idea).
Nota a margine :
Se vuoi sapere di più su come la scheda di rete può avviare la comunicazione con il driver / sistema operativo, potresti voler cercare alcune informazioni di base sugli interrupt di processo - in pratica, qualunque cosa la CPU stia attualmente facendo viene interrotta e il flusso del programma passa a un interrupt routine del gestore - un pezzo di codice estremamente semplice che si occupa di notificare il sistema e quindi restituisce immediatamente il controllo alla cosa originale che stava facendo la CPU. In effetti, potrebbe rispondere a molte domande sul funzionamento interno del sistema operativo e del computer stesso, ad esempio come un sistema operativo può "rubare" la CPU dalle applicazioni in esecuzione e mescolare le risorse della CPU tra diverse applicazioni in esecuzione contemporaneamente, anche se non collaborano.
Ritornare agli Affari:
Nell'analogia manuale del telefono, immagina che il telefono in realtà non squilli. Per sapere se stai tentando una telefonata, dovrai guardare lo schermo periodicamente e controllare. Per semplificare la gestione del server HTTP (poiché esistono già alcuni layer che eseguono tale controllo periodico), puoi effettivamente bloccare il tentativo di controllo.
Quindi, invece di controllare, vedendo che non c'è nulla e ricontrollare, in pratica continui a guardare lo schermo tutto il tempo. Tuttavia, in pratica hai un sistema completamente separato per gestirlo (nel tuo caso, il centro uditivo, che controlla le vibrazioni dell'aria per informazioni utili, l'anello), quindi non richiede effettivamente la tua attenzione (tempo della CPU).
Ciò è ulteriormente migliorato da tecniche che consentono di monitorare più connessioni contemporaneamente (IOCP). Questo si avvicina sempre di più al sistema di suoneria del telefono: hai una stanza con diecimila telefoni, ma ti importa solo di quelli che stanno suonando al momento, gli altri non stanno attirando la tua attenzione.