Как работает интернет и веб-сайты?

⏱ 15 мин · 🧩 заданий: 6

Клиент и сервер

Весь веб построен на простой идее: есть клиент, который просит, и сервер, который отвечает.

  • Клиент — обычно браузер (Chrome, Firefox), но им может быть и мобильное приложение, и программа на Python.
  • Сервер — компьютер, на котором работает программа, принимающая запросы. Позже такой программой станет ваш проект на Django.

Клиент и сервер общаются по сети, используя договорённости — протоколы.

Как компьютер находит сайт: IP и DNS

У каждого устройства в интернете есть адрес — IP-адрес, например 93.184.216.34. Людям такие числа неудобны, поэтому придумали доменные имена: example.com.

DNS (Domain Name System) — распределённая система, которая переводит имя в IP-адрес:

Браузер: «Какой IP у example.com?»
DNS:     «93.184.216.34»

Когда мы будем выкладывать проект в интернет (модуль «Деплой»), вы сами создадите DNS-запись, которая свяжет ваш домен с вашим сервером.

Протокол HTTP

Когда адрес найден, браузер подключается к серверу и отправляет HTTP-запрос. HTTP — текстовый протокол, запрос выглядит примерно так:

GET /articles/django/ HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0
Accept: text/html

Из чего состоит запрос:

Часть Пример Зачем
Метод GET Что мы хотим сделать
Путь /articles/django/ С каким ресурсом
Заголовки Host, Cookie, Accept Дополнительная информация
Тело данные формы, JSON Есть у POST, PUT, PATCH

Методы HTTP

  • GET — получить данные (открыть страницу). Не должен ничего менять на сервере.
  • POST — отправить данные (форма регистрации, новый комментарий).
  • PUT / PATCH — изменить ресурс целиком / частично.
  • DELETE — удалить ресурс.

Эти методы особенно важны в модуле про REST API.

Ответ сервера

Сервер возвращает HTTP-ответ:

HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Set-Cookie: sessionid=abc123

<!doctype html>
<html>...</html>

Первая строка содержит код статуса:

Группа Значение Примеры
2xx Успех 200 OK, 201 Created
3xx Перенаправление 301 Moved Permanently, 302 Found
4xx Ошибка клиента 400 Bad Request, 403 Forbidden, 404 Not Found
5xx Ошибка сервера 500 Internal Server Error, 502 Bad Gateway

HTTPS

HTTPS — это тот же HTTP, но поверх зашифрованного соединения (TLS). Никто между клиентом и сервером не сможет прочитать пароль или подменить страницу. Сегодня HTTPS — обязательный стандарт; в модуле «Деплой» вы бесплатно получите сертификат от Let's Encrypt.

Статические и динамические сайты

  • Статический сайт — набор готовых HTML-файлов. Сервер просто отдаёт файл.
  • Динамический сайт — страница собирается в момент запроса: программа берёт данные из базы, подставляет их в шаблон и отдаёт результат. Например, лента блога с последними постами.

Django — фреймворк для создания динамических сайтов. Он принимает HTTP-запрос, решает, какой код его обработает, достаёт данные из базы и возвращает HTTP-ответ.

Что важно запомнить

  1. Браузер (клиент) отправляет запрос, сервер возвращает ответ.
  2. DNS переводит домен в IP-адрес.
  3. Запрос состоит из метода, пути, заголовков и (иногда) тела.
  4. Ответ содержит код статуса, заголовки и тело (обычно HTML).
  5. Django работает на стороне сервера и превращает запрос в ответ.

Практика решено 0 из 6

Вы не вошли — ответы проверяются, но прогресс не сохранится. Войти или зарегистрироваться.
Задание 1 Расставить по порядку

Расставьте по порядку, что происходит, когда вы вводите https://example.com в браузере и нажимаете Enter.

  1. Браузер отправляет HTTP-запрос GET /
  2. Сервер обрабатывает запрос и формирует HTML
  3. Браузер отображает страницу и догружает CSS, JS и картинки
  4. Браузер спрашивает у DNS-сервера IP-адрес домена example.com
  5. Сервер отправляет HTTP-ответ со статусом 200 OK
  6. Браузер устанавливает TCP-соединение (и TLS для HTTPS) с сервером по этому IP
Задание 2 Один вариант ответа

Что делает DNS?

Задание 3 Несколько вариантов

Какие из перечисленных методов HTTP существуют на самом деле?

Задание 4 Ввод ответа

Какой код статуса HTTP вернёт сервер, если запрошенная страница не найдена? Введите число.

Задание 5 Один вариант ответа

Пользователь отправил форму входа, а сервер ответил 302 Found с заголовком Location: /profile/. Что сделает браузер?

Задание 6 Практика (выполнить у себя)

Откройте любой сайт, нажмите F12 → вкладка Network (Сеть) и обновите страницу. Найдите самый первый запрос (документ) и посмотрите его метод, статус и заголовки.

Впишите код статуса первого запроса (скорее всего, это число из трёх цифр, начинающееся на 2).

Войдите, чтобы отмечать пройденные уроки.