На це багато шарів. І що важливо, багато з них взаємозамінні.
Наприклад, ви можете мати коаксіальну кабельну мережу, Ethernet або Wi-Fi на фізичному рівні. HTTP працює над усіма ними, але кожен з них має дещо інше обробку корисного навантаження, що надсилається навколо.
HTTP працює над іншим протоколом під назвою TCP, який, у свою чергу, більш-менш працює над ще одним протоколом, який називається IP (нині здебільшого у двох варіантах - IPv4 та IPv6).
Таким чином, сервер HTTP реєструє IP-адресу (як 184.38.45.1
, або найчастіше "будь-яку"), а також TCP-порт ( 80
який є типовим для HTTP, але взагалі все, що 1
стосується 65535
), в операційній системі. Тепер сервер HTTP повідомляє ОС, щоб він пінговував, коли дані (або інше повідомлення) надходять. ОС знає, коли це станеться, тому що це говорить драйвер мережевого інтерфейсу. А про драйвер NIC розповідає сам NIC, який насправді має власне програмне забезпечення для інтерпретації електричних сигналів по мережевому кабелю (або бездротових сигналів у повітрі тощо, ви розумієте).
Бічна примітка :
Якщо ви хочете дізнатися більше про те, як NIC може ініціювати зв’язок з драйвером / ОС, вам може знадобитися пошук деякої основної інформації про апаратні переривання - в основному все, що в даний час працює процесор, зупинено, і потік програми переходить на переривання рутинна обробка - надзвичайно простий фрагмент коду, який піклується про сповіщення системи, а потім негайно повертає контроль назад до оригінальної речі, яку робив процесор. Насправді це може відповісти на безліч запитань щодо внутрішньої роботи ОС та самого комп’ютера - як, наприклад, як операційна система може «викрасти» ЦП із запущених програм і перемістити ресурси CPU між різними програмами, що працюють одночасно, навіть якщо вони не співпрацюють.
Повернутися до бізнесу:
У ручній аналогії телефону, уявіть, що телефон насправді не дзвонить. Щоб знати, чи є у вас спроба телефонного дзвінка, вам доведеться періодично дивитися на екран і перевіряти. Щоб зробити це простішим керуванням для HTTP-сервера (оскільки там вже досить багато шарів, які роблять цю періодичну перевірку), ви можете фактично заблокувати при спробі перевірки.
Тож замість того, щоб перевірити, побачивши, що там нічого немає, і ще раз перевірити, ви в основному постійно дивитесь на екран. Однак у вас є ціла окрема система для вирішення цього питання (у вашому випадку слуховий центр, який перевіряє коливання повітря на корисну інформацію, дзвінок), тому він насправді не потребує вашої уваги (час процесора).
Це ще більше вдосконалюється методами, які дозволяють відстежувати багато з'єднань одночасно (IOCP). Це стає все ближче і ближче до системи телефонних дзвінків - у вас є кімната з десятьма тисячами телефонів, але ви дбаєте лише про ті, які дзвонять на даний момент, інші не привертають вашої уваги.