Статья: Механизмы межпроцессных взаимодействий в операционной системе Unix
Одна из возможных конфигураций программных гнезд
Допустимые комбинации протоколов и драйверов задаются при конфигурации системы
во время работы системы менять нельзя
По духу организация программных гнезд близка к идее потоков
Но менее гибкая схема
не допускает изменения конфигурации "на ходу"
Взаимодействие процессов основано на модели "клиент-сервер"
процесс-сервер "слушает (listens)" свое программное гнездо
процесс-клиент пытается общаться с процессом-сервером через другое программное гнездо
ядро поддерживает внутренние соединения и маршрутизацию данных от клиента к серверу
Программные гнезда с общими коммуникационными свойствами, такими как способ именования и протокольный формат адреса, группируются в домены
"домен системы UNIX" для процессов, которые взаимодействуют через программные гнезда в пределах одного компьютера
"домен Internet" для процессов, которые взаимодействуют в сети в соответствии с семейством протоколов TCP/IP
Два типа программных гнезд
с виртуальным соединением (stream sockets)
дейтаграммные гнезда (datagram sockets)
Виртуальные соединения:
передача данных от клиента к серверу в виде непрерывного потока байтов с гарантией доставки
до начала передачи данных должно быть установлено соединение
Дейтаграммные программные гнезда:
не гарантируют абсолютной надежной, последовательной доставки сообщений и отсутствия дубликатов дейтаграмм
не требуется предварительное установление соединений
По умолчанию обеспечивается подходящий протокол для каждой допустимой комбинации "домен-гнездо"
TCP для виртуальных соединений
UDP для дейтаграммного способа коммуникаций
Создание нового программного гнезда:
sd = socket(domain, type, protocol);
domain - домен гнезда