Уильям Стивенс - UNIX: разработка сетевых приложений

Тут можно читать онлайн Уильям Стивенс - UNIX: разработка сетевых приложений - бесплатно ознакомительный отрывок. Жанр: comp-osnet, издательство Питер, год 2007. Здесь Вы можете читать ознакомительный отрывок из книги онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    UNIX: разработка сетевых приложений
  • Автор:
  • Жанр:
  • Издательство:
    Питер
  • Год:
    2007
  • Город:
    Санкт-Петербург
  • ISBN:
    5-94723-991-4
  • Рейтинг:
    4.33/5. Голосов: 91
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Уильям Стивенс - UNIX: разработка сетевых приложений краткое содержание

UNIX: разработка сетевых приложений - описание и краткое содержание, автор Уильям Стивенс, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Новое издание книги, посвященной созданию веб-серверов, клиент-серверных приложений или любого другого сетевого программного обеспечения в операционной системе UNIX, — классическое руководство по сетевым программным интерфейсам, в частности сокетам. Оно основано на трудах Уильяма Стивенса и полностью переработано и обновлено двумя ведущими экспертами по сетевому программированию. В книгу включено описание ключевых современных стандартов, реализаций и методов, она содержит большое количество иллюстрирующих примеров и может использоваться как учебник по программированию в сетях, так и в качестве справочника для опытных программистов.

UNIX: разработка сетевых приложений - читать онлайн бесплатно ознакомительный отрывок

UNIX: разработка сетевых приложений - читать книгу онлайн бесплатно (ознакомительный отрывок), автор Уильям Стивенс
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Сокеты управления ключами поддерживают три типа операций:

1. Процесс может отправить сообщение ядру и всем остальным процессам с открытыми сокетами, записав это сообщение в свой сокет. Таким способом добавляются и удаляются записи в базе соглашений о безопасности. Таким же способом процессы, обеспечивающие собственную безопасность самостоятельно (типа OSPFv2), могут запрашивать ключи у демона-ключника (демона, управляющего ключами).

2. Процесс может считать сообщение от ядра или иного процесса через сокет управления ключами. Это позволяет ядру запросить демона-ключника о добавлении соглашения о безопасности для нового сеанса TCP, который, согласно политике, подлежит определенной защите.

3. Процесс может отправить ядру запрос дампа, и ядро в ответ передаст ему дамп текущей базы SADB. Это отладочная функция, которая может быть доступна не во всех системах.

19.2. Чтение и запись

Все сообщения в сокете управления ключами должны иметь одинаковые заголовки, соответствующие листингу 19.1 [1] Все исходные коды программ, опубликованные в этой книге, вы можете найти по адресу http://www.piter.com. . Сообщение может сопровождаться различными расширениями в зависимости от наличия дополнительной информации или необходимости ее предоставления. Все нужные структуры определяются в заголовочном файле . Все сообщения и расширения подвергаются 64-разрядному выравниванию и дополняются до длин, кратных 64 разрядам. Все поля длины оперируют 64-разрядными единицами, то есть значение длины 1 означает реальную длину 8 байт. Расширение, не содержащее достаточного количества данных, дополняется произвольным образом до длины, кратной 64 разрядам.

Значение sadb_msg_typeзадает одну из десяти команд управления ключами. Типы сообщений перечислены в табл. 19.1. За заголовком sadb_msgможет следовать произвольное количество расширений. Большинство сообщений имеют обязательные и необязательные расширения, которые будут описаны в соответствующих разделах. Шестнадцать типов расширений с названиями структур, их определяющих, перечислены в табл. 19.3.

Листинг 19.1. Заголовок сообщения управления ключами

struct sadb_msg {

u_int8_t sadb_msg_version; /* PF_KEY_V2 */

u_int8_t sadb_msg_type; /* см. табл. 19.1 */

u_int8_t sadb_msg_errno; /* код ошибки */

u_int8_t sadb_msg_satype; /* см. табл. 19.2 */

u_int16_t sadb_msg_len; /* длина заголовка и расширений / 8 */

u_int16_t sadb_msg_reserved; /* нуль при передаче, игнорируется

при получении */

u_int32_t sadb_msg_seq; /* порядковый номер */

u_int32_t sadb_msg_pid; /* идентификатор процесса отправителя

или получателя */

};

Таблица 19.1. Типы сообщений

Тип сообщения К ядру От ядра Описание
SADB_ACQUIRE Запрос на создание записи в SADB
SADB_ADD Добавление записи в полную базу безопасности
SADB_DELETE Удаление записи
SADB_DUMP Дамп SADB (используется для отладки)
SADB_EXPIRE Уведомление об истечении срока действия записи
SADB_FLUSH Очистка всей базы безопасности
SADB_GET Получение записи
SADB_GETSPI Выделение SPI для создания записи SADB
SADB_REGISTER Регистрация для ответа на SADB_ACQUIRE
SADB_UPDATE Обновление записи в частичной SADB

Таблица 19.2. Типы соглашений о безопасности

Тип соглашения Описание
SADB_SATYPE_AH Аутентифицирующий заголовок IPSec
SADB_SATYPE_ESP ESP IPSec
SADB_SATYPE_MIP Идентификация мобильных пользователей (Mobile IP)
SADB_SATYPE_OSPFV2 Аутентификация OSPFv2
SADB_SATYPE_RIPV2 Аутентификация RIPv2
SADB_SATYPE_RSVP Аутентификация RSVP
SADB_SATYPE_UNSPECIFIED He определен

Таблица 19.3. Типы расширений PF_KEY

Тип заголовка расширения Описание Структура
SADB_EXT_ADDRESS_DST Адрес получателя SA sadb_address
SADB_EXT_ADDRESS_PROXY Адрес прокси-сервера SA sadb_address
SADB_EXT_ADDRESS_SRC Адрес отправителя SA sadb_address
SADB_EXT_IDENTITY_DST Личность получателя sadb_ident
SADB_EXT_IDENTITY_SRC Личность отправителя sadb_ident
SADB_EXT_KEY_AUTH Ключ аутентификации sadb_key
SADB_EXT_KEY_ENCRYPT Ключ шифрования sadb_key
SADB_EXT_LIFETIME_CURRENT Текущее время жизни SA sadb_lifetime
SADB_EXT_LIFETIME_HARD Жесткое ограничение на время жизни SA sadb_lifetime
SADB_EXT_LIFETIME_SOFT Гибкое ограничение на время жизни SA sadb_lifetime
SADB_EXT_PROPOSAL Предлагаемая ситуация sadb_prop
SADB_EXT_SA Соглашение о безопасности sadb_sa
SADB_EXT_SENSITIVITY Важность SA sadb_sens
SADB_EXT_SPIRANGE Диапазон допустимых значений SPI sadb_spirange
SADB_EXT_SUPPORTED_AUTH Поддерживаемые алгоритмы аутентификации sadb_supported
SADB_EXT_SUPPORTED_ENCRYPT Поддерживаемые алгоритмы шифрования sadb_supported

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

19.3. Дамп базы соглашений о безопасности

Для дампа текущей базы соглашений о безопасности используется сообщение SADB_DUMP. Это самое простое из сообщений, поскольку оно не требует никаких расширений, а состоит только из 16-байтового заголовка sadb_msg. Когда процесс отправляет сообщение SADB_DUMPядру через сокет управления ключами, ядро отвечает последовательностью сообщений SADB_DUMPпо тому же сокету. В каждом сообщении содержится одна запись базы SADB. Конец последовательности обозначается сообщением со значением 0 в поле sadb_msg_seq.

Поле sadb_msg_satypeпозволяет запросить только записи определенного типа. Значения этого поля следует брать из табл. 19.2. При указании значения SADB_SATYPE_UNSPECвозвращаются все записи базы. Не все типы соглашений о безопасности поддерживаются всеми реализациями. Реализация KAME поддерживает только соглашения, относящиеся к IPSec ( SADB_SATYPE_AHи SADB_SATYPE_ESP), поэтому при попытке получить дамп записей SADB_SATYPE_RIPV2будет возвращена ошибка EINVAL. Если же записей, относящихся к запрошенному типу, в таблице нет (но они поддерживаются), функция возвращает ошибку ENOENT.

Программа, получающая записи из базы данных безопасности, приведена в листинге 19.2.

Листинг 19.2. Дамп базы соглашений о безопасности

//key/dump.c

1 void

2 sadb_dump(int type)

3 {

4 int s;

5 char buf[4096];

6 struct sadb_msg msg;

7 int goteof;

8 s = Socket(PF_KEY, SOCK_RAW, PF_KEY_V2);

9 /* формирование и отправка запроса SADB_DUMP */

10 bzero(&msg, sizeof(msg));

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Уильям Стивенс читать все книги автора по порядку

Уильям Стивенс - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




UNIX: разработка сетевых приложений отзывы


Отзывы читателей о книге UNIX: разработка сетевых приложений, автор: Уильям Стивенс. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x