UNIX: разработка сетевых приложений
UNIX: разработка сетевых приложений читать книгу онлайн
Новое издание книги, посвященной созданию веб-серверов, клиент-серверных приложений или любого другого сетевого программного обеспечения в операционной системе UNIX, — классическое руководство по сетевым программным интерфейсам, в частности сокетам. Оно основано на трудах Уильяма Стивенса и полностью переработано и обновлено двумя ведущими экспертами по сетевому программированию. В книгу включено описание ключевых современных стандартов, реализаций и методов, она содержит большое количество иллюстрирующих примеров и может использоваться как учебник по программированию в сетях, так и в качестве справочника для опытных программистов.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Таблица 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
sadb_msg
SADB_DUMP
SADB_DUMP
sadb_msg_seq
Поле
sadb_msg_satype
SADB_SATYPE_UNSPEC
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));
11 msg.sadb_msg_version = PF_KEY_V2;
12 msg.sadb_msg_type = SADB_DUMP;
13 msg.sadb_msg_satype = type;
14 msg.sadb_msg_len = sizeof(msg) / 8;
15 msg.sadb_msg_pid = getpid();
16 printf("Sending dump message:n");
17 print_sadb_msg(&msg, sizeof(msg));
18 Write(s, &msg, sizeof(msg));
19 printf("nMessages returned:n");
20 /* считывание и вывод всех ответов SADB_DUMP */
21 goteof = 0;
22 while (goteof == 0) {