Сети Linux. Модели и приложения

Последовательно разобраны различные стороны сетевой инфраструктуры в Linux: базовые понятия сетей и TCP/IP, программные инструменты управления сетевым трафиком, программирование пользовательских сетевых приложений и драйверов сетевых протоколов для ядра Linux. Также исследованы сети TOR, Yggdrasil, I2P, адресация IPv6, службы DNS, DHCP, SSH, DNS-системы разрешения имен EmerDNS и Alfis, что позволяет оценить тенденции развития современного Интернета. Для специалистов по безопасности, сетевых администраторов, программистов.
Программирование сетевых приложений: Первый вопрос, который естественным образом возникает при чтении этой и последующих частей книги в отношении программных кодов: почему для рассмотрения использован язык низкого уровня C и иногда, и то только для краткости изложения, его клон C++? Ответ здесь прост: - Linux, как и любая UNIX-система, написан на C — это базовый язык всего этого класса операционных систем;
- только в терминах такого базового языка можно целиком проследить путь, по которому сокетные данные пользовательского пространства превращаются в структуры сокетных буферов ядра Linux, отправляются в физическую среду передачи и на ответном конце снова, проходя форму сокетных буферов ядра, через данные сокета обращаются в конечные данные пользовательских приложений;
- языки высокого уровня, особенно новые языки, такие как Python, Go, Rust, Kotlin, предоставляют языковые интерфейсы (библиотеки, пакеты, модули, крейты и пр.), на высоком уровне позволяющие продуктивно реализовывать сетевые механизмы. И это само по себе отдельные обширные темы, заслуживающие и отдельных книг для их изложения. Но «под капотом» всех этих и любых механизмов высокого уровня все равно лежат базовые POSIX-механизмы языка C;
- поэтому реализовывать сетевые проекты можно, и даже нужно, на инструментах высокого уровня. Но для понимания того, что при этом происходит, следует использовать уровень POSIX-нотаций.
Для начала знакомства с техникой написания модулей ядра Linux проще не вдаваться в пространные объяснения, но создать простейший модуль (код такого модуля интуитивно понятен всякому программисту), собрать его и наблюдать исполнение. Вот с такого образца простейшего модуля ядра (см. каталог first_hello сопровождающего книгу файлового архива) мы и начнем рассмотрение.
Конечно, дать исчерпывающую картину сетевого мира в Linux на таком ограниченном объеме (да и на любом обозримом) невозможно! Но цель при подготовке этой книги ставилась иная: определить основу понятий архитектуры сети и наметить общую схему задач, решаемых в сетевом программировании, администрировании и использовании. В итоге в тексте книги отчетливо сложились несколько совершенно различных частей:
1. Архитектура и терминология сети.
2. Протоколы и программные инструменты работы с различными протоколами сети.
3. Сокетное программирование. Программирование приложений пользовательского адресного пространства.
4. Сетевые драйверы и протоколы. Программирование модулей ядра Linux — драйверов сетевых адаптеров и протоколов.
5. Новые, экспериментальные и экстравагантные проекты, работающие над Интернетом. Тенденции и отдельные примеры.
Каждая из этих областей требует для своего детального описания отдельной книги под тысячу страниц. Такие книги есть, и замечательные книги (некоторые из них упомянуты в списках источников информации в конце каждой части), и именно к ним следует обращаться для детального изучения каждой из обозначенных тем.
Название: Сети Linux. Модели и приложения
Автор: Олег Цилюрик
Издательство: БХВ-Петербург
Год: 2024
Страниц: 305
Язык: русский
Формат: pdf, epub + Code
Размер: 10.9 MB
Скачать Сети Linux. Модели и приложения
Программирование сетевых приложений: Первый вопрос, который естественным образом возникает при чтении этой и последующих частей книги в отношении программных кодов: почему для рассмотрения использован язык низкого уровня C и иногда, и то только для краткости изложения, его клон C++? Ответ здесь прост: - Linux, как и любая UNIX-система, написан на C — это базовый язык всего этого класса операционных систем;
- только в терминах такого базового языка можно целиком проследить путь, по которому сокетные данные пользовательского пространства превращаются в структуры сокетных буферов ядра Linux, отправляются в физическую среду передачи и на ответном конце снова, проходя форму сокетных буферов ядра, через данные сокета обращаются в конечные данные пользовательских приложений;
- языки высокого уровня, особенно новые языки, такие как Python, Go, Rust, Kotlin, предоставляют языковые интерфейсы (библиотеки, пакеты, модули, крейты и пр.), на высоком уровне позволяющие продуктивно реализовывать сетевые механизмы. И это само по себе отдельные обширные темы, заслуживающие и отдельных книг для их изложения. Но «под капотом» всех этих и любых механизмов высокого уровня все равно лежат базовые POSIX-механизмы языка C;
- поэтому реализовывать сетевые проекты можно, и даже нужно, на инструментах высокого уровня. Но для понимания того, что при этом происходит, следует использовать уровень POSIX-нотаций.
Для начала знакомства с техникой написания модулей ядра Linux проще не вдаваться в пространные объяснения, но создать простейший модуль (код такого модуля интуитивно понятен всякому программисту), собрать его и наблюдать исполнение. Вот с такого образца простейшего модуля ядра (см. каталог first_hello сопровождающего книгу файлового архива) мы и начнем рассмотрение.
Конечно, дать исчерпывающую картину сетевого мира в Linux на таком ограниченном объеме (да и на любом обозримом) невозможно! Но цель при подготовке этой книги ставилась иная: определить основу понятий архитектуры сети и наметить общую схему задач, решаемых в сетевом программировании, администрировании и использовании. В итоге в тексте книги отчетливо сложились несколько совершенно различных частей:
1. Архитектура и терминология сети.
2. Протоколы и программные инструменты работы с различными протоколами сети.
3. Сокетное программирование. Программирование приложений пользовательского адресного пространства.
4. Сетевые драйверы и протоколы. Программирование модулей ядра Linux — драйверов сетевых адаптеров и протоколов.
5. Новые, экспериментальные и экстравагантные проекты, работающие над Интернетом. Тенденции и отдельные примеры.
Каждая из этих областей требует для своего детального описания отдельной книги под тысячу страниц. Такие книги есть, и замечательные книги (некоторые из них упомянуты в списках источников информации в конце каждой части), и именно к ним следует обращаться для детального изучения каждой из обозначенных тем.
Название: Сети Linux. Модели и приложения
Автор: Олег Цилюрик
Издательство: БХВ-Петербург
Год: 2024
Страниц: 305
Язык: русский
Формат: pdf, epub + Code
Размер: 10.9 MB
Скачать Сети Linux. Модели и приложения
Внимание! У Вас нет прав для просмотра скрытого текста.
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.