Ориентация главы

Том 7 индустриализирует скелет конкурентности тома 6 в сетевой стек: три фундамента (модель адресов — валюта всего тома; событийный порт — сердце движка с пятью бэкендами; цепочка буферов — валюта плоскости данных) → два транспорта (три главы TCP, золотой стандарт в гл. 66; одна глава UDP) → средний слой (прокси — размещённый дозвон для SOCKS5/CONNECT) → финал (net-misc — кадрирование, файлы портов и сетевые карты). Глава 61 говорила «поставь на скелет TCP/TLS/HTTP — и получится том 7» — этот том выполняет первую половину (TCP/UDP/прокси поставлены); TLS и HTTP — в томах 8/9.

Карта знаний тома

1Фундаментымодель адресов (62) + событийный порт с пятью бэкендами (63) + цепочка буферов (64)
2СервисыDNS-резолвер — сродство с движком (65)
3TCPсоединения и чтение/запись (66 золотой стандарт) + противодавление/семейство отправки/сервер (67)
4UDPдве формы / батчинг / мультикаст (68)
5Средний слойразмещённый дозвон двух протоколов прокси (69)
6Финалкадрирование, файлы портов и данные сетевых карт (70 — P11)

Одна сквозная линия: индустриальная карта скелета

Каждая глава тома 7 проецируется на компонент скелета главы 61 — это отображение-карта чтения тома. Насос планировщика → событийный порт (гл. 63: PollFor как нижнее ожидание; двойственность readiness/completion соответствует позам колбэк против подачи скелета); корутина соединения → колбэки Stream (гл. 66: таблица событий Accept/Read/Close (обратный вызов) — engine-выражение прямолинейной логики корутины); вынесенные вычисления → SendFile/операции на стороне Worker (гл. 67: IO-версия выноса тяжёлой работы — посылка файлов ядром и доставка Post); шина сообщений → прямая передача цепочки буферов (гл. 64: сегментно-цепочечная версия статистических сообщений — SendBuffer без копий); останов группы сервисов → машина состояний + протокол Close (гл. 66-67: CLOSED — единственное конечное состояние, тройка остановки — engine-форма группового Cancel). Перед каждой главой возвращайтесь к схеме скелета — скелет есть карта, движок есть рельеф.

Две сквозные дисциплины

Через весь том проходят две дисциплины, унаследованные от тома 6. Дисциплина нулевого копирования: данные идут от порта к обработчику к отправителю — цепочка ссылок несёт (гл. 64 четыре типа добавления + гл. 67 пять ступеней отправки — полный набор владения плоскости данных); копии только на границах (непрерывизация заголовков протокола Pullup, межграничное копирование Send). Дисциплина Worker: колбэки движка исполняются в потоках Worker — операции прямой передачи вроде Buffer/Read только внутри Worker, межпоточно через Post (привязка планировщика главы 56 в engine-версии) — цена нулевых блокировок есть дисциплина места. Обе дисциплины в главах TCP/UDP/прокси применяются снова и снова — они есть по-главное развёртывание трёх нулевых метрик скелета (насос без блокировок / пул без ожидания / сообщения без блокировок).

Связь с предыдущими и последующими томами

Назад: все инструменты конкурентности тома 6 здесь заступают на пост (Future собирает результаты IO, дерево отмен проходит через порты, пул задач несёт тяжёлые вычисления — золотой стандарт глава есть семейный портрет); конвейер наблюдения тома 5 мониторит движок (уровни/состояния/поля статистики — посты наблюдения гл. 63/67). Вперёд: TLS тома 8 надевается на Stream (гарантия прозрачности гл. 66), HTTP тома 9 надевается на TLS, xhttp тома 10 привозит всю семью — качество транспортного слоя решает качество всего стека. Инструменты кадров/сетевых карт финала net-misc — логистика протокольного слоя и эксплуатации.

Три типа читателей — три маршрута

Серверные разработчики (основная сила): главы фундамента (62-64) читать подряд внимательно — они словарь всех транспортных глав; золотой стандарт TCP (66) построчно (он полный образец использования движка); UDP/прокси — по мере бизнес-надобности. Разработчики встраиваемых/IoT: особенно берегите select-подстраховку (гл. 63 — платформы без выделенного бэкенда) и лёгкость UDP (гл. 68 — первый выбор транспорта при ограниченных ресурсах); продвинутую главу TCP берите по бюджету памяти (блочный бюджет SendFile, потолок WriteLimit). Протокольные разработчики (пишут собственные протоколы / реализации TLS): глава цепочек буферов (64) и глава портов (63) — ваши прямые инструменты — сегментные цепочки + нулевое копирование + двойственность формы суть сырьё протокольного фундамента; машина состояний и остановка глав TCP — ваш поведенческий образец. Все три типа опираются на модель адресов (62) — первый урок тома.

Одно напоминание: «простота» сетевого слоя есть дар расслоения

Новичку socket кажется простым (несколько строк — и соединение), ветеран знает: сетевой слой — самый трудный (переупорядочивание/ретрансляции/буферизация/противодавление/остановка — всё в деталях) — корень этого контраста в том, что расслоение прячет сложность под интерфейс. Сетевой слой XRT возвращает спрятанное на свет: у машины состояний есть имена (четыре состояния), у противодавления — числа (Pending/WriteLimit), у остановки — протокол (тройка), у владения — типы (пять ступеней отправки) — явленная сложность и есть управляемая сложность. Если при чтении тома 7 кажется «труднее socket» — вы смотрите на то, что всегда существовало под socket. С этой оптикой сложность TLS тома 8 (более глубокое расслоение) и HTTP тома 9 (протоколы над протоколами) покажется естественной — каждый слой являет скрытые контракты следующего.

Взгляд на производительность: три уровня оптимизации сетевого стека

Оптимизация сетевой производительности живёт на трёх уровнях — сначала узнайте позиции, потом говорите о настройке. Уровень движка (гл. 63): выбор бэкенда (автоматика движка — различие io_uring и epoll), число Worker (экономика гл. 60), пакетные интерфейсы (семейство Vec — амортизация системных вызовов); уровень соединения (гл. 66-67): бюджет записи (малый вредит пропускной способности, большой теряет противодавление), конфигурация пула буферов (гл. 64 — размеры сегментов и уровни), платформенные вещи класса Nagle/задержек (конфигурация Stream); уровень приложения (слой скелета): переиспользование пула соединений (амортизация TCP-рукопожатий), конвейеризация (перекрытие запросов), эффективность кадрирования протокола (инструменты кадров гл. 70). Снизу вверх отдача убывает, сверху вниз управляемость растёт — сначала измеряйте, потом настраивайте (глава 137 вернётся с инструментами). Разделы «бенчмарк» глав тома — образцы снятия данных.

Самопроверка обучения (перед выходом из тома)

С закрытой книгой ответьте на семь вопросов: что решают zone-ID и списочная семантика модели адресов — каждое своё? Как выбирать readiness/completion порта и как запрашивать возможности? Каким четырём владениям соответствуют четыре типа добавления буферов? Четыре состояния TCP и тройка остановки? Как выбирать из пяти ступеней отправки и как бюджет записи защищает от медленных клиентов? Где граница двух форм UDP и где ловушка MTU? Что обещают размещённая семантика прокси и гарантии прозрачности? Наконец: для сервиса «по корутине на соединение + загрузка файлов + исходящий прокси» нарисуйте диаграмму компонентов и пометьте позиции противодавления каждого слоя — если семь вопросов текут и диаграмма рисуется, том 7 пройден наполовину (net-misc завершит следующая фаза).

📖 Справочники API в этой главе:net (247 записей)tcp (81 записей)

Полные сигнатуры, ограничения параметров, возвращаемые значения и ошибки