Ты вводишь в браузере google.com — и через доли секунды на экране появляется поисковая строка. Но что произошло за эти мгновения? Как твой запрос дошёл до сервера в другой стране и вернулся обратно? На этой странице ты увидишь весь путь данных: от нажатия клавиши до загрузки страницы.
В главе 3 ты узнал, что операционная система имеет сетевой стек — набор компонентов для работы с сетью. Но как именно этот стек работает? Что происходит, когда браузер отправляет запрос на сервер?
Ответ кроется в протоколах — наборе правил, по которым устройства понимают друг друга. Как почта: чтобы письмо дошло, нужно знать адрес (IP), правильно написать конверт (пакет) и отправить через почтовое отделение (маршрутизатор). Здесь ты разберёшься, как устроен этот процесс от начала до конца.
Основная модель взаимодействия в Интернете: один запрашивает, другой отвечает.
Клиент — программа или устройство, которое запрашивает данные (браузер, почтовый клиент, мобильное приложение).
Сервер — программа или компьютер, который хранит данные и отвечает на запросы клиентов.
Заказывает блюдо (отправляет запрос). Не готовит сам — ждёт, пока повар принесёт. Примеры: браузер, Telegram, онлайн-игра.
Принимает заказ, готовит и отдаёт. Работает круглосуточно, обслуживает тысячи клиентов. Примеры: веб-сервер, почтовый сервер, сервер игры.
Большие файлы не летят целиком — они разбиваются на маленькие пакеты.
Представь, что ты отправляешь другу книгу по почте. Вместо одной тяжёлой посылки ты разбираешь книгу на главы и отправляешь каждую отдельно. Если одна глава потеряется — попрошешь прислать только её, а не всю книгу.
Так же работает Интернет: данные разбиваются на пакеты — небольшие блоки с заголовками.
Каждый пакет состоит из двух частей:
Каждый пакет имеет номер. Когда все пакеты достигают получателя, они собираются в правильном порядке — как пазл. Если какой-то пакет потерялся или повреждён — протокол TCP запрашивает его повторную отправку.
Каждый пакет — это «матрёшка»: данные оборачиваются заголовками на каждом уровне стека TCP/IP. Нажми на слой, чтобы увидеть реальные поля.
| Поле | Размер | Значение |
|---|---|---|
| MAC-адрес получателя | 6 байт | AA:BB:CC:11:22:33 |
| MAC-адрес отправителя | 6 байт | DD:EE:FF:44:55:66 |
| Тип протокола | 2 байта | 0x0800 (IPv4) |
| Поле | Размер | Значение |
|---|---|---|
| Версия | 4 бита | 4 (IPv4) |
| Длина заголовка | 4 бита | 5 (20 байт) |
| TTL (время жизни) | 8 бит | 64 |
| Протокол | 8 бит | 6 (TCP) |
| IP отправителя | 4 байта | 192.168.1.10 |
| IP получателя | 4 байта | 142.250.80.46 |
| Поле | Размер | Значение |
|---|---|---|
| Порт отправителя | 16 бит | 49152 |
| Порт получателя | 16 бит | 443 (HTTPS) |
| Номер последовательности | 32 бита | 108456001 |
| Флаги | 8 бит | ACK, PSH |
| Размер окна | 16 бит | 65535 |
| Поле | Пример |
|---|---|
| Метод | GET |
| Путь | /index.html |
| Версия | HTTP/1.1 |
| Host | google.com |
| User-Agent | Mozilla/5.0 |
Нажми на любой слой «матрёшки», чтобы увидеть его реальные поля. Каждый уровень добавляет свой заголовок — как конверт внутри конверта.
TCP/IP — набор правил, по которым устройства понимают друг друга.
Протокол — это набор правил, определяющий формат и порядок обмена данными. Как язык: чтобы два человека поняли друг друга, они должны говорить на одном языке и соблюдать грамматику.
Интернет работает по стеку протоколов TCP/IP. Он состоит из четырёх уровней, каждый из которых решает свою задачу:
| Уровень | Что делает | Примеры протоколов |
|---|---|---|
| Прикладной | Работа с конкретными приложениями: веб, почта, файлы | HTTP, HTTPS, FTP, SMTP, DNS |
| Транспортный | Надёжная доставка данных, разбиение на сегменты | TCP (надёжный), UDP (быстрый) |
| Интернет | Адресация и маршрутизация пакетов | IP, ICMP, ARP |
| Канальный | Передача данных между соседними устройствами | Ethernet, Wi-Fi, PPP |
Протокол для загрузки веб-страниц. HTTPS — защищённая версия (с шифрованием). Ты уже видел его в URL: https://...
Гарантирует, что все пакеты дойдут в правильном порядке. Если пакет потерялся — запрашивает повторную отправку.
Отвечает за адреса и маршрутизацию. Каждый пакет имеет IP-адрес отправителя и получателя.
Передаёт данные между соседними устройствами: компьютер-роутер, роутер-провайдер.
Как доменные имена превращаются в IP-адреса.
Компьютеры используют IP-адреса (142.250.80.46), но людям проще запомнить слова (google.com). Как решить эту проблему?
DNS (Domain Name System) — система, которая переводит доменные имена в IP-адреса. Как телефонная книга: ты знаешь имя друга, а телефон находишь в справочнике.
google.com в браузере.142.250.80.46.DNS-серверы распределены по всему миру и организованы иерархически:
Введи доменное имя, и симулятор покажет, как DNS переводит его в IP-адрес. Попробуй разные домены!
Протокол HTTP и его защищённая версия HTTPS.
HTTP (HyperText Transfer Protocol) — протокол передачи гипертекста. Он определяет, как браузер запрашивает веб-страницы и как сервер их возвращает.
Когда ты открываешь сайт, браузер отправляет HTTP-запрос. Он состоит из трёх частей:
Сервер возвращает HTTP-ответ, который тоже состоит из трёх частей:
| Код | Значение | Что означает |
|---|---|---|
| 200 | OK | Запрос успешен, страница загружена |
| 301 | Moved Permanently | Страница переехала на новый адрес |
| 404 | Not Found | Страница не найдена (ошибка в адресе) |
| 500 | Internal Server Error | Ошибка на сервере (проблема не твоя) |
Как быстро файл долетит от сервера до твоего компьютера?
Передача данных подчиняется простой формуле, похожей на формулу скорости из физики:
Время = Объём / Скорость
t = V / q, где V — объём данных (бит, байт, МБ), q — скорость канала (бит/с, Мбит/с)
Важно не путать биты и байты:
| Единица | Сколько бит | Пример |
|---|---|---|
| 1 Кбит | 1 000 бит | Маленький текстовый файл |
| 1 КБ | 8 192 бит (8 × 1024) | Фотография (сжатая) |
| 1 Мбит | 1 000 000 бит | Песня (MP3) |
| 1 МБ | 8 388 608 бит | Фотография (высокое качество) |
| 1 ГБ | ≈ 8,6 млрд бит | Фильм (HD) |
Задача: Скорость интернет-канала — 10 Мбит/с. Сколько секунд понадобится для передачи файла размером 5 МБ?
Решение:
Введи объём файла и скорость канала, чтобы узнать время передачи. Или введи время и объём — узнаешь нужную скорость.
От нажатия клавиши до отображения страницы — все шаги за одну секунду.
Когда ты вводишь google.com и нажимаешь Enter, происходит следующее:
142.250.80.46).Нажми «Пуск», чтобы увидеть, что происходит за те доли секунды, пока загружается google.com. Каждый шаг — реальный процесс с реальным временем.
Нажми кнопку, чтобы увидеть, как пакет данных путешествует от твоего компьютера через Интернет к серверу и обратно.
Нажми «Отправить пакет», чтобы начать путешествие данных от компьютера к серверу.