Сети Linux, Модели и приложения, Цилюрик О.И., 2024.
Последовательно разобраны различные стороны сетевой инфраструктуры в Linux: базовые понятия сетей и TCP/IP, программные инструменты управления сетевым трафиком, программирование пользовательских сетевых приложений и драйверов сетевых протоколов для ядра Linux. Также исследованы сети TOR, Yggdrasil, I2P, адресация IPv6, службы DNS, DHCP, SSH, DNS-системы разрешения имен EmerDNS и Alfis, что позволяет оценить тенденции развития современного Интернета.

Разрешение адресов и имен.
В принципе, сеть Интернет вполне могла бы работать только на основании адресации через числовые IP-адреса (а, как уже должно стать понятно, эти числовые записи в условных форматах есть запись битовой последовательности длиной 32 или 64 бита). Однако человеку крайне сложно визуально воспринимать такие длинные числовые последовательности. Поэтому адресуемым единицам в сети стали присваивать более или менее осмысленные имена, легко воспринимаемые человеком. Но тогда возникает задача поддержания устойчивых таблиц соответствий таких имен адресам и задача быстрого разрешения имен в адреса и наоборот.
Для решения этих задач была создана (еще на заре Интернета) система DNS (Domain Name System, система доменных имен)— компьютерная распределенная система для получения информации о доменах. Чаще всего она используется для получения IP-адреса по имени хоста, получения информации о маршрутизации почты и некоторой другой адресной информации. Распределенная база данных DNS рассредоточена на иерархии выделенных DNS-серверов и регулируется соответствующим (только для этих целей) протоколом. Из сказанного уже должно быть понятно, что протокол DNS — это один из старейших протоколов Интернета, но он претерпел и массу изменений и имеет множество модификаций.
ОГЛАВЛЕНИЕ.
Предисловие.
Что есть и чего нет в книге?.
Соглашения и выделения, принятые в тексте.
Код примеров и замеченные опечатки.
Источники использованной информации.
Об авторе.
Часть I. Сетевой стек: архитектура.
RFC.
Принципы сетевого стека.
Инкапсуляция данных.
Cетевой порядок байтов.
Адреса MAC.
Разрешение аппаратных адресов.
Адреса IP.
IPv4.
Маски и подсети.
Широковещательный и групповой обмен.
Частные адреса.
Частные IPv4 и NAT.
IPv6.
Префикс адреса.
Сокращения записи IPv6.
Локальные адреса.
Синтаксис записи IPv6.
Прогноз.
Адресные переменные в программном коде.
Разрешение адресов и имен.
Разрешение имен в программном коде.
Сетевые интерфейсы.
Таблица маршрутизации.
Управление роутингом.
Алиасные IP-адреса.
Петлевой интерфейс.
Переименование сетевого интерфейса.
Альтернативные имена.
Порты транспортного уровня.
Источники использованной информации.
Часть II. Протоколы и инструменты прикладного уровня.
Инструменты диагностики.
Инструменты наблюдения.
Инструменты тестирования.
Сервисы сети и systemd.
Протокол SSH.
Передача файлов по SSH.
SSH и Midnight Commander.
Графическая сессия в SSH.
SSH в скриптах.
Протокол DHCP.
Разрешение имен: служба DNS.
Локальный DNS-резолвер bind.
Кеширующий DHCP/DNS-сервер Dnsmasq.
Кеширующий DNS-сервер средствами systemd.
Оптимизация используемых серверов DNS.
Защищенность сети: брандмауэр.
Брандмауэр ufw.
Суперсервер inetd.
Сервер telnet.
Сокетная активация в systemd.
Прокси-серверы.
Прокси сквозь SSH.
Клиенты прокси.
Кто и как использует прокси?.
Источники использованной информации.
Часть III. Программирование сетевых приложений.
Общие принципы.
Клиент и сервер.
Сети датаграммные и потоковые.
Фазы соединения TCP.
Адаптивные механизмы TCP.
Сообщения прикладного уровня в TCP.
Присоединенный UDP.
Сетевые сокеты и операции.
Обменные операции.
Параметры сокета.
Использование сокетного API.
UDP клиент-сервер.
TCP клиент-сервер.
Клиент-сервер в UNIX-домене.
Управляющие операции.
Классы обслуживания сервером.
Последовательный сервер.
Параллельный сервер.
Предварительное клонирование процесса.
Создание потока по запросу.
Пул потоков.
Последовательный сервер с очередью обслуживания.
Суперсервер и сокетная активация.
Расширенные операции ввода/вывода.
Примеры реализации.
Неблокируемый ввод/вывод.
Замечания к примерам.
Мультиплексирование ввода/вывода.
Замечания к примерам.
Ввод/вывод, управляемый сигналом.
Асинхронный ввод/вывод.
Символьный сокет.
Канальный уровень.
Источники использованной информации.
Часть IV. Драйверы сетевых устройств в ядре Linux.
Введение в модули ядра.
Сборка модуля.
Точки входа и завершения.
Вывод диагностики модуля.
Загрузка модулей.
Параметры загрузки модуля.
Подсчет ссылок использования.
Структуры данных сетевого стека.
Путь пакета сквозь стек протоколов.
Прием: традиционный подход.
Прием: высокоскоростной интерфейс.
Передача пакетов.
Драйверы: сетевой интерфейс.
Статистика интерфейса.
Виртуальный сетевой интерфейс.
Протокол сетевого уровня.
Еще раз о виртуальном интерфейсе.
Протокол транспортного уровня.
Источники использованной информации.
Часть V. За границами традиций Интернета.
Обсуждение.
Стек Tor.
Tor как прокси для любых служб.
Ресурсы onion.
Mesh-сети.
Сеть Yggdrasil.
Выбор пиров для хоста.
Майнинг IPv6-адресов.
Yggdrasil в локальной сети.
Короткие адреса.
Работа в Yggdrasil без установки клиента.
Скоростные показатели.
Еще одна сеть: I2P.
Запуск сети.
Использование сети.
Доступ к ресурсам извне.
Альтернативные DNS.
Регистрация домена.
Блокчейн как регистратор домена.
EmerСoin.
OpenNIC.
Alfis.
Доступ к локальным хостам.
Источники использованной информации.
Некоторые краткие итоги.
Предметный указатель.
Купить - epub .
Теги: учебник по программированию :: программирование :: Цилюрик :: хост :: сокет :: интерфейс :: подсета :: сервер








