Лекція 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, тому браузер і сервер працюватимуть на тому самому комп’ютері. Це чудова лабораторія для розуміння мережі без необхідності публікувати щось в Інтернет.
Приклади
Section titled “Приклади”Приклад 1
Section titled “Приклад 1”Браузер → клієнт; python3 -m http.server → серверний процес; HTTP → протокол.
Приклад 2
Section titled “Приклад 2”Файл index.html — дані, які сервер віддає клієнту.
Приклад 3
Section titled “Приклад 3”Якщо сервер зупинити Ctrl+C, оновлення http://localhost:8000 перестане працювати, хоча index.html нікуди не зник.
Linux-лабораторія: твій перший вебсервер
Section titled “Linux-лабораторія: твій перший вебсервер”mkdir -p ~/marko-lab/webcd ~/marko-lab/webprintf '<h1>Привіт, Марко!</h1><p>Мій локальний сервер працює.</p>' > index.htmlpython3 -m http.server 8000 --bind 127.0.0.1Не закривай цей термінал. У браузері відкрий:
http://localhost:8000/Або в другому терміналі:
curl http://127.0.0.1:8000/Заверши сервер Ctrl+C.
Місія для Марка
Section titled “Місія для Марка”Виконай місію по черзі. Якщо щось не виходить — спочатку перечитай приклад вище й спробуй знайти, на якому кроці результат відрізняється.
- створи
index.htmlі запусти сервер з прив’язкою до127.0.0.1 - відкрий сторінку браузером
- отримай ту саму сторінку через
curl - зміни HTML, онови браузер і побач зміни
- зупини процес і перевір, що файл лишився, але сервер більше не відповідає
Перевір себе
Section titled “Перевір себе”- Хто ініціює запит — client чи server?
- Чи обов’язково сервер є окремим фізичним комп’ютером?
- Який протокол використовує наш приклад?
- Чому після Ctrl+C файл сторінки не зникає?
- Навіщо ми використали
--bind 127.0.0.1?
Терміни однією фразою
Section titled “Терміни однією фразою”- Клієнт (client) — сторона, що ініціює запит до служби.
- Сервер (server) — сторона, що слухає й відповідає за правилами протоколу.
- Порт — «номер кімнати», через який сервер приймає запити.
- Роль — клієнт або сервер — не обов’язково різні комп’ютери; це спосіб дії.
localhost/127.0.0.1— адреса «цього самого» комп’ютера для локальних експериментів.- HTML-сторінка — документ із розміткою, яку браузер перетворює на візуальну сторінку.
Чек-лист перед наступною лекцією
Section titled “Чек-лист перед наступною лекцією”- Чи можеш ти пояснити різницю між клієнтом та сервером?
- Чи знаєш ти, як запустити простий HTTP-сервер за допомогою Python?
- Чи розумієш ти, як
localhostвикористовується для локальної розробки?
Що потрібно винести з лекції
Section titled “Що потрібно винести з лекції”- client і server — ролі програм у взаємодії
- сервер — активний процес, а файли сайту — дані
- localhost дає безпечне середовище для локальних мережевих експериментів
Хакерський принцип: не запам’ятовуй магічні слова. Намагайся пояснити своїми словами, що відбулося і чому.