fedorthinks

Экспресс-курс · No. 14

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

21 понятие · схема у каждого · шпаргалка в конце

§ 01

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

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

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

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

BasicsPacketIP addressClient–serverNamesDomain nameDNSCaching · TTLConnectionTCPUDPPortHTTPRequest / responseMethodsHeaders + bodyStatus codesStatelessHTTPSTLS encryptionCertificateMan-in-the-middleSpeedLatency / bandwidthRound tripCDNLoad balancer
Шесть групп понятий — по ним идут главы 1–6.

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

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

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

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

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

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

Messagea whole pagepacket 1from A · to Bpacket 2from A · to Bpacket 3from A · to BMessageput back togethersender splitseach packet travels on its ownreceiver rebuilds
Отправитель режет сообщение на пакеты, каждый едет сам, получатель собирает их обратно.
ConceptPacket· пакет
Что это
Маленький кусок данных с пометкой «откуда» и «куда».
Как работает

Большое сообщение режется на пакеты; каждый едет по сети сам; на месте их собирают обратно.

Пример
Одна веб-страница приезжает к тебе как много пакетов.
Подвох
Пакеты могут теряться и приходить не по порядку — это решает TCP.
Связи
Адрес на пакете — это IP address.

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

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

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

Your laptopIP 203.0.113.5ServerIP 142.250.74.78to 142.250.74.78reply to 203.0.113.5the sender's own IP is the return address
Запрос идёт на IP сервера; ответ возвращается на IP отправителя — это обратный адрес.
ConceptIP Address· IP-адрес
Что это
Число, которое опознаёт машину в сети.
Как работает

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

Пример
142.250.74.78 — адрес сервера, к которому идёт твой запрос.
Подвох
Числа никто не помнит — поэтому нужны имена и DNS.
Связи
Ведёт к машине, а к нужному сервису на ней ведёт port.

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

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

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

Clientbrowser · appServerruns the siterequest: give me this pageresponse: here is the pagethe client asks first · the server answers
Клиент начинает разговор запросом; сервер отвечает.
ConceptClient–Server· клиент–сервер
Что это
Модель, где одна сторона спрашивает, а другая отвечает.
Как работает
Клиент шлёт запрос; сервер его обрабатывает и шлёт ответ.
Пример
Телефон просит страницу — сервер где-то в дата-центре её отдаёт.
Подвох

Роли зависят от разговора: сервер сам может быть клиентом другого сервера.

Связи
Язык этого разговора в вебе — HTTP.

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

§ 02

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

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

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

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

wikipedia.orgdomain nameDNStranslates198.35.26.96IP addresseasy for humanswhat routers route to✗ no router can route a name
Имя — для людей, IP — для сетей; между ними стоит DNS.
ConceptDomain Name· доменное имя
Что это
Читаемое имя сайта, которое удобно человеку.
Как работает
Само по себе никуда не ведёт — его сначала переводят в IP-адрес.
Пример
wikipedia.org → 198.35.26.96.
Подвох
Роутеры не понимают имён — только числа.
Связи
Переводит имя в адрес DNS.

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

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

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

Browserwants example.comDNSDomain Name System1 · what is the IP of example.com?2 · here is the IP addressWeb serverat that IP3 · only now connectlookup happens first, every time, in ms
Сначала браузер спрашивает у DNS адрес, и только потом идёт к серверу.
ProtocolDNS· Domain Name System, система доменных имён
Что это
Сервис, который переводит доменное имя в IP-адрес.
Как работает
Браузер спрашивает «какой IP у этого имени?» и получает число.
Пример
example.com → IP-адрес → только потом соединение с сервером.
Подвох
Это первый шаг каждой загрузки: если DNS сломан, сайт «не существует».
Связи
Его ответы хранит DNS caching с TTL.

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

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

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

ask the nearest memory first · go further only on a missBrowsercacheOScacheNetworkresolver cacheFull lookupslow pathanswer + TTL (time to live), e.g. 3600 sreuse it until the TTL runs out, then ask againa DNS change spreads only as old cached answers expire
Сначала спрашивают ближайшую память; полный поиск — только если там пусто. TTL говорит, сколько ответ живёт.
ConceptDNS Caching · TTL· кэш DNS, time to live
Что это
Запомненный ответ DNS и срок, сколько ему можно верить.
Как работает

Браузер, ОС и сеть хранят ответ; пока TTL не истёк, адрес берут из памяти.

Пример
Сайт, где ты уже был, находится мгновенно — адрес лежит в кэше.
Подвох

Поменял DNS — старый ответ ещё живёт в кэшах, пока не истечёт TTL. Изменение расходится не сразу.

Связи
Тот же приём, что у CDN: держать ответ ближе.

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

§ 03

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

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

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

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

ClientServerSYN · let's talkSYN-ACK · ok, let's talkACK · connectedpacket 1got 1 ✓packet 2 · re-sent if lost── handshake done · data flows in order ──
Сначала рукопожатие (SYN, SYN-ACK, ACK), потом данные с подтверждениями; потерянное отправляют снова.
ProtocolTCP· Transmission Control Protocol
Что это
Надёжная линия: всё дойдёт, ничего не потеряется, всё по порядку.
Как работает

Рукопожатие открывает соединение; получатель подтверждает пакеты; потерянные шлют снова.

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

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

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

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

UDP · fire and forgetSenderno handshakeReceiver✗ lostfast and light: live video, calls, gamesa lost frame is fine · waiting is not
UDP шлёт и не оглядывается: потерянный пакет никто не перешлёт.
ProtocolUDP· User Datagram Protocol
Что это
Быстрая линия без гарантий доставки и порядка.
Как работает
Без рукопожатия и без повторов: отправил и забыл.
Пример
Живое видео, голосовые звонки, онлайн-игры.
Подвох
Пакеты теряются — приложение должно это терпеть.
Связи
Противоположный конец регулятора от TCP.

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

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

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

one machine · one IP:80web · HTTP:443web · HTTPS:5432a databaseBrowserIP + port142.250.74.78:443IP = the buildingport = the door
Один IP — одно здание; порт выбирает дверь, то есть сервис.
ConceptPort· порт
Что это
Номер, который выбирает сервис на машине.
Как работает
Каждый сервис «слушает» свой порт; запрос идёт на IP:порт.
Пример
80 — HTTP, 443 — HTTPS; база данных слушает свой порт.
Подвох
Правильный IP с неправильным портом — стук не в ту дверь.
Связи
Дополняет IP address; используется и TCP, и UDP.

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

§ 04

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

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

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

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

ClientServerRequestwhat I want · GET /pageResponsethe result · 200 OK + pageone exchange per page, image or API call
Один обмен HTTP: запрос туда, ответ обратно.
ProtocolHTTP· HyperText Transfer Protocol
Что это
Язык запросов и ответов в вебе.
Как работает

Клиент шлёт запрос, сервер возвращает ответ; один обмен — одна вещь.

Пример
Страница, картинка, вызов API — каждый это отдельный обмен HTTP.
Подвох
Обычный HTTP не зашифрован — его может прочитать любой по пути.
Связи

Состоит из methods, headers + body, status codes; защищённая версия — HTTPS.

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

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

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

GETfetch dataload a page · must change nothingPOSTsend new datasubmit a form · expected to changePUTupdate somethingchange what already existsDELETEremove somethingdelete an item
Четыре главных глагола HTTP и что они значат.
ConceptHTTP Methods· методы, глаголы HTTP
Что это
Слово в начале запроса, которое говорит, что ты хочешь сделать.
Как работает
GET — достать, POST — создать, PUT — обновить, DELETE — удалить.
Пример
Открыл страницу — GET; отправил форму — POST.
Подвох
GET, который что-то меняет, — ошибка проектирования.
Связи
Стоит в первой строке запроса, перед headers.

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

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

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

POST /orders HTTP/1.1Host: shop.exampleContent-Type: application/jsonCookie: session=42{ "item": "book", "qty": 1 }method + paththe intentheadersdetails · metadatabodythe cargo · optionalone HTTP request, as plain text
Запрос HTTP — это просто текст: строка с методом, заголовки, потом тело.
ConceptHeaders · 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 — он сломался. Первая цифра сразу говорит, сработало ли, кто виноват и куда смотреть. Это самый полезный навык отладки в вебе.

2xxsuccess200 OKit worked3xxredirectlook over therego elsewhere4xxclient error404 Not Found · 403 Forbiddenyou asked wrong5xxserver error500 Internal Server Errorit broke
Первая цифра кода — уже половина диагноза: успех, редирект, твоя ошибка или ошибка сервера.
ConceptStatus Codes· статус-коды
Что это
Трёхзначное число в ответе, которое говорит, как всё прошло.
Как работает

2xx — успех, 3xx — редирект, 4xx — ошибка клиента, 5xx — ошибка сервера.

Пример
404 — такой страницы нет; 500 — сервер сломался.
Подвох
Путать 4xx и 5xx — значит искать баг не на той стороне.
Связи
Первое, что смотришь в каждом HTTP-ответе.

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

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

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

ClientServerremembers nothingrequest 1 · Cookie: session=42request 2 · Cookie: session=42request 3 · no cookieevery request must carry proof of who you areno cookie → a stranger again
Сервер ничего не помнит: каждый запрос несёт cookie, а без неё ты снова незнакомец.
ConceptStateless · Cookie· без состояния, куки
Что это
Сервер не помнит прошлых запросов; cookie несёт память с собой.
Как работает

Браузер прикладывает cookie или токен к каждому запросу в заголовках.

Пример
Ты залогинен, потому что каждый запрос несёт твою cookie сессии.
Подвох
Нет cookie — для сервера ты незнакомец.
Связи

Cookie едет в headers; отсутствие состояния помогает load balancer.

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

§ 05

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

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

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

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

HTTP · a postcardYouServerpassword=hunter2anyone on the path can read itHTTPS = HTTP + TLS · a sealed envelopeYouServerx8#Qz!k2@vL…café Wi-Fi, ISP, attacker see only gibberish
HTTP — открытка, которую читает любой по пути; HTTPS — конверт, внутри которого для них только шум.
ProtocolTLS · HTTPS· Transport Layer Security; HTTP + TLS
Что это
Шифрование линии; HTTPS — это HTTP поверх TLS.
Как работает

После TLS-рукопожатия всё содержимое перемешано — по пути видна только бессмыслица.

Пример
Замок в адресной строке; порт 443.
Подвох
Шифрования мало — надо ещё знать, что сервер настоящий.
Связи
Личность сервера доказывает certificate.

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

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

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

Certificate authoritytrusted by your browserBrowserchecks it automaticallyyourbank.comholds the certificatesigns: name is theirshere is my certificateis the signature real?
Удостоверяющий центр подписывает сертификат; сервер показывает его; браузер проверяет подпись.
ConceptCertificate· TLS-сертификат, certificate authority (CA)
Что это
Цифровое удостоверение: «этот сервер владеет этим именем».
Как работает

CA подписывает сертификат; сервер показывает его; браузер проверяет подпись сам.

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

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

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

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

YouMan-in-the-middlereads · changesServeryou think you talk straight to the serverplain HTTP: read and changed, silentlyHTTPS: sealed + verified, the fake can't pass
Атакующий посередине читает и меняет обычный HTTP; HTTPS он не прочитает и подделать не сможет.
TermMan-in-the-Middle· MITM, человек посередине
Что это
Атакующий между тобой и сервером, который читает или меняет трафик.
Как работает
Ты думаешь, что говоришь с сервером, а говоришь через него.
Пример
Чужой Wi-Fi, который подсматривает обычный HTTP.
Подвох
Он невидим: всё «работает», пока данные утекают.
Связи
Защита — TLS (печать) + certificate (проверка личности).

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

§ 06

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

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

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

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

Latency · how long until the first drop arrivesthe round-trip time for a message to go and come backBandwidth · how much flows per seconda wide pipe can still be a long pipe · they are independent
Задержка — длина трубы, пропускная способность — её ширина. Это разные вещи.
ConceptLatency · Bandwidth· задержка и пропускная способность
Что это
Latency — сколько ждать ответа; bandwidth — сколько данных в секунду.
Как работает

Они не зависят друг от друга: можно иметь много ширины и долгое ожидание.

Пример

Большой файл качается быстро, но каждый клик на далёком сайте тормозит.

Подвох

«Быстрый интернет, медленный сайт» — обычно проблема задержки, а не ширины.

Связи
Задержка растёт с каждым round trip; её срезает CDN.

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

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

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

BrowserFar serverDNSTCPTLSHTTPmore round trips × longer distance = slower page
DNS, TCP, TLS, HTTP — каждый шаг стоит хотя бы одного круга до далёкого сервера.
ConceptRound Trip· RTT, round-trip time, круг туда-обратно
Что это
Путь сообщения до сервера и обратно.
Как работает

Каждый шаг — DNS, рукопожатия, запрос — стоит минимум одного круга.

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

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

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

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

Origin serverone place, far awayEdge · Tokyoa copyuser in TokyoEdge · Berlina copyuser in BerlinEdge · São Pauloa copyuser in São Paulocopiesshort trip
Копии лежат на ближних edge-серверах; каждый пользователь идёт к ближайшему, а не через океан.
ToolCDN· Content Delivery Network, сеть доставки контента
Что это
Сеть серверов по миру с копиями твоего контента.
Как работает
Пользователь получает ответ с ближайшего сервера, а не с origin.
Пример
Пользователь в Токио получает страницу из ближнего города.
Подвох
Копии — это кэш: обновления доходят не мгновенно.
Связи

Режет latency и число долгих round trips; родня DNS caching.

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

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

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

UsersLoad balancerServer 1Server 2Server 3down · skippedadd servers behind it to scale · it routes around failures
Балансировщик раздаёт запросы рабочим серверам и обходит упавший.
ToolLoad Balancer· балансировщик нагрузки
Что это
Посредник, который раздаёт запросы между несколькими серверами.
Как работает

Каждый запрос уходит на один из живых серверов; упавший пропускается.

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

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

§ 07

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

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

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

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

1DNSexample.com → IP address2TCPopen a connection to that IP, port 4433TLSencrypt the line, check the certificate4HTTP requestGET · headers · maybe a body5HTTP responsestatus code · headers · body6Renderthe browser draws the page (maybe via a CDN)
Один клик — шесть шагов, каждый со своим словом из курса.

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

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

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

HTTPmethods · headers · body · statusTLSencryption + certificate → HTTPSTCP / UDPreliable or fast · portsIPaddresses · packetsClient–serverwho asksDNSname → IPLatencycost of distanceCDNanswer closercutsLoad balancerspreads loadeach layer rides on the one below it
Слои разговора и помощники вокруг них: каждый слой едет на том, что под ним.
Путь, по порядку
  • DNS превращает доменное имя в IP-адрес.
  • Открывается TCP-соединение к этому IP на порт (443 для HTTPS).
  • TLS-рукопожатие шифрует линию и проверяет сертификат сервера.
  • Клиент шлёт HTTP-запрос — метод, заголовки, может быть тело.
  • Сервер возвращает статус-код, заголовки и тело.
  • CDN может отдать ответ из ближнего места; балансировщик может выбрать сервер.
Признаки, что веб теперь понятен
  • 404 против 500 сразу говорит, чья вина — твоя или сервера.
  • «Быстрый интернет, а сайт медленный» читается как проблема задержки, а не пропускной способности.
  • Замок значит зашифровано и личность проверена — ты знаешь, что он гарантирует.
  • Можешь объяснить, почему для входа нужна cookie на каждом stateless-запросе.
  • Смог бы пересказать весь путь URL выше, не подглядывая.

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

Основы

Packetпакет

Кусок данных с пометкой «откуда» и «куда».

IP AddressIP-адрес

Число, которое опознаёт машину в сети.

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

Клиент спрашивает, сервер отвечает.

Имена

Domain Nameдоменное имя

Читаемое имя сайта для людей.

DNSDomain Name System

Телефонная книга: имя → IP-адрес.

DNS Caching · TTLкэш DNS

Ответ запоминают; TTL говорит, сколько ему верить.

Соединение

TCPTransmission Control Protocol

Надёжная линия: рукопожатие, всё по порядку, потери пересылаются.

UDPUser Datagram Protocol

Быстрая линия без гарантий: отправил и забыл.

Portпорт

Номер двери: какой сервис на машине.

HTTP

HTTPHyperText Transfer Protocol

Язык веба: запрос и ответ.

HTTP MethodsGET · 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-MiddleMITM

Атакующий посередине; от него защищает HTTPS.

Скорость

Latency · Bandwidthзадержка и ширина

Сколько ждать и сколько данных в секунду. Это разные вещи.

Round TripRTT

Путь туда и обратно; каждый круг стоит времени.

CDNContent Delivery Network

Копии контента рядом с пользователями.

Load Balancerбалансировщик

Раздаёт запросы между серверами и обходит упавшие.

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

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

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