PACKET / WORKBOOKWorkbook 01 / trace & annotations

Working through one HTTPS request

URLhttps://example.com/field-notes
Subject
Public document
Exchange
Illustrative, not measured
Assumption
New session; caches discussed separately

Set up the observation

This workbook examines decisions and observations. It contains no latency measurements or captured traffic; addresses and exchanges are teaching examples.

RESOLUTIONBrowser⇄ResolverObtain an address for the name
CONNECTIONBrowser⇄ServerTransport and authentication
REPRESENTATIONServer→BrowserStatus, headers, document

A browser does not obtain a web page with one indivisible action. It interprets a URL, finds a destination, establishes a suitable connection, checks the server’s identity, requests a representation and interprets the response. Some steps can be reused from an earlier visit. Others depend on the selected HTTP version.

The useful mental model is a chain of separate questions. Which name? Which address? Which transport? Which identity? Which resource? A successful answer at one stage is evidence about that stage, not proof that every later stage will succeed.

D1

Name & address

DNS associates domain names with records. An A record holds an IPv4 address; AAAA holds an IPv6 address; CNAME aliases one name to another. A recursive resolver normally answers a client using cached data or by consulting other DNS servers as needed.

A successful lookup does not show that an address is reachable, that a service is listening, or that a certificate is valid. One name may resolve to several addresses. Different networks can receive different answers, and a browser may attempt IPv6 and IPv4 according to its connection strategy.

TTL

A cache lifetime expressed in seconds. It controls how long a record may remain reusable in a DNS cache; it is not a guarantee that every device will notice a change at the exact same instant.

When investigating a change, distinguish the authoritative record from an answer already held by a recursive or local cache. “The DNS is correct” is too broad unless it identifies which answer was observed, where and when.

T2

Transport choice

TCP provides an ordered byte stream with retransmission and congestion control. Applications receive bytes, not the original network packet boundaries. A connection can be established successfully and still later become slow or fail. Opening a port and transferring a large response exercise different parts of the path.

HTTP/1.1 and HTTP/2 commonly run over TCP; HTTPS adds TLS. HTTP/3 instead runs over QUIC, which is carried over UDP and integrates TLS 1.3 for security. Calling HTTP/3 “unreliable UDP” misses the transport implemented by QUIC: it provides reliable streams and congestion control above UDP.

Independent QUIC streams avoid the same cross-stream transport head-of-line blocking associated with a single TCP connection. They still share network capacity and congestion state, so packet loss and congestion do not stop mattering. Protocol names are not performance guarantees.

S3

Server verification

TLS protects data in transit and, in ordinary HTTPS, authenticates the server through a certificate chain and a name check. The client needs to establish that the certificate is valid for the requested hostname, valid in time and trusted under its verification rules. An encrypted connection to the wrong party is not the intended result.

A certificate problem can come from the wrong hostname, expiry, a missing intermediate certificate, an untrusted issuer or an incorrect device clock. Those are different causes. Disabling verification conceals the symptom while removing a central protection.

TLS does not certify that a page’s editorial claims are true, or that the operator will handle submitted data responsibly. It authenticates the connection endpoint under the certificate trust model. Content trust and transport security are related but distinct questions.

A working certificate is necessary for ordinary trusted HTTPS. It is not a general certificate of trustworthiness for everything published behind it.
H4

Request & response

HTTP defines request methods, response statuses, headers and representation semantics. A browser can receive a perfectly valid HTTP response that reports failure. Conversely, a connection failure can occur before any HTTP status is available. “It returned an error” should distinguish these two situations.

Read the response in layers
PartQuestion it answers
StatusHow did the server handle this request?
Content-TypeWhat media type describes the representation?
Cache-ControlUnder what conditions may a cache store or reuse it?
BodyWhat representation, if any, was transferred?

200 alone does not establish that the expected document arrived. A misrouted request may receive an unrelated HTML page with a successful status. Check the intended content as well as the status. A redirect is also a response; following it introduces another destination and another opportunity for failure.

C5

Reading again

A cache can reuse a fresh response without asking the origin again. Once a stored response becomes stale, it may need validation or replacement, depending on its directives and the request. Validation asks whether the stored representation is still usable; it does not necessarily download the whole document.

no-cache does not mean “never store”. It requires successful validation before reuse. no-store tells caches not to store the applicable request or response. These directives solve different problems. Neither is a substitute for access control or a reason to put confidential data in a public document.

Validators such as ETag support conditional requests. A 304 response can allow reuse of the stored representation without transferring its body again. A reader may therefore see current content even when the network log does not show another complete document download.

X6

Failure analysis

Begin with one reproducible observation: the exact hostname, the time, the network and the visible failure. Keep secrets out of notes. Compare the same request on the same device before introducing multiple simultaneous changes. Otherwise, a successful result may leave the cause as unclear as the original failure.

  1. Resolution. Was an address obtained? Which address family was used?
  2. Connection. Was the transport established, or did it time out or refuse?
  3. Identity. Did certificate and hostname verification succeed?
  4. Response. Was there an HTTP status and the expected media type?
  5. Representation. Was the intended content complete and usable?

A small page loading successfully is evidence for that request. It does not establish large-transfer throughput, uninterrupted long-lived connections or every other application path. Write conclusions at the same scale as the observation. That habit produces fewer dramatic theories and more useful next steps.

Failure worksheet

ObservationInspect nextNot established yet
Name resolution failedRequested name, resolver response and local network.That the web server is powered off.
Address available, connection absentSelected address, transport and port reachability.That the certificate is incorrect.
TLS verification failedName, clock, validity interval and chain.That disabling verification is the repair.
HTTP 200, wrong documentPath, Host, redirects and request handler.That the intended resource works.
Small response works, large one stopsLoss, limits, timeouts and characteristics of the larger request.A single exact cause from this symptom alone.
PACKET / WORKBOOKРабочая тетрадь 01 / схема и комментарии

Разбор одного HTTPS-запроса

URLhttps://example.com/field-notes
Объект
Публичный документ
Обмен
Иллюстративный, не измеренный
Предположение
Новая сессия; кэши оговорены отдельно

Условия разбора

Эта тетрадь разбирает решения и наблюдения. Здесь нет замеров задержек и нет настоящего захвата трафика; адреса и обмены служат примерами.

РАЗРЕШЕНИЕБраузер⇄РезолверПолучить адрес имени
СОЕДИНЕНИЕБраузер⇄СерверТранспорт и удостоверение
ПРЕДСТАВЛЕНИЕСервер→БраузерСтатус, заголовки, документ

Браузер получает веб-страницу не одним неделимым действием. Он разбирает URL, находит адрес назначения, устанавливает подходящее соединение, проверяет идентичность сервера, запрашивает представление и обрабатывает ответ. Часть шагов может использовать результат прежнего посещения. Другие зависят от выбранной версии HTTP.

Полезная мысленная модель — последовательность отдельных вопросов. Какое имя? Какой адрес? Какой транспорт? Чья идентичность? Какой ресурс? Успех на одном этапе подтверждает именно этот этап, но не гарантирует успешного прохождения всех последующих.

D1

Имя и адрес

DNS связывает доменные имена с записями. Запись A содержит адрес IPv4, AAAA — IPv6, а CNAME указывает другое имя. Рекурсивный резолвер обычно отвечает клиенту из кэша или при необходимости обращается к другим DNS-серверам.

Успешный поиск не доказывает, что адрес доступен, сервис слушает нужный порт или сертификат действителен. Одно имя может возвращать несколько адресов. Из разных сетей могут приходить разные ответы, а браузер выбирает попытки по IPv6 и IPv4 в соответствии со своей стратегией соединения.

TTL

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

При разборе изменения различайте авторитетную запись и ответ, уже сохранённый рекурсивным или локальным кэшем. Фраза «DNS правильный» слишком широка, если не указано, какой именно ответ наблюдался, где и когда.

T2

Выбор транспорта

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

HTTP/1.1 и HTTP/2 обычно работают поверх TCP; HTTPS добавляет TLS. HTTP/3 использует QUIC, который передаётся поверх UDP и включает TLS 1.3 для защиты. Называть HTTP/3 «ненадёжным UDP» неверно: QUIC реализует над UDP надёжные потоки и управление перегрузкой.

Независимые потоки QUIC избегают той же межпоточной блокировки на транспортном уровне, которая возникает внутри одного TCP-соединения. При этом они по-прежнему делят пропускную способность сети и состояние перегрузки: потери пакетов не перестают иметь значение. Название протокола не гарантирует производительность.

S3

Проверка сервера

TLS защищает передаваемые данные и в обычном HTTPS удостоверяет сервер через цепочку сертификатов и проверку имени. Клиент должен установить, что сертификат подходит запрошенному имени, действителен по времени и доверен по применимым правилам проверки. Зашифрованное соединение не с той стороной не является желаемым результатом.

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

TLS не подтверждает правдивость опубликованного текста и не гарантирует ответственное обращение оператора с переданными ему данными. Он удостоверяет конечную точку соединения в рамках модели доверия сертификатам. Доверие содержимому и защищённость транспорта связаны, но это разные вопросы.

Корректный сертификат необходим для обычного доверенного HTTPS. Он не является общим свидетельством благонадёжности всего, что опубликовано на сайте.
H4

Запрос и ответ

HTTP определяет методы запросов, статусы ответов, заголовки и семантику представлений. Браузер может получить совершенно корректный HTTP-ответ, сообщающий об ошибке. И наоборот, соединение может завершиться неудачно ещё до получения какого-либо HTTP-статуса. Формулировка «вернулась ошибка» должна различать эти ситуации.

Читайте ответ по слоям
ЧастьНа какой вопрос отвечает
СтатусКак сервер обработал этот запрос?
Content-TypeКакой медиатип описывает представление?
Cache-ControlКогда кэш может сохранить или повторно использовать ответ?
ТелоКакое представление было передано, если оно есть?

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

C5

Повторное чтение

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

no-cache не означает «никогда не сохранять». Эта директива требует успешной проверки перед повторным использованием. no-store предписывает кэшу не сохранять соответствующий запрос или ответ. Директивы решают разные задачи. Ни одна из них не заменяет контроль доступа и не оправдывает размещение конфиденциальных данных в публичном документе.

Валидаторы, например ETag, поддерживают условные запросы. Ответ 304 может разрешить повторное использование сохранённого представления без передачи тела заново. Поэтому читатель способен видеть актуальный текст, хотя в сетевом журнале нет ещё одной полной загрузки документа.

X6

Разбор отказа

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

  1. Разрешение имени. Получен ли адрес? Какое семейство адресов использовалось?
  2. Соединение. Установлен ли транспорт, был отказ или истёк срок ожидания?
  3. Идентичность. Прошла ли проверка сертификата и имени?
  4. Ответ. Получен ли HTTP-статус и ожидаемый медиатип?
  5. Представление. Получено ли нужное содержимое целиком и пригодно ли оно для использования?

Успешная загрузка небольшой страницы подтверждает выполнение именно этого запроса. Она не устанавливает скорость большой передачи, устойчивость долгих соединений или работоспособность всех остальных сценариев приложения. Масштаб вывода должен совпадать с масштабом наблюдения. Такая привычка приносит меньше громких теорий и больше полезных следующих шагов.

Рабочая таблица отказов

НаблюдениеПроверить следующимПока нельзя заключить
Имя не разрешилосьЗапрошенное имя, ответ резолвера, локальную сеть.Что веб-сервер выключен.
Адрес есть, соединения нетВыбранный адрес, транспорт и доступность порта.Что сертификат неверен.
Проверка TLS не прошлаИмя, часы, срок и цепочку сертификатов.Что исправление — отключить проверку.
HTTP 200, чужой документПуть, Host, перенаправления и обработчик.Что нужный ресурс работает.
Малый ответ быстрый, большой обрываетсяПотери, ограничения, тайм-ауты и характеристики большого запроса.Одну точную причину по этому симптому.