Веб-протоколы
Сетевое взаимодействие — стек протоколов, а не один HTTP:
flowchart TD A["HTTP semantics"] --> B["TLS — конфиденциальность и подлинность"] B --> C["TCP или QUIC — доставка потоков"] C --> D["IP — маршрутизация пакетов"] D --> E["Ethernet / Wi-Fi — локальная передача"] DNS["DNS — имя → адрес"] -. "до соединения" .-> D
Уровни помогают локализовать ошибку. 404 означает, что HTTP-сервер ответил; TCP timeout означает, что до HTTP дело могло не дойти.
HTTP
HTTP задаёт request/response semantics: method, target, headers, body и status. Он не обязан создавать новое TCP-соединение для каждого запроса: соединения повторно используются, а HTTP/2 и HTTP/3 мультиплексируют streams.
HTTPS и TLS
HTTPS — HTTP поверх TLS. TLS:
- согласует криптографические параметры;
- проверяет сертификат сервера и имя;
- выводит ключи сессии;
- защищает целостность и конфиденциальность данных.
TLS не делает доверенным само приложение: сервер всё ещё может авторизовать неверно или записать секрет в log.
DNS
DNS переводит имя в записи, например IPv4/IPv6, и использует кэш с TTL. Смена DNS не мгновенна: разные resolver ещё могут держать старый ответ. Успешный DNS lookup не гарантирует доступность порта.
WebSocket и Server-Sent Events
- WebSocket даёт двунаправленный канал после handshake.
- SSE передаёт поток событий от сервера к клиенту поверх HTTP.
- Обычный polling проще, но создаёт лишние запросы и задержку.
Выбор зависит от направления данных, прокси, масштабирования соединений и требований к восстановлению.
Диагностическая лестница
getent hosts api.example.test
nc -vz api.example.test 443
curl -v --connect-timeout 3 "$DEMO_ENDPOINT/health"В закрытой среде использую разрешённые инструменты и не публикую реальные адреса.
Типичные сбои
- Искать REST-ошибку, когда имя не разрешается.
- Перепутать connect timeout с read timeout.
- Считать TLS certificate validation необязательной внутри сети.
- Не учитывать proxy/load balancer и его timeout.
- Держать тысячи WebSocket connections без heartbeat и backpressure.
Вопросы для собеседования
На каком уровне находится HTTP? На прикладном; ниже работает transport и IP.
Зачем DNS TTL? Ограничить время кэширования записи и нагрузку на resolver; он создаёт окно распространения изменений.
Что проверяет TLS certificate? Связь публичного ключа с удостоверенной identity и соответствие имени при доверенной цепочке.
Чем WebSocket отличается от SSE? WebSocket двунаправленный, SSE в основном server-to-client и остаётся моделью HTTP stream.
См. Принципы организации Интернет, Версии протокола HTTP, SSL.