nmk

Лекція №1 (4 години). Архітектура WWW та протоколи передачі даних

План лекції

  1. Глобальна інфраструктура
  2. Клієнт-серверна парадигма та модель взаємодії
  3. Анатомія HTTP-повідомлень (Методи та Статус-коди)
  4. Семантичний Веб (Web 3.0) та Децентралізація (Web3)

Перелік умовних скорочень

Вступ

Веб-розробка — це складна інженерна дисципліна, що виходить далеко за межі простого знання мов програмування чи інструментів розмітки. Це створення інформаційних взаємодій, в основі яких лежить надійна, гнучка та стандартизована архітектура: архітектура Всесвітньої павутини (World Wide Web або WWW) та її фундамент — Інтернет.

Інтернет — це глобальна комп’ютерна мережа, яка з’єднує мільйони локальних і регіональних мереж (“апаратна” складова), тоді як Всесвітня павутина (WWW) — це система гіпертекстових документів, що знаходяться в цій мережі (“програмна” або “інформаційна” складова). Для того, щоб веб-розробник міг створювати дійсно швидкі, безпечні та надійні додатки, йому життєво необхідно розуміти, як ці дві складові взаємодіють. Розуміння фундаментальних принципів передачі даних в Інтернеті — це база для оптимізації швидкості завантаження, побудови надійної архітектури API, безпечної передачі конфіденційних даних та вирішення найрізноманітніших технічних проблем, що виникають в процесі розробки.

1. Глобальна інфраструктура

Інтернет працює як сукупність мереж, які взаємодіють за єдиними правилами. Цю архітектуру часто описують багаторівневими моделями, найвідомішими з яких є модель OSI (7 рівнів) та стек протоколів TCP/IP (4 рівні). Сучасний інтернет у переважній більшості базується на моделі TCP/IP, яка є більш практичною:

  1. Рівень мережевого доступу (Network Access/Link Layer): Відповідає за фізичну передачу даних (Ethernet, Wi-Fi, MAC-адреси).
  2. Міжмережевий рівень (Internet Layer): Ключовий рівень, який відповідає за логічну адресацію та маршрутизацію. Головний протокол — IP (Internet Protocol) (IPv4 або IPv6). Він доставляє пакети даних від комп’ютера А до комп’ютера Б, де б вони не знаходились.
  3. Транспортний рівень (Transport Layer): Відповідає за передачу даних між конкретними програмами (процесами).
    • TCP (Transmission Control Protocol): Гарантує доставку без втрат і в правильному порядку. Використовується для WWW (HTTP), електронної пошти (SMTP). Він створює сесію, розбиває дані на пакети, стежить, щоб вони всі дійшли і “зшиває” їх назад.
    • UDP (User Datagram Protocol): Не гарантує доставку (пакети можуть губитися), зате працює дуже швидко. Ідеальний для стрімінгу відео, голосового зв’язку чи онлайн-ігор.
  4. Прикладний рівень (Application Layer): Тут працюють програми та їх логіка. Тут знаходяться протоколи:
    • HTTP/HTTPS — для веб-сторінок.
    • DNS — для розпізнавання імен.
    • FTP — передача файлів.

Порти: Коли комп’ютер отримує TCP пакет, як він розуміє, якій програмі його віддати (браузеру чи поштовому клієнту)? Для цього існують порти — числові ідентифікатори процесів (від 0 до 65535).

Практика: Ви можете побачити всі відкриті порти та програми, які їх використовують, на своєму комп’ютері. Відкрийте командний рядок (Terminal/CMD) і введіть команду netstat -ano (Windows) або lsof -i -P -n (Mac/Linux). Ви побачите список IP-адрес і портів, які зараз “слухає” ваша система. Практика: Ви можете побачити всі відкриті порти та програми, які їх використовують, на своєму комп’ютері. Відкрийте командний рядок (Terminal/CMD) і введіть команду netstat -ano (Windows) або lsof -i -P -n (Mac/Linux). Ви побачите список IP-адрес і портів, які зараз “слухає” ваша система.

2. Клієнт-серверна парадигма та модель взаємодії

Архітектура веб-додатків більшою частиною спирається на клієнт-серверну модель. Це розподілена архітектура, в якій є клієнт, що робить запит на послуги (або ресурси), і сервер, який надає (обслуговує) ці запити.

2.1 Розподіл обов’язків у клієнт-серверній архітектурі

Сучасний веб еволюціонує: якщо раніше сервери генерували готові HTML сторінки (Server-Side Rendering — SSR, на базі PHP/Java), то зараз все частіше сервер виступає лише в ролі “API” (віддає сухі дані у форматі JSON), а клієнтський браузер за допомогою JavaScript (React, Vue, Angular) самостійно “будує” HTML на їх основі (Client-Side Rendering — CSR). Це називається архітектура Single Page Application (SPA).

2.2 Система доменних імен (DNS)

Коли ви вводите https://blog.google.com, ваш комп’ютер не знає, де знаходиться цей сервер. Протокол IP працює тільки з числовими IP-адресами (наприклад 142.250.217.206). DNS (Domain Name System) — це як “телефонна книга” інтернету.

Доменне ім’я читається зліва направо (від найвищого рівня до найнижчого) і має чітку ієрархію:

  1. . (Root Domain): Нульовий рівень. Усі домени неявно закінчуються крапкою.
  2. .com, .org, .ua (TLD - Top Level Domain): Домен першого рівня. Вказує на географічну або організаційну приналежність.
  3. google, wikipedia (SLD - Second Level Domain): Домен другого рівня. Власне унікальне ім’я компанії чи організації.
  4. blog, mail, www (Subdomain): Піддомен (домен третього рівня). Використовується для логічного поділу великого сайту на частини.

Процес (DNS Resolution - як ми знаходимо IP):

  1. Браузер спочатку перевіряє свій власний кеш і кеш ОС (файл hosts, де можна локально “підмінити” IP-адресу).
  2. Якщо не знаходить, ОС запитує DNS-сервіс інтернет-провайдера (ISP) (або ті, що вказані в налаштуванні роутера, як-от 8.8.8.8 Google).
  3. Якщо і там немає — сервер провайдера починає послідовне опитування:
    • Root DNS Server: “Де знаходяться сервери, що відповідають за зону .com?”
    • TLD (Top-Level Domain) Server: Отримавши IP серверів зони .com, питає: “Хто відповідає за домен google.com?”
    • Authoritative Name Server: Отримавши адресу авторитетного сервера Google, питає “Дай мені точний IP для субдомену blog.google.com”.
  4. Точна IP-адреса повертається браузеру і починається встановлення TCP з’єднання (TCP Handshake).

Цей шлях зазвичай займає від 10 до 100 мілісекунд, але саме ця система дозволяє нам запам’ятовувати зручні імена (домени), замість довгих беззмістовних чисел.

2.3 Еволюція протоколів HTTP від 1.1 до 3

Основою WWW є протокол HTTP (Hypertext Transfer Protocol). З часом він розвивався, вирішуючи проблеми продуктивності “важкого” вебу.

3. Анатомія HTTP-повідомлень (Методи та Статус-коди)

HTTP є “stateless” протоколом — протоколом без збереження стану. Це означає, що кожен запит від клієнта до сервера не пов’язаний з попереднім. Сервер “не пам’ятає” вас (це робиться штучно через Cookies та сесії). Дані передаються у формі “Повідомлень” (“Запит” від клієнта та “Відповідь” від сервера).

3.1 Методи запиту та їх семантика

Кожен HTTP-запит має метод — дієслово в наборі команд, що позначає намір клієнта. В архітектурі REST API ці методи зіставляються з діями CRUD (Create, Read, Update, Delete):

3.2 Класифікація статус-кодів відповідей

Коли сервер формує відповідь, обов’язковим її елементом є тризначний числовий код статусу (Status Code). Він дозволяє браузеру дуже швидко зрозуміти результат операції. Розуміння цих кодів для веб-розробника при дебагінгу є обов’язковим.

Як побачити статус-коди самостійно: У будь-якому сучасному браузері відкрийте Developer Tools (Інструменти розробника, клавіша F12 або Ctrl+Shift+I), перейдіть на вкладку Network (Мережа) та оновіть сторінку. Ви побачите водоспад з десятків запитів (документ HTML, CSS файли, картинки, скрипти). У колонці “Status” буде чітко видно числові коди — 200 (зелені), 304 (взяті з кешу), або червоні (404, якщо картинку не знайдено). Клікнувши на будь-який запит, у розділі “Headers” ви побачите повну анатомію: URL, метод, заголовки Відповіді та Запиту.

3.3 Життєвий цикл HTTP-запиту

Давайте складемо все докупи, зімітувавши введення https://www.example.com у ваш браузер:

  1. Браузер “парсить” URL і виокремлює протокол (https), домен (www.example.com).
  2. Браузер використовує DNS, щоб дізнатися IP-адресу сервера. (Наприклад, 192.0.2.1).
  3. Оскільки використовується HTTPS, браузер ініціює TCP з’єднання на порт 443 серверу 192.0.2.1 (TCP 3-way Handshake).
  4. Здійснюється TLS Handshake: Клієнт і Сервер узгоджують ключі шифрування, щоб ніхто не міг перехопити дані по дорозі (захист від Man-in-the-Middle атак).
  5. Браузер формує та шифрує HTTP Request (Метод GET / HTTP/1.1) та надсилає інформацію про себе (User-Agent, підтримувані формати).
  6. Сервер отримує зашифрований пакет, розшифровує, виконує свою логіку (знаходить в папці чи генерує файл index.html).
  7. Сервер формує та шифрує HTTP Response (HTTP/1.1 200 OK зі вбудованою сторінкою HTML).
  8. Браузер отримує відповідь, закриває з’єднання (або тримає його відкритим за стандартом HTTP/1.1+ (Keep-Alive)) та починає читати HTML код (рендерити сторінку, малювати CSS).

4. Семантичний Веб (Web 3.0) та Децентралізація (Web3)

Історія розвитку “Вебу” часто ділиться на кілька ключових етапів. З урахуванням того, як швидко змінюються технології, важливо розуміти фундаментальні концепції, що стоять за новими етапами розвитку Інтернету.

4.1 Semantic Web

Концепція Web 3.0, (іноді називається Семантичною Павутиною — Semantic Web) фокусується на значенні або семантиці інформації. Її головна ідея: Комп’ютери повинні не просто передавати та малювати інформацію (текст і картинки), але і розуміти її зміст так само глибоко, як і люди.

Це дозволяє пошуковим системам, голосовим асистентам (Siri/Alexa) та штучному інтелекту зв’язувати розрізнені дані по всьому Інтернету в “Граф знань” (Knowledge Graph) і давати точні та персоналізовані відповіді на складні запитання. Еволюція AI, яка відбувається зараз, є апогеєм реалізації бачення Семантичного Вебу.

4.2 Web3 децентралізація та Блокчейн

Термін “Web3” (написання без пробілу та нулів) зазвичай використовується у контексті Децентралізованого Інтернету, заснованого на технологіях блокчейну. Основа сучасного Інтернету Web 2.0 (Google, Meta, Amazon) має недолік — централізація даних на серверах корпорацій. Web3 пропонує зміну парадигми:

Незважаючи на високу спеціалізацію цих технологій, базові протоколи HTTP/HTTPS залишаються транспортом для комунікації додатків як у Semantic Web, так і в епосі блокчейну.

Висновки

Інтернет та Всесвітня павутина працюють завдяки чіткій та багатошаровій системі протоколів: від фізичної передачі IP-адрес до високорівневого розуміння текстових повідомлень HTTP-сервером. Фундамент сучасного клієнт-серверного зв’язку базується на методах (зрозумілих дієсловах типу GET/POST) та статус-кодах відповіді. Знання цього “життєвого циклу” — це найнадійніша інвестиція в компетентність розробника, адже ці стандарти не змінюються щодня, на відміну від JavaScript фреймворків чи CSS препроцесорів.

Джерела

  1. MDN Web Docs: An overview of HTTP (https://developer.mozilla.org/en-US/docs/Web/HTTP/Overview)
  2. High Performance Browser Networking by Ilya Grigorik (Чудова книга від експерта Google про архітектуру мереж) (https://hpbn.co/).
  3. Офіційна документація MDN: HTTP status codes (https://developer.mozilla.org/en-US/docs/Web/HTTP/Status)
  4. Cloudflare Learning Hub: Що таке DNS? (https://www.cloudflare.com/learning/dns/what-is-dns/)
  5. Як працює Web: Mozilla Developer Network (https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/How_the_Web_works)

Запитання для самоперевірки

  1. В чому різниця між поняттями Інтернет (Internet) та Всесвітня Павутина (WWW)?
  2. Чому протокол TCP/IP називають “надійним”, а UDP — “швидким”? Де саме використовуються ці два підходи?
  3. Опишіть процес розпізнавання доменного імені за допомогою DNS (від кешу браузера до Root-серверів).
  4. Яка проблема протоколу HTTP/1.1 була вирішена за рахунок впровадження мультиплексування в HTTP/2? Які переваги дає HTTP/3 порівняно з TCP-протоколами?
  5. Поясніть відмінність між HTTP-методами POST та PUT в контексті дій.
  6. Що означають групи статус-кодів 2xx, 3xx, 4xx і 5xx? Яка ключова різниця між 401 та 403?
  7. Чим ідея “Semantic Web (Web 3.0)” (базується на розумінні змісту через мікродані та AI) відрізняється від парадигми “децентралізованого Web3” (сучасний контекст блокчейну)?