UNIX: разработка сетевых приложений
UNIX: разработка сетевых приложений читать книгу онлайн
Новое издание книги, посвященной созданию веб-серверов, клиент-серверных приложений или любого другого сетевого программного обеспечения в операционной системе UNIX, — классическое руководство по сетевым программным интерфейсам, в частности сокетам. Оно основано на трудах Уильяма Стивенса и полностью переработано и обновлено двумя ведущими экспертами по сетевому программированию. В книгу включено описание ключевых современных стандартов, реализаций и методов, она содержит большое количество иллюстрирующих примеров и может использоваться как учебник по программированию в сетях, так и в качестве справочника для опытных программистов.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
10 mypid = getpid();11 /* формирование и отправка запроса SADB_REGISTER */12 bzero(&msg, sizeof(msg));13 msg.sadb_msg_version = PF_KEY_V2;14 msg.sadb_msg_type = SADB_REGISTER;15 msg.sadb_msg_satype = type;16 msg.sadb_msg_len = sizeof(msg) / 8;17 msg.sadb_msg_pid = mypid;18 printf("Sending register message:n");19 print_sadb_msg(&msg, sizeof(msg));20 Write(s, &msg, sizeof(msg));21 printf("nReply returned:n");22 /* Чтение и вывод ответа SADB_REGISTER, игнорирование всех прочих сообщений */23 for (;;) {24 int msglen;25 struct sadb_msg *msgp;26 msglen = Read(s, &buf, sizeof(buf));27 msgp = (struct sadb_msg*)&buf;28 if (msgp->sadb_msg_pid == mypid &&29 msgp->sadb_msg_type == SADB_REGISTER) {30 print_sadb_msg(msgp, msglen);31 break;32 }33 }34 close(s);35 }1-91011-17SADB_DUMPSADB_REGISTER18-20print_sadb_msg23-30SADB_REGISTERprint_sadb_msgПример
Мы запускаем программу
registermacosx % <b>register -t ah</b>Sending register message:SADB Message Register, errno 0, satype IPsec AH, seq 0, pid 20746Reply returned:SADB Message Register, errno 0, satype IPsec AH, seq 0, pid 20746Supported authentication algorithms:HMAC-MD5 ivlen 0 bits 128-128HMAC-SHA-1 ivlen 0 bits 160-160Keyed MD5 ivlen 0 bits 128-128Keyed SHA-1 ivlen 0 bits 160-160Null ivlen 0 bits 0-2048SHA2-256 ivlen 0 bits 256-256SHA2-384 ivlen 0 bits 384-384SHA2-512 ivlen 0 bits 512-512Supported encryption algorithms:DES-CBC ivlen 8 bits 64-643DES-CBC ivlen 8 bits 192-192Null ivlen 0 bits 0-2048Blowfish-CBC ivlen 8 bits 40-448CAST128-CBC ivlen 8 bits 40-128AES ivlen 16 bits 128-256Если ядру требуется связаться с собеседником, а соответствующая политика требует наличия соглашения о безопасности, но соглашение таковое отсутствует, ядро отправляет на зарегистрировавшиеся для данного типа соглашения сокеты управления ключами сообщение
SADB_ACQUIRESADB_ACQUIRESADB_GETSPISADB_SASTATE_LARVALSADB_UPDATESADB_SASTATE_MATURESADB_EXPIRESADB_SASTATE_DYINGSADB_SASTATE_DEAD19.6. Резюме
Сокеты управления ключами используются для взаимодействия с ядром, демонами-ключниками и другими обеспечивающими безопасность сущностями (такими как маршрутизирующие демоны). Соглашения о безопасности могут создаваться статически или динамически посредством протокола согласования ключей. Динамические ключи обычно характеризуются определенным временем жизни, по истечении которого (гибкое ограничение) демон-ключник получает соответствующее уведомление. Если соглашение не обновляется до достижения жесткого ограничения, оно становится недействительным.
