Il y a beaucoup de couches à cela. Et surtout, beaucoup d'entre eux sont interchangeables.
Par exemple, vous pouvez avoir un réseau à câble coaxial, un Ethernet ou un Wi-Fi au niveau physique. HTTP fonctionne en plus de tous ceux-ci, mais chacun d'eux a une gestion légèrement différente de la charge utile envoyée.
HTTP fonctionne au-dessus d'un autre protocole, appelé TCP, qui à son tour tourne plus ou moins au-dessus d'un autre protocole, appelé IP (de nos jours principalement en deux variantes - IPv4 et IPv6).
Ainsi, le serveur HTTP enregistre une adresse IP (comme 184.38.45.1
, ou le plus souvent "n'importe laquelle"), ainsi qu'un port TCP (qui 80
est la valeur par défaut pour HTTP, mais en général n'importe quoi de 1
à 65535
), avec le système d'exploitation. À présent, le serveur HTTP indique au système d'exploitation de lui envoyer une requête ping lorsque des données (ou un autre message) arrivent. Le système d'exploitation sait quand cela se produit, car le pilote de la carte d'interface réseau le lui dit. Et le pilote NIC est informé par le NIC lui-même, qui a en fait son propre logiciel pour interpréter les signaux électriques sur le câble réseau (ou les signaux sans fil dans l'air, etc., vous avez l'idée).
Note latérale :
Si vous souhaitez en savoir plus sur la façon dont la carte réseau peut initier la communication avec le pilote / système d'exploitation, vous pouvez rechercher des informations de base sur les interruptions matérielles - en gros, tout ce que le processeur fait actuellement est arrêté et le flux du programme passe à une interruption routine de gestionnaire - un morceau de code extrêmement simple qui s'occupe de notifier le système, puis renvoie immédiatement le contrôle à la chose d'origine que le CPU faisait. En fait, cela pourrait vous répondre à de nombreuses questions sur le fonctionnement interne du système d'exploitation et de l'ordinateur lui-même - comme la façon dont un système d'exploitation peut "voler" le processeur des applications en cours d'exécution et mélanger les ressources du processeur entre les différentes applications exécutées en même temps, même s'ils ne coopèrent pas.
De retour aux affaires:
Dans votre analogie téléphonique manuelle, imaginez que votre téléphone ne sonne pas réellement. Pour savoir si vous avez une tentative d'appel téléphonique, vous devrez regarder l'écran régulièrement et vérifier. Pour rendre cela plus facile à gérer pour le serveur HTTP (car il y a déjà pas mal de couches qui font cette vérification périodique), vous pouvez réellement bloquer la tentative de vérification.
Donc, au lieu de vérifier, de voir qu'il n'y a rien et de vérifier à nouveau, vous continuez à regarder l'écran tout le temps. Cependant, vous avez essentiellement un système complètement séparé pour gérer cela (dans votre cas, le centre auditif, qui vérifie les vibrations de l'air pour des informations utiles, l'anneau), donc il ne nécessite pas réellement votre attention (temps CPU).
Ceci est encore amélioré par des techniques qui vous permettent de surveiller de nombreuses connexions à la fois (IOCP). Cela se rapproche de plus en plus du système de sonnerie téléphonique - vous avez une salle avec dix mille téléphones, mais vous ne vous souciez que de ceux qui sonnent en ce moment, les autres ne retiennent pas votre attention.