# Как на самом деле разговаривает веб

Экспресс-курс о сетях и вебе. 21 понятие — Packet, IP Address, DNS, TCP, UDP, Port, HTTP, Status Codes, TLS, Certificate, Latency, CDN, Load Balancer и другие — у каждого английское название, схема, карточка «что это → как работает → пример → подвох» и связи. В конце — весь путь одного клика и шпаргалка по всем словам на одной странице.

- **Author:** Фёдор Чищин
- **Level:** intro
- **Reading time:** ~30 минут чтения
- **Published:** 2026-06-13
- **Source:** https://fedorthinks.com/ru/learn/networking-express

---

## 1. Сеть — это просто сообщения

Сними жаргон — и сеть окажется одной простой вещью: машины шлют друг другу сообщения. Всё остальное — детали о том, как эти сообщения находят путь и доходят надёжно.

### Карта: 21 понятие в шести группах

> Карта метро: сначала видишь линии целиком, потом едешь по станциям.

Все слова курса делятся на шесть групп. Каждая группа — один шаг разговора: **основы** (кто с кем говорит), **имена** (как найти адрес), **соединение** (как открыть линию), **HTTP** (на каком языке спрашивать), **HTTPS** (как запечатать) и **скорость** (почему бывает медленно).

_Diagram: Шесть групп понятий — по ним идут главы 1–6._

### Как читать каждое понятие

> Паспорт: одинаковые поля у всех, поэтому их легко сравнивать.

У каждого понятия дальше одно и то же: **английское название** (запомни его — это термин из документации), образ из жизни, **схема** и **карточка** с полями: _что это_, _как работает_, _пример_, _подвох_ и _связи_ с другими понятиями. В последней главе все слова складываются в один клик — от адресной строки до готовой страницы.

### Packet — данные едут кусками

> Огромная почтовая система: любое здание может послать записку любому другому, лишь бы на конверте был правильный адрес.

**Сеть (network)** — это просто компьютеры, соединённые так, чтобы слать друг другу данные. Данные едут маленькими **пакетами (packets)** — как записка, разбитая на открытки, каждая с пометкой, откуда и куда. Интернет — то же самое в масштабе планеты: миллиарды машин, любая из которых может передать пакет любой другой. Это весь фундамент; остальное — как сделать его надёжным и осмысленным.

_Diagram: Отправитель режет сообщение на пакеты, каждый едет сам, получатель собирает их обратно._

#### Packet (пакет)

- **Что это:** Маленький кусок данных с пометкой «откуда» и «куда».
- **Как работает:** Большое сообщение режется на пакеты; каждый едет по сети сам; на месте их собирают обратно.
- **Пример:** Одна веб-страница приезжает к тебе как много пакетов.
- **Подвох:** Пакеты могут теряться и приходить не по порядку — это решает **TCP**.
- **Связи:** Адрес на пакете — это **IP address**.

### IP Address — у каждой машины есть адрес

> У каждого здания на Земле уникальный почтовый адрес. Без него почтальону некуда доставить и некуда слать ответ.

Чтобы пакет дошёл, у получателя нужен адрес. Это **IP-адрес (IP address)** — число, которое опознаёт машину в сети, например `142.250.74.78`. Он есть у каждого устройства онлайн. Когда твой ноутбук шлёт запрос, он ставит свой IP как обратный адрес, чтобы ответ знал, куда возвращаться. Нет адреса — нет разговора.

_Diagram: Запрос идёт на IP сервера; ответ возвращается на IP отправителя — это обратный адрес._

#### IP Address (IP-адрес)

- **Что это:** Число, которое опознаёт машину в сети.
- **Как работает:** На каждом пакете есть адрес получателя и адрес отправителя — чтобы ответ знал, куда идти.
- **Пример:** `142.250.74.78` — адрес сервера, к которому идёт твой запрос.
- **Подвох:** Числа никто не помнит — поэтому нужны имена и **DNS**.
- **Связи:** Ведёт к машине, а к нужному сервису на ней ведёт **port**.

### Client–Server — клиент спрашивает, сервер отвечает

> Зал ресторана и кухня. Одна сторона делает заказы; другая готовит и отправляет назад. Роли на время обеда фиксированы.

Бо́льшая часть веба работает по модели **клиент–сервер (client–server)**. **Клиент (client)** — твой браузер или приложение — делает запрос; **сервер (server)** — машина, на которой работает сайт или сервис, — шлёт ответ. Твой телефон — клиент, который просит «дай мне эту страницу»; сервер где-то отвечает страницей. Держи эту пару в уме — каждая идея ниже о том, как заставить этот запрос и ответ работать.

_Diagram: Клиент начинает разговор запросом; сервер отвечает._

#### Client–Server (клиент–сервер)

- **Что это:** Модель, где одна сторона спрашивает, а другая отвечает.
- **Как работает:** Клиент шлёт запрос; сервер его обрабатывает и шлёт ответ.
- **Пример:** Телефон просит страницу — сервер где-то в дата-центре её отдаёт.
- **Подвох:** Роли зависят от разговора: сервер сам может быть клиентом другого сервера.
- **Связи:** Язык этого разговора в вебе — **HTTP**.

> **Вопрос рамки:** «Кто клиент, что задаёт вопрос, кто сервер, что отвечает, и какой адрес нужен каждому сообщению, чтобы дойти?»

> Сеть — это машины, передающие адресованные сообщения. Клиент спрашивает, сервер отвечает — всё остальное делает это надёжным.

## 2. Найти адрес — DNS

Ты печатаешь имя вроде `example.com`, но сеть умеет вести только к числам. Что-то должно перевести имя, которое ты помнишь, в адрес, который нужен машине. Это что-то — DNS.

### Domain Name — имена для людей, числа для машин

> Друга ты помнишь по имени, но телефонная сеть набирает только номера — поэтому у тебя есть список контактов, который превращает одно в другое.

Люди помнят `wikipedia.org`; сети нужен IP-адрес вроде `198.35.26.96`. **Доменное имя (domain name)** — удобная человеку метка; IP — удобный машине адрес. Их надо связать: никто не хочет зубрить числа, а ни один роутер не умеет вести к имени. Этот разрыв закрывает целая система, которая работает постоянно и незаметно, на каждом клике.

_Diagram: Имя — для людей, IP — для сетей; между ними стоит DNS._

#### Domain Name (доменное имя)

- **Что это:** Читаемое имя сайта, которое удобно человеку.
- **Как работает:** Само по себе никуда не ведёт — его сначала переводят в IP-адрес.
- **Пример:** `wikipedia.org` → `198.35.26.96`.
- **Подвох:** Роутеры не понимают имён — только числа.
- **Связи:** Переводит имя в адрес **DNS**.

### DNS — телефонная книга интернета

> Гигантский справочник, открытый круглые сутки: ты даёшь ему имя, он отдаёт номер для набора. Ты никогда не видишь, как он работает, — просто получаешь номер.

**DNS (Domain Name System)** — сервис, который переводит доменное имя в IP-адрес. Прежде чем браузер достанет `example.com`, он спрашивает DNS: «какой адрес у этого имени?» — и получает число. Этот **поиск (lookup)**, или **резолвинг (resolution)**, случается первым, каждый раз, за миллисекунды. Это незаметный шаг, без которого не было бы читаемых веб-адресов.

_Diagram: Сначала браузер спрашивает у DNS адрес, и только потом идёт к серверу._

#### DNS (Domain Name System, система доменных имён)

- **Что это:** Сервис, который переводит доменное имя в IP-адрес.
- **Как работает:** Браузер спрашивает «какой IP у этого имени?» и получает число.
- **Пример:** `example.com` → IP-адрес → только потом соединение с сервером.
- **Подвох:** Это первый шаг каждой загрузки: если DNS сломан, сайт «не существует».
- **Связи:** Его ответы хранит **DNS caching** с **TTL**.

### DNS Caching и TTL — ответ запоминают

> Ты один раз находишь номер друга и пишешь его на стикер — в следующий раз просто читаешь стикер, а не открываешь весь справочник.

Искать каждое имя с нуля было бы медленно, поэтому DNS-ответы **кэшируются (caching)** — их на время запоминают браузер, операционная система и сеть. Адрес приходит с **TTL (time to live)** — сколько его безопасно переиспользовать до новой проверки. Поэтому адрес знакомого сайта находится мгновенно, и поэтому смена DNS расходится не сразу.

_Diagram: Сначала спрашивают ближайшую память; полный поиск — только если там пусто. TTL говорит, сколько ответ живёт._

#### DNS Caching · TTL (кэш DNS, time to live)

- **Что это:** Запомненный ответ DNS и срок, сколько ему можно верить.
- **Как работает:** Браузер, ОС и сеть хранят ответ; пока TTL не истёк, адрес берут из памяти.
- **Пример:** Сайт, где ты уже был, находится мгновенно — адрес лежит в кэше.
- **Подвох:** Поменял DNS — старый ответ ещё живёт в кэшах, пока не истечёт TTL. Изменение расходится не сразу.
- **Связи:** Тот же приём, что у **CDN**: держать ответ ближе.

> **Вопрос DNS:** «Когда я печатаю имя, что превращает его в число, к которому сеть реально ведёт, — и не может ли устаревший кэшированный ответ указывать меня не туда?»

> DNS — это телефонная книга: превращает имя, которое ты помнишь, в IP-адрес, который нужен сети, и кэширует его, чтобы в следующий раз было мгновенно.

## 3. Открыть линию — TCP и порты

Знать адрес — ещё не значит вести разговор. Прежде чем сообщения пойдут надёжно, две машины открывают соединение — и договариваются, в какую «дверь» сервера стучать.

### TCP — надёжная линия по порядку

> Телефонный звонок с подтверждениями: ты говоришь фразу, собеседник отвечает «понял», и ничего не идёт дальше, пока каждая часть не подтверждена и не встала по порядку.

**TCP (Transmission Control Protocol)** — самый частый способ слать данные надёжно. Он открывает соединение быстрым **рукопожатием (handshake)** — обе стороны соглашаются говорить, — а потом гарантирует, что каждый пакет дойдёт, по порядку, а потерянные будут отправлены снова. Ты отдаёшь немного скорости за уверенность, что ничего не потеряно и не перепутано. Веб, почта и большинство приложений работают поверх TCP именно ради этой надёжности.

_Diagram: Сначала рукопожатие (SYN, SYN-ACK, ACK), потом данные с подтверждениями; потерянное отправляют снова._

#### TCP (Transmission Control Protocol)

- **Что это:** Надёжная линия: всё дойдёт, ничего не потеряется, всё по порядку.
- **Как работает:** Рукопожатие открывает соединение; получатель подтверждает пакеты; потерянные шлют снова.
- **Пример:** Веб-страницы, почта, большинство приложений.
- **Подвох:** Надёжность стоит скорости: рукопожатие и ожидание подтверждений.
- **Связи:** Быстрая альтернатива — **UDP**; поверх TCP едет **HTTP**.

### UDP — скорость вместо надёжности

> Выкрикивать новости через шумную комнату — часть слов теряется, но ты не останавливаешься подтвердить каждое: успевать важнее, чем поймать каждое слово.

**UDP (User Datagram Protocol)** — быстрая альтернатива без гарантий: он шлёт пакеты без рукопожатия и не переотправляет потерянные. Ты теряешь надёжность, но выигрываешь скорость и малые накладные расходы. Это верный размен для живого видео, голосовых звонков и игр, где упавший кадр терпим, а ожидание — нет. Сам факт, что есть оба, говорит главное: у сети всегда есть регулятор **«скорость против надёжности»**.

_Diagram: UDP шлёт и не оглядывается: потерянный пакет никто не перешлёт._

#### UDP (User Datagram Protocol)

- **Что это:** Быстрая линия без гарантий доставки и порядка.
- **Как работает:** Без рукопожатия и без повторов: отправил и забыл.
- **Пример:** Живое видео, голосовые звонки, онлайн-игры.
- **Подвох:** Пакеты теряются — приложение должно это терпеть.
- **Связи:** Противоположный конец регулятора от **TCP**.

### Port — пронумерованные двери машины

> Одно здание, много дверей, у каждой номер под свою цель — доставка в дверь 80, офис в другую. Один адрес, разные входы.

На одной машине работает много сервисов, поэтому одного IP-адреса мало — нужен ещё **порт (port)**, число, которое выбирает, к какому сервису стучаться. Веб по соглашению использует порт `80` (HTTP) или `443` (HTTPS); база данных может слушать другой. Адрес приводит к зданию, порт — к нужной двери. Вместе **IP плюс порт** называют точное место назначения.

_Diagram: Один IP — одно здание; порт выбирает дверь, то есть сервис._

#### Port (порт)

- **Что это:** Номер, который выбирает сервис на машине.
- **Как работает:** Каждый сервис «слушает» свой порт; запрос идёт на IP:порт.
- **Пример:** `80` — HTTP, `443` — HTTPS; база данных слушает свой порт.
- **Подвох:** Правильный IP с неправильным портом — стук не в ту дверь.
- **Связи:** Дополняет **IP address**; используется и **TCP**, и **UDP**.

> **Вопрос соединения:** «Нужна ли здесь гарантия TCP, что ничего не потеряно, или скорость UDP — и в какой порт, в какую дверь машины, я на самом деле стучу?»

> TCP — надёжная линия по порядку; UDP — быстрый и теряющий. IP находит здание, порт выбирает дверь.

## 4. Разговор — HTTP

Когда линия открыта, двум сторонам нужен общий язык, чтобы спрашивать и отвечать. В вебе этот язык — HTTP, простой и строгий формат каждого запроса и ответа.

### HTTP — запрос и ответ

> Обмен официальными письмами: уходит чётко оформленный запрос, возвращается чётко оформленный ответ, оба по одному согласованному шаблону.

**HTTP (HyperText Transfer Protocol)** — язык веба. Клиент шлёт **запрос (request)** — что он хочет, — а сервер шлёт **ответ (response)** — результат. Каждая страница, картинка и вызов API — один такой обмен. Он текстовый и структурированный, поэтому на нём говорит столько инструментов. Пойми форму одного запроса и ответа — и поймёшь, как движется весь веб.

_Diagram: Один обмен HTTP: запрос туда, ответ обратно._

#### HTTP (HyperText Transfer Protocol)

- **Что это:** Язык запросов и ответов в вебе.
- **Как работает:** Клиент шлёт запрос, сервер возвращает ответ; один обмен — одна вещь.
- **Пример:** Страница, картинка, вызов API — каждый это отдельный обмен HTTP.
- **Подвох:** Обычный HTTP не зашифрован — его может прочитать любой по пути.
- **Связи:** Состоит из **methods**, **headers + body**, **status codes**; защищённая версия — **HTTPS**.

### HTTP Methods — глагол говорит, что ты хочешь

> У стойки библиотеки можно взять книгу, вернуть её или попросить добавить новую. Стойка одна, намерения разные — и персонал обрабатывает каждое по-своему.

У каждого запроса есть **метод (method)** — глагол. **GET** достаёт данные (загрузить страницу). **POST** шлёт новые данные (отправить форму). **PUT** обновляет что-то; **DELETE** удаляет. Метод сразу говорит серверу твоё намерение, и хорошие системы обрабатывают их по-разному: GET ничего не должен менять, а POST как раз ожидаемо меняет. Эти глаголы — хребет того, как проектируют API.

_Diagram: Четыре главных глагола HTTP и что они значат._

#### HTTP Methods (методы, глаголы HTTP)

- **Что это:** Слово в начале запроса, которое говорит, что ты хочешь сделать.
- **Как работает:** GET — достать, POST — создать, PUT — обновить, DELETE — удалить.
- **Пример:** Открыл страницу — GET; отправил форму — POST.
- **Подвох:** GET, который что-то меняет, — ошибка проектирования.
- **Связи:** Стоит в первой строке запроса, перед **headers**.

### Headers и Body — детали и груз

> На конверте снаружи есть пометки — кому, что внутри, как обращаться, — а внутри лежит само письмо.

У каждого запроса и ответа есть **заголовки (headers)** — подписанные строки метаданных: тип содержимого, язык, кто спрашивает, токены аутентификации — и необязательное **тело (body)**, сам груз: данные формы туда, страница или JSON обратно. Заголовками две стороны договариваются о деталях, не трогая груз. Бо́льшая часть «как» в обмене живёт в заголовках.

_Diagram: Запрос HTTP — это просто текст: строка с методом, заголовки, потом тело._

#### Headers · Body (заголовки и тело)

- **Что это:** Заголовки — метаданные о сообщении; тело — сами данные.
- **Как работает:** Заголовки идут строками «имя: значение», тело — после них.
- **Пример:** `Content-Type: application/json` говорит, что в теле JSON; тело — данные формы.
- **Подвох:** Тело есть не всегда: у обычного GET его нет.
- **Связи:** В заголовках едут **cookies** — так работает вход на **stateless** HTTP.

### Status Codes — как всё прошло

> Светофор для ответов: зелёный — всё хорошо, редирект указывает в другое место, а красный говорит, что пошло не так — и чья это вина.

Каждый ответ несёт **статус-код (status code)**. **2xx** — успех (`200 OK`). **3xx** — редирект: смотри вон там. **4xx** — ошибся клиент: `404 Not Found`, `403 Forbidden` — _ты_ спросил не так. **5xx** — ошибся сервер: `500` — _он_ сломался. Первая цифра сразу говорит, сработало ли, кто виноват и куда смотреть. Это самый полезный навык отладки в вебе.

_Diagram: Первая цифра кода — уже половина диагноза: успех, редирект, твоя ошибка или ошибка сервера._

#### Status Codes (статус-коды)

- **Что это:** Трёхзначное число в ответе, которое говорит, как всё прошло.
- **Как работает:** 2xx — успех, 3xx — редирект, 4xx — ошибка клиента, 5xx — ошибка сервера.
- **Пример:** `404` — такой страницы нет; `500` — сервер сломался.
- **Подвох:** Путать 4xx и 5xx — значит искать баг не на той стороне.
- **Связи:** Первое, что смотришь в каждом **HTTP**-ответе.

### Stateless и Cookies — HTTP забывает тебя

> Клерк за стойкой не помнит твой прошлый визит — каждый раз ты заново представляешься и снова показываешь талон.

HTTP **без состояния (stateless)**: каждый запрос стоит сам по себе, и сервер по умолчанию ничего не помнит с прошлого раза. Поэтому, чтобы оставаться залогиненным, каждый запрос должен нести доказательство, кто ты, — **cookie** или токен в заголовках. Именно отсутствие состояния позволяет вебу масштабироваться до миллиардов запросов — и объясняет, почему твоя личность едет вместе с каждым вызовом.

_Diagram: Сервер ничего не помнит: каждый запрос несёт cookie, а без неё ты снова незнакомец._

#### Stateless · Cookie (без состояния, куки)

- **Что это:** Сервер не помнит прошлых запросов; cookie несёт память с собой.
- **Как работает:** Браузер прикладывает cookie или токен к каждому запросу в заголовках.
- **Пример:** Ты залогинен, потому что каждый запрос несёт твою cookie сессии.
- **Подвох:** Нет cookie — для сервера ты незнакомец.
- **Связи:** Cookie едет в **headers**; отсутствие состояния помогает **load balancer**.

> **Вопрос HTTP:** «Какой метод (намерение), что в заголовках и теле, и что статус-код говорит о том, как всё прошло и кто виноват?»

> HTTP — это запрос и ответ: метод для намерения, заголовки для деталей, тело для груза и статус-код, который точно говорит, как всё прошло.

## 5. Запечатанный конверт — HTTPS

Обычный HTTP — это открытка: любой, кто её несёт, может прочитать. HTTPS — тот же разговор, запечатанный в конверт, который откроет только нужный сервер, и подписанный, чтобы ты знал, с кем говоришь.

### TLS и HTTPS — шифрование запечатывает сообщение

> Вместо читаемой открытки — запертый ящик, ключ от которого есть только у получателя. Курьеры его несут, но никто не может прочитать, что внутри.

**HTTPS** — это HTTP, обёрнутый в **шифрование (encryption)** через **TLS (Transport Layer Security)**. Оно перемешивает содержимое так, что любой между тобой и сервером — Wi-Fi в кафе, провайдер, атакующий — видит лишь бессмыслицу, а не твой пароль или сообщение. Замок в адресной строке значит, что печать на месте. В современном вебе это по умолчанию, потому что незапечатанный разговор может прочитать кто угодно.

_Diagram: HTTP — открытка, которую читает любой по пути; HTTPS — конверт, внутри которого для них только шум._

#### TLS · HTTPS (Transport Layer Security; HTTP + TLS)

- **Что это:** Шифрование линии; HTTPS — это HTTP поверх TLS.
- **Как работает:** После TLS-рукопожатия всё содержимое перемешано — по пути видна только бессмыслица.
- **Пример:** Замок в адресной строке; порт `443`.
- **Подвох:** Шифрования мало — надо ещё знать, что сервер настоящий.
- **Связи:** Личность сервера доказывает **certificate**.

### Certificate — доказательство, с кем ты говоришь

> Паспорт, который проверила доверенная инстанция: он доказывает, что человек тот, кем себя называет, а не самозванец под его именем.

Одного шифрования мало: надо ещё знать, что сервер правда `yourbank.com`, а не подделка. **Сертификат (certificate)** — цифровое удостоверение, подписанное доверенным **удостоверяющим центром (certificate authority, CA)**. Он доказывает, что сервер владеет именем, которое заявляет. Браузер проверяет его автоматически и предупреждает, если сертификата нет или он неверный. Это и не даёт атакующему выдать себя за сайт даже на зашифрованном соединении.

_Diagram: Удостоверяющий центр подписывает сертификат; сервер показывает его; браузер проверяет подпись._

#### Certificate (TLS-сертификат, certificate authority (CA))

- **Что это:** Цифровое удостоверение: «этот сервер владеет этим именем».
- **Как работает:** CA подписывает сертификат; сервер показывает его; браузер проверяет подпись сам.
- **Пример:** Браузер предупреждает, когда у сайта нет сертификата или он не тот.
- **Подвох:** Не игнорируй предупреждение о сертификате — это может быть подделка.
- **Связи:** Закрывает дверь для **man-in-the-middle**.

### Man-in-the-Middle — почему замок важен

> Разница между отправкой запечатанного, проверенного письма и выкрикиванием своих банковских данных в людной комнате.

Без HTTPS любой на пути может читать и даже менять твой трафик — это **человек посередине (man-in-the-middle, MITM)**, который тихо сидит между тобой и сервером. С HTTPS сообщение запечатано, а отправитель проверен. Поэтому страницы входа, платежи и теперь почти всё работает через HTTPS, а браузеры помечают обычный HTTP как «небезопасно». Замок — маленькая иконка за большой гарантией.

_Diagram: Атакующий посередине читает и меняет обычный HTTP; HTTPS он не прочитает и подделать не сможет._

#### Man-in-the-Middle (MITM, человек посередине)

- **Что это:** Атакующий между тобой и сервером, который читает или меняет трафик.
- **Как работает:** Ты думаешь, что говоришь с сервером, а говоришь через него.
- **Пример:** Чужой Wi-Fi, который подсматривает обычный HTTP.
- **Подвох:** Он невидим: всё «работает», пока данные утекают.
- **Связи:** Защита — **TLS** (печать) + **certificate** (проверка личности).

> **Вопрос HTTPS:** «Запечатан ли этот разговор так, что никто посередине его не прочтёт, — и проверен ли так, что я знаю: сервер тот, кем себя называет?»

> HTTPS запечатывает сообщение шифрованием и доказывает личность сервера сертификатом — приватность и доверие в одном замке.

## 6. Скорость и расстояние

Веб кажется мгновенным, но расстояние и физика всегда берут свою плату. Два слова — задержка и пропускная способность — объясняют бо́льшую часть того, почему всё кажется быстрым или медленным.

### Latency и Bandwidth — ожидание и ширина

> Водопроводная труба: сколько ждать первой капли — одно; сколько воды течёт в секунду — другое. У широкой трубы тоже есть задержка, пока вода дойдёт до дальнего конца.

**Задержка (latency)** — время до начала ответа, то есть время туда и обратно для сообщения. **Пропускная способность (bandwidth)** — сколько данных можно передать в секунду. Они независимы: соединение может быть широким и при этом с большой задержкой. Большим загрузкам важна пропускная способность; быстрому, отзывчивому сайту — задержка. Из-за путаницы между ними людей и удивляет: «интернет быстрый, а сайт тормозит».

_Diagram: Задержка — длина трубы, пропускная способность — её ширина. Это разные вещи._

#### Latency · Bandwidth (задержка и пропускная способность)

- **Что это:** Latency — сколько ждать ответа; bandwidth — сколько данных в секунду.
- **Как работает:** Они не зависят друг от друга: можно иметь много ширины и долгое ожидание.
- **Пример:** Большой файл качается быстро, но каждый клик на далёком сайте тормозит.
- **Подвох:** «Быстрый интернет, медленный сайт» — обычно проблема задержки, а не ширины.
- **Связи:** Задержка растёт с каждым **round trip**; её срезает **CDN**.

### Round Trip — каждый круг стоит времени

> Задать вопрос человеку на другом континенте: даже со скоростью света у обмена туда и обратно есть нижняя граница, которую не побить.

Запрос к далёкому серверу совершает физический **круг туда и обратно (round trip)**, а свет через планету идёт не мгновенно: путь через полмира стоит минимум десятки миллисекунд. Хуже того, загрузка страницы часто требует много кругов. Поэтому **«болтливые» (chatty)** системы вялые на расстоянии, и поэтому сократить число кругов — один из старейших трюков производительности.

_Diagram: DNS, TCP, TLS, HTTP — каждый шаг стоит хотя бы одного круга до далёкого сервера._

#### Round Trip (RTT, round-trip time, круг туда-обратно)

- **Что это:** Путь сообщения до сервера и обратно.
- **Как работает:** Каждый шаг — DNS, рукопожатия, запрос — стоит минимум одного круга.
- **Пример:** Путь через полмира — десятки миллисекунд даже для света.
- **Подвох:** Много мелких запросов («болтливый» дизайн) складывают задержку.
- **Связи:** Меньше кругов или короче путь (**CDN**) — меньше **latency**.

### CDN — положи ответ ближе

> Популярная книга стоит в местных библиотеках по всему миру, а не в одном центральном архиве, куда надо писать письмо, — копия рядом приходит куда быстрее.

**CDN (content delivery network)** — сеть серверов по всему миру, которые держат копии твоего контента рядом с пользователями. Когда кто-то в Токио открывает твой сайт, его обслуживает ближний город, а не твой **исходный сервер (origin)** за океаном, — и задержка резко падает. CDN — это кэширование, применённое к географии; так глобальные сайты кажутся местными везде.

_Diagram: Копии лежат на ближних edge-серверах; каждый пользователь идёт к ближайшему, а не через океан._

#### CDN (Content Delivery Network, сеть доставки контента)

- **Что это:** Сеть серверов по миру с копиями твоего контента.
- **Как работает:** Пользователь получает ответ с ближайшего сервера, а не с origin.
- **Пример:** Пользователь в Токио получает страницу из ближнего города.
- **Подвох:** Копии — это кэш: обновления доходят не мгновенно.
- **Связи:** Режет **latency** и число долгих **round trips**; родня **DNS caching**.

### Load Balancer — распределить работу

> Администратор очереди в банке направляет клиентов к свободному окну, чтобы ни одно не захлёбывалось, пока другие простаивают.

Когда один сервер не справляется со всем трафиком, перед несколькими серверами ставят **балансировщик нагрузки (load balancer)**, который распределяет запросы между ними. Так большие сайты держат миллионы пользователей — просто добавь серверов за балансировщик — и так переживают отказ одного сервера: балансировщик просто обходит его. Название говорит ровно то, что он делает: балансирует нагрузку.

_Diagram: Балансировщик раздаёт запросы рабочим серверам и обходит упавший._

#### Load Balancer (балансировщик нагрузки)

- **Что это:** Посредник, который раздаёт запросы между несколькими серверами.
- **Как работает:** Каждый запрос уходит на один из живых серверов; упавший пропускается.
- **Пример:** Растёт трафик — добавляешь серверы за балансировщик.
- **Подвох:** Если сервер хранит сессию в памяти, другой сервер о ней не знает.
- **Связи:** Легко работает потому, что HTTP — **stateless**.

> **Вопрос скорости:** «Медленная часть — это ожидание на каждом круге (задержка) или объём данных (пропускная способность) — и помогло бы перенести ответ ближе или распределить нагрузку?»

> Задержка — это ожидание; пропускная способность — это ширина. Расстояние всегда берёт плату — CDN переносит ответ ближе, балансировщик распределяет работу.

## 7. Весь путь

Теперь сложи все слова вместе: проследи один клик от адресной строки до готовой страницы. Если можешь это пересказать — ты понимаешь, как разговаривает веб.

### Что происходит, когда ты открываешь URL

> Полный путь одного письма: найти адрес, открыть линию, запечатать конверт, задать вопрос, получить ответ — всё меньше чем за секунду.

Ты печатаешь `example.com`. **DNS** превращает имя в **IP-адрес**. Браузер открывает **TCP**-соединение к этому IP на **порт** 443, и они делают **TLS**-рукопожатие, чтобы линия была зашифрована, а **сертификат** сервера проверен. По этой запечатанной линии браузер шлёт **HTTP**-запрос с методом **GET**; сервер отвечает **статус-кодом** и **телом**. Страница может прийти с ближнего **CDN**, чтобы срезать **задержку**. Браузер читает ответ и рисует страницу. Каждый термин этого курса просто назвал один шаг этой обычной секунды.

_Diagram: Один клик — шесть шагов, каждый со своим словом из курса._

### Как понятия связаны между собой

> Матрёшка: каждый слой лежит внутри следующего, и снаружи видно только верхний.

Понятия не живут поодиночке — они ложатся слоями. Внизу **IP** с пакетами и адресами. На нём едут **TCP** или **UDP** с портами. Поверх TCP — **TLS**, а на самом верху — **HTTP**, язык запросов и ответов. Сбоку стоят помощники: **DNS** даёт адрес для нижнего слоя, а **CDN** и **load balancer** борются с задержкой и нагрузкой.

_Diagram: Слои разговора и помощники вокруг них: каждый слой едет на том, что под ним._

#### Путь, по порядку

- **DNS** превращает доменное имя в **IP-адрес**.
- Открывается **TCP**-соединение к этому IP на **порт** (443 для HTTPS).
- **TLS**-рукопожатие шифрует линию и проверяет **сертификат** сервера.
- Клиент шлёт **HTTP-запрос** — **метод**, **заголовки**, может быть **тело**.
- Сервер возвращает **статус-код**, **заголовки** и **тело**.
- **CDN** может отдать ответ из ближнего места; **балансировщик** может выбрать сервер.

#### Признаки, что веб теперь понятен

- **404** против **500** сразу говорит, чья вина — твоя или сервера.
- «Быстрый интернет, а сайт медленный» читается как проблема **задержки**, а не **пропускной способности**.
- **Замок** значит зашифровано _и_ личность проверена — ты знаешь, что он гарантирует.
- Можешь объяснить, почему для входа нужна **cookie** на каждом **stateless**-запросе.
- Смог бы пересказать весь **путь URL** выше, не подглядывая.

## Шпаргалка: все 21 понятие

### Основы

- **Packet** (пакет): Кусок данных с пометкой «откуда» и «куда».
- **IP Address** (IP-адрес): Число, которое опознаёт машину в сети.
- **Client–Server** (клиент–сервер): Клиент спрашивает, сервер отвечает.

### Имена

- **Domain Name** (доменное имя): Читаемое имя сайта для людей.
- **DNS** (Domain Name System): Телефонная книга: имя → IP-адрес.
- **DNS Caching · TTL** (кэш DNS): Ответ запоминают; TTL говорит, сколько ему верить.

### Соединение

- **TCP** (Transmission Control Protocol): Надёжная линия: рукопожатие, всё по порядку, потери пересылаются.
- **UDP** (User Datagram Protocol): Быстрая линия без гарантий: отправил и забыл.
- **Port** (порт): Номер двери: какой сервис на машине.

### HTTP

- **HTTP** (HyperText Transfer Protocol): Язык веба: запрос и ответ.
- **HTTP Methods** (GET · POST · PUT · DELETE): Глагол запроса — твоё намерение.
- **Headers · Body** (заголовки и тело): Детали сообщения и сам груз.
- **Status Codes** (статус-коды): 2xx успех, 3xx редирект, 4xx твоя ошибка, 5xx ошибка сервера.
- **Stateless · Cookie** (без состояния): Сервер не помнит тебя; cookie едет с каждым запросом.

### HTTPS

- **TLS · HTTPS** (шифрование): Запечатывает разговор; HTTPS = HTTP + TLS.
- **Certificate** (сертификат, CA): Подписанное удостоверение: сервер владеет своим именем.
- **Man-in-the-Middle** (MITM): Атакующий посередине; от него защищает HTTPS.

### Скорость

- **Latency · Bandwidth** (задержка и ширина): Сколько ждать и сколько данных в секунду. Это разные вещи.
- **Round Trip** (RTT): Путь туда и обратно; каждый круг стоит времени.
- **CDN** (Content Delivery Network): Копии контента рядом с пользователями.
- **Load Balancer** (балансировщик): Раздаёт запросы между серверами и обходит упавшие.

> Загрузка страницы — это один быстрый разговор: найти адрес, открыть линию, запечатать, спросить, ответить. Каждое пугающее слово — просто один шаг этой секунды.

Конец экспресс-курса · 7 глав · 21 понятие

Дальше — практика: открой инструменты разработчика в браузере, перейди на вкладку Network и загрузи любой сайт. Смотри, как появляются реальные запросы — методы, статус-коды, заголовки, тайминги — и сопоставляй каждый со словом из этого курса. Абстракции становятся конкретными в тот миг, когда ты видишь их вживую. Но держи одну мысль выше прочих: веб не магия. Это машины, которые находят адрес, открывают линию, запечатывают её и меняют вопрос на ответ, — и теперь у тебя есть слова для каждого шага.
