Skip to content

Лекція 37. Сервер і клієнт

Лекція 37. Сервер і клієнт

Section titled “Лекція 37. Сервер і клієнт”

Рівень 6: Мережевий слідопит

Марко, сьогодні ми не просто вивчимо новий термін — ми відкриємо ще один шар того, як насправді працює комп’ютер.

Що ми сьогодні розкриємо

Section titled “Що ми сьогодні розкриємо”
  • зрозуміти ролі client/server
  • побудувати власний локальний HTTP-сервер
  • побачити, як попередні теми складаються в одну систему

Зв’язок з попередніми лекціями

Section titled “Зв’язок з попередніми лекціями”

У цій лекції ми використаємо знання про протоколи з лекції 36, щоб зрозуміти, як клієнт і сервер домовляються про обмін даними.

Client просить, server обслуговує

Section titled “Client просить, server обслуговує”

Клієнт ініціює запит до служби. Сервер слухає й відповідає за правилами протоколу. Це ролі, а не обов’язково різні типи комп’ютерів.

Твій ноутбук може одночасно бути клієнтом Google і сервером для локальної навчальної сторінки.

sequenceDiagram
    participant C as Клієнт (браузер)
    participant S as Сервер (процес, що слухає)

    C->>S: HTTP-запит: "дай сторінку"
    S->>S: Обробляє: знаходить файл
    S-->>C: HTTP-відповідь: статус 200 + сторінка
    C->>C: Показує сторінку

Сервер — це програма, що працює як процес

Section titled “Сервер — це програма, що працює як процес”

Пам’ятаєш лекцію 25? Файл програми не те саме, що процес. HTTP-сервер стає корисним лише коли запущений процес слухає мережеві запити.

Коли процес завершиться, файли сайту залишаться, але ніхто не відповідатиме на HTTP-запити.

localhost дозволяє безпечно тренуватися локально

Section titled “localhost дозволяє безпечно тренуватися локально”

Ми використаємо 127.0.0.1/localhost, тому браузер і сервер працюватимуть на тому самому комп’ютері. Це чудова лабораторія для розуміння мережі без необхідності публікувати щось в Інтернет.

Браузер → клієнт; python3 -m http.server → серверний процес; HTTP → протокол.

Файл index.html — дані, які сервер віддає клієнту.

Якщо сервер зупинити Ctrl+C, оновлення http://localhost:8000 перестане працювати, хоча index.html нікуди не зник.

Linux-лабораторія: твій перший вебсервер

Section titled “Linux-лабораторія: твій перший вебсервер”
Terminal window
mkdir -p ~/marko-lab/web
cd ~/marko-lab/web
printf '<h1>Привіт, Марко!</h1>
<p>Мій локальний сервер працює.</p>
' > index.html
python3 -m http.server 8000 --bind 127.0.0.1

Не закривай цей термінал. У браузері відкрий:

http://localhost:8000/

Або в другому терміналі:

Terminal window
curl http://127.0.0.1:8000/

Заверши сервер Ctrl+C.

Виконай місію по черзі. Якщо щось не виходить — спочатку перечитай приклад вище й спробуй знайти, на якому кроці результат відрізняється.

  1. створи index.html і запусти сервер з прив’язкою до 127.0.0.1
  2. відкрий сторінку браузером
  3. отримай ту саму сторінку через curl
  4. зміни HTML, онови браузер і побач зміни
  5. зупини процес і перевір, що файл лишився, але сервер більше не відповідає
  • Хто ініціює запит — client чи server?
  • Чи обов’язково сервер є окремим фізичним комп’ютером?
  • Який протокол використовує наш приклад?
  • Чому після Ctrl+C файл сторінки не зникає?
  • Навіщо ми використали --bind 127.0.0.1?
  • Клієнт (client) — сторона, що ініціює запит до служби.
  • Сервер (server) — сторона, що слухає й відповідає за правилами протоколу.
  • Порт — «номер кімнати», через який сервер приймає запити.
  • Роль — клієнт або сервер — не обов’язково різні комп’ютери; це спосіб дії.
  • localhost / 127.0.0.1 — адреса «цього самого» комп’ютера для локальних експериментів.
  • HTML-сторінка — документ із розміткою, яку браузер перетворює на візуальну сторінку.

Чек-лист перед наступною лекцією

Section titled “Чек-лист перед наступною лекцією”
  • Чи можеш ти пояснити різницю між клієнтом та сервером?
  • Чи знаєш ти, як запустити простий HTTP-сервер за допомогою Python?
  • Чи розумієш ти, як localhost використовується для локальної розробки?

Що потрібно винести з лекції

Section titled “Що потрібно винести з лекції”
  • client і server — ролі програм у взаємодії
  • сервер — активний процес, а файли сайту — дані
  • localhost дає безпечне середовище для локальних мережевих експериментів

Хакерський принцип: не запам’ятовуй магічні слова. Намагайся пояснити своїми словами, що відбулося і чому.