Книга: Сетевое программирование. От основ до приложений
На главную: Предисловие
Дальше: Предисловие

Создатели книги

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

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

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

Авторы

Артем Нечипорук окончил Московский государственный университет экономики, статистики и информатики по специальности «Прикладная информатика в экономике».

Разработчик и архитектор программного обеспечения с более чем десятилетним опытом работы на Python и C++. Автор курса по сетевому программированию на C++.

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

Работал в компании «Тензор» над C++ ядром SaaS системы СБИС, используемой для онлайн-сдачи бухгалтерской отчетности по всей России.

С 2015 года работает в компаниях, связанных с информационной безопасностью. Занимался разработкой программно-аппаратных комплексов защищенной связи.

В настоящее время — архитектор программного обеспечения в отделе перспективных исследований «Лаборатории Касперского». Один из его проектов — «Kaspersky Neuromorphic Platform», платформа с открытым кодом для выполнения импульсных нейронных сетей.

Алексей Баринов — разработчик, свыше 25 лет проработавший в ИТ, более половины из них в области сетевой безопасности.

Начинал карьеру программистом контроллеров навигационных систем.

Затем в компании ООО «Газпромэнергодиагностика» проделал длинный путь от ведущего инженера до начальника отдела разработки ПО в области автоматизированного контроля газотранспортных объектов.

Далее был руководителем отдела системного ПО в сфере разработки устройств для цифрового телевидения в компании ЗАО «Рикор ИМТ».

С 2016 года работает в компаниях, занятых информационной безопасностью. Занимался разработкой программно-аппаратных комплексов защищенных сетевых решений.

В настоящее время — разработчик-аналитик в компании RDP.RU, специализирующейся на создании решений для защиты сетевого трафика.

Эксперты

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

Алексей Кузнецов в конце 1990-х и начале 2000-х годов являлся одним из ключевых разработчиков ядра Linux, занимая позицию мейнтейнера сетевой подсистемы с 2000 по 2003 год. За этот период Алексей существенно усовершенствовал сетевой стек Linux, адаптировав его для многоядерных систем, улучшив поддержку IPv6 и внедрив средства управления трафиком.

В дополнение к этому он переработал поддержку протокола TCP, что привело к созданию нового TCP-стека, который был представлен в версии ядра Linux 2.2 и до сих пор широко востребован. Среди разработанных Алексеем инструментов наиболее известны утилиты из набора iputils: ping, tracepath, tftpd, rarpd и утилиты для управления трафиком iproute2: ip, tc, ss.

Стивен Хеммингер (Stephen Hemminger) начал работать над TCP/IP и сетевыми драйверами для Unix с Tektronix, Sequent и nCube, а затем унаследовал разработку сети в Linux от Алексея Кузнецова. Более 20 лет в Linux Foundation он занимался ядром Linux, iproute2 и мостами. Оттуда он перешел в Vyatta, где работал главным инженером проекта программного маршрутизатора на базе Linux. Затем, чтобы внести свой вклад в сетевые драйверы Linux для Azure, он перешел на позицию архитектора в Microsoft.

В настоящее время он совместно с Дэвидом Ахерном занимается сопровождением iproute2.

Петр Савельев — автор пакета PyRoute2 и специалист по сокетам Netlink. Обладает более чем 20-летним опытом в индустрии телекома. Во время работы в Ericsson принимал участие в разработке сетевой подсистемы OpenStack, затем работал с сетями в Amazon Global Payments. На данный момент занимается решениями и аудитом сетевой безопасности в Kubernetes.

Владимир Строгов — эксперт по ядру Windows. Имеет свыше 30 лет опыта разработки на уровне ядра в области хранения данных и безопасности. Занимался файловыми системами, виртуализацией, защитой данных и антивирусной защитой, обратным инжинирингом.

Почти 10 лет Владимир работал над проектами Veritas и Symantec. Затем трудился в «Лаборатории Касперского», в группе Core Drivers, на позициях технического эксперта и руководителя группы. Сейчас Владимир является директором по развитию команды ядра в международной компании.

Никита Соболев — core-разработчик языка Python и его основного интерпретатора — CPython. На постоянной основе занимается разработкой различных open-source-технологий. Проводил ревью кода Python в книге.

Сергей Талантов — старший архитектор программного обеспечения в группе разработки шлюзов для интернета вещей на базе ОС ЛК. Проводил ревью кода C++. Контрибьютор в браузер Chromium.

Александр Певзнер — эксперт в области технологий сети, протоколов и сетевого оборудования. Проводил консультации по топологии сетей, работе сетевого оборудования, сетевым протоколам и их применению в современной практике. Старший системный инженер группы по управлению телекоммуникациями в «Лаборатории Касперского». Имеет большой опыт работы с сетями и автоматизацией управления сетевой инфраструктурой.

Кирилл Круглов — эксперт в области антивирусных технологий и анализа сложных угроз, ведущий разработчик-исследователь в отделе исследования угроз критической инфраструктуре. С 2014 года занимается исследованием угроз, направленных на автоматизированные системы управления и технологические сети.

Консультанты

Перечисленные ниже консультанты оказывали помощь в решении некоторых технических вопросов, относящихся к узким областям и конкретным продуктам.

Руслан Морозов — руководитель отдела разработки решений для рабочих станций и мобильных устройств на базе ОС ЛК. Руслан обладает экспертизой во многих областях, рассмотренных в книге, в особенности в области отладки, безопасности и ядра Linux, а также в сложных вопросах, которые выходят за рамки первой книги.

Александр Гетьман — кандидат физико-математических наук. Занимается направлением анализа сетевого трафика в Институте системного программирования РАН. Александр консультировал авторов по сложным вопросам: например, проксирование, VPN и др. В книге использованы материалы некоторых его статей.

Андрей Федотов — кандидат технических наук, ранее старший научный сотрудник ИСП РАН, работает в компании Яндекс. Андрей предоставил консультации по работе систем статического анализа Svace и системы фаззинг-тестирования Sydr, членом команды разработки которых он являлся.

Святослав Размыслов — продуктовый менеджер PVS-Studio LLC. Он поделился знаниями о работе и возможностях статического анализатора кода PVS-Studio и помог составить описание анализатора PVS-Studio.

Ревьюверы

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

Сергей Талантов проверил и исправил код примеров на C++ — его коммиты доступны в репозитории книги.

Никита Соболев проверил и скорректировал весь Python-код из книги.

Андрей Маркобородов — старший разработчик «Лаборатории Касперского» в группе разработки решений для защиты сетей. Вычитал текст, диаграммы и код глав 3–12, 23, 24 и внес свои конструктивные замечания.

Владислав Егоров — специалист по направлению анализа сетевого трафика в ИСП РАН. Выполнил ревью глав 23 и 24.

Максим Дмитриченко — системный программист с более чем 20-летним опытом разработки. Пишет на C, C++ и Rust. Занимается разработкой встраиваемых систем, ЦОС, высокоскоростных систем анализа информации и принятия решений, обратной инженерией сетевых протоколов. Выполнил ревью глав 20–22, внес замечания по работе прокси. Провел ревью диаграммы сетевого стека Linux в главе 3, а также исследование по главе 6, выяснив, как избежать гонки при обработке сигнала.

Петр Савельев провел вычитку и исправления глав 11 и 12 по теме Netlink.

Александр Певзнер проверил все описания работы протоколов и особенности работы сети в главах 1–6 и 10–24.

Александр Гетьман провел ревью глав 21–23.

Владимир Строгов проверил диаграммы функционирования сетевого стека Windows в главе 3 и проверил главы 14–20 по ОС Windows.

Алексей Кузнецов проверил главу 8, по теме опций управления сокетами.

Руслан Морозов провел ревью глав 7–12.

Андрей Грес — инженер-разработчик встраиваемых систем на основе Linux, занимается конструированием и разработкой программного обеспечения для автомобильных систем экстренного реагирования при авариях и ДТП. Выполнил ревью всех глав, помог с написанием книги, доработал глоссарий, а также оказал помощь с проверкой кода примеров и исправлением примера с OOB.

Александр Цыганкин — технический руководитель кластера «Кибербезопасность» в компании MTS Digital, занимается созданием решений в сфере кибербезопасности и защиты инфраструктуры с использованием искусственного интеллекта. Провел ревью глав с 1-й по 4-ю. Исправил некоторые серьезные ошибки, в том числе в коде и терминологии.

Генрих Селеня — аспирант ОИПИ. Генрих пишет серверы на C++. Провел ревью глав 7 и 8.

Владимир Протасов — технический менеджер компании Яндекс. Провел ревью введения, а также глав 1 и 2.

Павел Балаев — старший разработчик Tarantool, ранее исследователь в отделе технологических исследований компании «Инфотекс». Провел ревью глав 1 и 2.

Иллюстратор

Автор всех иллюстраций в книге — Ксения Баринова.

Прочие участники

История Udev была написана с помощью участников русского сообщества Debian:

Алексей Петров — к.ф.-м. н., ФТИ им. Иоффе РАН.

Максим Дмитриченко — системный программист.

Илья Казакевич — участник русского сообщества Debian.

Дальше: Предисловие