
Последовательно разобраны различные стороны сетевой инфраструктуры в Linux: базовые понятия сетей и TCP/IP, программные инструменты управления сетевым трафиком, программирование пользовательских сетевых приложений и драйверов сетевых протоколов для ядра Linux. Также исследованы сети TOR, Yggdrasil, I2P, адресация IPv6, службы DNS, DHCP, SSH, DNS-системы разрешения имён EmerDNS и Alfis, что позволяет оценить тенденции развития современного Интернета.
Для специалистов по безопасности, сетевых администраторов, программистов
Новейшие сетевые разработки.
Сегодня Linux де-факто является основной операционной системой для обслуживания и защиты компьютерных сетей. Данная книга призвана познакомить читателя с новейшими сетевыми разработками в контексте инструментария Linux.
В первой части книги подробно рассказано о протоколе IPv6, который в настоящее время постепенно приходит на смену протоколу IPv4, доминировавшему на протяжении последних 30 лет.
Следующая часть подробно иллюстрирует, как устанавливать, настраивать и использовать все основные протокольные механизмы и инструменты, обеспечивающие работу Интернета и локальных сетей: DNS, DHCP, SSH.
Последняя часть, самая свежая с хронологической точки зрения, содержит выборочный обзор альтернативных проектов «Интернет завтрашнего дня»: сети TOR, Yggdrasil, I2P, альтернативные DNS-системы разрешения имён EmerDNS и Alfis. Хотя рассмотренные технологии выбраны на вкус автора, но в целом дают весьма полное впечатление о том, как эволюционирует современный Интернет.
Автор этой книги на протяжении свыше 40 лет являлся непосредственным участником разработки проектов из области системотехники и программного обеспечения разного масштаба и разной целевой ориентации. При этом практически все из них в большей или меньшей мере были связаны с сетевыми обменами. Предлагаемый в этой книге материал является обобщением практического опыта автора.
Это книга о том как выживать в эпоху обрушения сети Интернет.
автор книги
Книгу “Сети Linux. Модели и приложения” можно купить со скидкой в интернет-магазине издательства “БХВ“.
Предисловие………………………………………………………………………………………………………………………………… 6
Что есть и чего нет в книге?……………………………………………………………………………………………………………… 7
Соглашения и выделения, принятые в тексте…………………………………………………………………………………….. 8
Код примеров и замеченные опечатки……………………………………………………………………………………………….. 8
Источники использованной информации…………………………………………………………………………………………… 8
Об авторе………………………………………………………………………………………………………………………………………… 9
Часть I. Сетевой стек: архитектура………………………………………………………………………………………. 10
RFC……………………………………………………………………………………………………………………………………………….. 10
Принципы сетевого стека………………………………………………………………………………………………………………… 12
Инкапсуляция данных…………………………………………………………………………………………………………….. 13
Cетевой порядок байтов………………………………………………………………………………………………………….. 14
Адреса MAC………………………………………………………………………………………………………………………………….. 15
Разрешение аппаратных адресов………………………………………………………………………………………………. 18
Адреса IP……………………………………………………………………………………………………………………………………….. 19
IPv4……………………………………………………………………………………………………………………………………….. 20
Маски и подсети……………………………………………………………………………………………………………. 20
Широковещательный и групповой обмен……………………………………………………………………….. 22
Частные адреса………………………………………………………………………………………………………………. 23
Частные IPv4 и NAT……………………………………………………………………………………………………… 24
IPv6……………………………………………………………………………………………………………………………………….. 24
Префикс адреса……………………………………………………………………………………………………………… 25
Сокращения записи IPv6………………………………………………………………………………………………… 26
Локальные адреса………………………………………………………………………………………………………….. 28
Синтаксис записи IPv6…………………………………………………………………………………………………… 29
Прогноз………………………………………………………………………………………………………………………… 31
Адресные переменные в программном коде…………………………………………………………………………….. 32
Разрешение адресов и имен……………………………………………………………………………………………………… 34
Разрешение имен в программном коде…………………………………………………………………………… 35
Сетевые интерфейсы………………………………………………………………………………………………………………………. 37
Таблица маршрутизации………………………………………………………………………………………………………….. 44
Управление роутингом………………………………………………………………………………………………….. 46
Алиасные IP-адреса………………………………………………………………………………………………………………… 49
Петлевой интерфейс……………………………………………………………………………………………………………….. 53
Переименование сетевого интерфейса……………………………………………………………………………………… 54
Альтернативные имена………………………………………………………………………………………………….. 56
Порты транспортного уровня………………………………………………………………………………………………………….. 58
Источники использованной информации…………………………………………………………………………………………. 59
Часть II. Протоколы и инструменты прикладного уровня………………………………………………. 61
Инструменты диагностики………………………………………………………………………………………………………………. 61
Инструменты наблюдения………………………………………………………………………………………………………. 63
Инструменты тестирования…………………………………………………………………………………………………….. 67
Сервисы сети и systemd…………………………………………………………………………………………………………………… 69
Протокол SSH……………………………………………………………………………………………………………………………….. 70
Передача файлов по SSH………………………………………………………………………………………………………… 74
SSH и Midnight Commander…………………………………………………………………………………………………….. 75
Графическая сессия в SSH………………………………………………………………………………………………………. 79
SSH в скриптах………………………………………………………………………………………………………………………. 80
Протокол DHCP…………………………………………………………………………………………………………………………….. 81
Разрешение имен: служба DNS……………………………………………………………………………………………………….. 85
Локальный DNS-резолвер bind……………………………………………………………………………………………….. 86
Кеширующий DHCP/DNS-сервер Dnsmasq……………………………………………………………………………… 87
Кеширующий DNS-сервер средствами systemd………………………………………………………………………… 93
Оптимизация используемых серверов DNS…………………………………………………………………………….. 96
Защищенность сети: брандмауэр……………………………………………………………………………………………………. 100
Брандмауэр ufw…………………………………………………………………………………………………………………….. 102
Суперсервер inetd…………………………………………………………………………………………………………………………. 107
Сервер telnet…………………………………………………………………………………………………………………………. 109
Сокетная активация в systemd……………………………………………………………………………………………….. 112
Прокси-серверы……………………………………………………………………………………………………………………………. 118
Прокси сквозь SSH………………………………………………………………………………………………………………. 125
Клиенты прокси……………………………………………………………………………………………………………………. 125
Кто и как использует прокси?………………………………………………………………………………………………… 128
Источники использованной информации……………………………………………………………………………………….. 130
Часть III. Программирование сетевых приложений……………………………………………………….. 131
Общие принципы………………………………………………………………………………………………………………………….. 131
Клиент и сервер…………………………………………………………………………………………………………………….. 132
Сети датаграммные и потоковые……………………………………………………………………………………………. 132
Фазы соединения TCP………………………………………………………………………………………………….. 134
Адаптивные механизмы TCP……………………………………………………………………………………….. 135
Сообщения прикладного уровня в TCP………………………………………………………………………… 136
Присоединенный UDP…………………………………………………………………………………………………. 138
Сетевые сокеты и операции…………………………………………………………………………………………………………… 138
Обменные операции………………………………………………………………………………………………………………. 144
Параметры сокета…………………………………………………………………………………………………………………. 147
Использование сокетного API……………………………………………………………………………………………….. 149
UDP клиент-сервер……………………………………………………………………………………………………… 150
TCP клиент-сервер………………………………………………………………………………………………………. 152
Клиент-сервер в UNIX-домене…………………………………………………………………………………….. 157
Управляющие операции………………………………………………………………………………………………………………… 157
Классы обслуживания сервером……………………………………………………………………………………………………. 158
Последовательный сервер……………………………………………………………………………………………………… 162
Параллельный сервер……………………………………………………………………………………………………………. 162
Предварительное клонирование процесса………………………………………………………………………………. 163
Создание потока по запросу…………………………………………………………………………………………………… 164
Пул потоков…………………………………………………………………………………………………………………………. 165
Последовательный сервер с очередью обслуживания……………………………………………………………… 167
Суперсервер и сокетная активация…………………………………………………………………………………………. 168
Расширенные операции ввода/вывода……………………………………………………………………………………………. 175
Примеры реализации…………………………………………………………………………………………………………….. 176
Неблокируемый ввод/вывод…………………………………………………………………………………………………. 176
Замечания к примерам…………………………………………………………………………………………………. 177
Мультиплексирование ввода/вывода……………………………………………………………………………………… 179
Замечания к примерам…………………………………………………………………………………………………. 182
Ввод/вывод, управляемый сигналом……………………………………………………………………………………… 183
Асинхронный ввод/вывод……………………………………………………………………………………………………… 184
Символьный сокет……………………………………………………………………………………………………………………….. 185
Канальный уровень………………………………………………………………………………………………………………………. 186
Источники использованной информации……………………………………………………………………………………….. 187
Часть IV. Драйверы сетевых устройств в ядре Linux……………………………………………………….. 188
Введение в модули ядра……………………………………………………………………………………………………………….. 189
Сборка модуля……………………………………………………………………………………………………………………… 189
Точки входа и завершения…………………………………………………………………………………………………….. 190
Вывод диагностики модуля…………………………………………………………………………………………………… 191
Загрузка модулей………………………………………………………………………………………………………………….. 192
Параметры загрузки модуля………………………………………………………………………………………… 194
Подсчет ссылок использования……………………………………………………………………………………………… 198
Структуры данных сетевого стека…………………………………………………………………………………………………. 199
Путь пакета сквозь стек протоколов……………………………………………………………………………………………… 200
Прием: традиционный подход……………………………………………………………………………………………….. 200
Прием: высокоскоростной интерфейс…………………………………………………………………………………….. 201
Передача пакетов………………………………………………………………………………………………………………….. 204
Драйверы: сетевой интерфейс………………………………………………………………………………………………………… 205
Статистика интерфейса………………………………………………………………………………………………………….. 211
Виртуальный сетевой интерфейс……………………………………………………………………………………………. 213
Протокол сетевого уровня……………………………………………………………………………………………………………. 218
Еще раз о виртуальном интерфейсе……………………………………………………………………………………….. 224
Протокол транспортного уровня…………………………………………………………………………………………………… 230
Источники использованной информации……………………………………………………………………………………….. 233
Часть V. За границами традиций Интернета……………………………………………………………………. 234
Обсуждение………………………………………………………………………………………………………………………………….. 234
Стек Tor……………………………………………………………………………………………………………………………………….. 236
Tor как прокси для любых служб…………………………………………………………………………………………… 237
Ресурсы onion……………………………………………………………………………………………………………………….. 239
Mesh-сети…………………………………………………………………………………………………………………………………….. 242
Сеть Yggdrasil………………………………………………………………………………………………………………………. 243
Выбор пиров для хоста………………………………………………………………………………………………… 247
Майнинг IPv6-адресов…………………………………………………………………………………………………. 252
Yggdrasil в локальной сети…………………………………………………………………………………………… 259
Короткие адреса…………………………………………………………………………………………………………… 261
Работа в Yggdrasil без установки клиента……………………………………………………………………… 263
Скоростные показатели………………………………………………………………………………………………… 265
Еще одна сеть: I2P………………………………………………………………………………………………………………… 269
Запуск сети………………………………………………………………………………………………………………….. 270
Использование сети……………………………………………………………………………………………………… 272
Доступ к ресурсам извне………………………………………………………………………………………………. 274
Альтернативные DNS…………………………………………………………………………………………………………………… 277
Регистрация домена………………………………………………………………………………………………………………. 277
Блокчейн как регистратор домена………………………………………………………………………………………….. 278
EmerСoin………………………………………………………………………………………………………………………………. 279
OpenNIC……………………………………………………………………………………………………………………… 287
Alfis……………………………………………………………………………………………………………………………………… 289
Доступ к локальным хостам………………………………………………………………………………………………………….. 296
Источники использованной информации……………………………………………………………………………………….. 300
Некоторые краткие итоги…………………………………………………………………………………………………….. 302
Предметный указатель………………………………………………………………………………………………………….. 303

Цилюрик Олег Иванович — программист-разработчик с более чем 40-летним опытом, преподаватель, автор книг по Linux и Unix , в том числе «Расширения ядра Linux. Драйверы и модули» и «Linux и Go. Эффективное низкоуровневое программирование», высоко оцененных профессионалами и широкой читательской аудиторией.
-
НОВИНКА
Сети Linux. Модели и приложения
775 ₽
581 ₽