Принцип Unix Domain Socket. Как это работает?

Я делаю исследование о сокете домена Unix. Особенно о том, как это работает. Я много раз гуглял со многими ключевыми словами, но результаты - все об API, системных вызовах, как его использовать, примеры... Я также читал о Pipe и FIFO, потому что сокет Unix Domain, как говорят, совпадает с Pipe и FIFO, но я все еще хочу узнать больше о концепции / принципах Unix Domain Socket. Как это работает? (Может быть, на уровне ядра, потому что Wiki говорит следующее:"Это позволяет двум процессам открывать один и тот же сокет для связи. Однако связь происходит исключительно внутри ядра операционной системы".

Я до сих пор удивляюсь, почему документальные фильмы Unix о доменных доменах меньше, чем Pipe или FIFO? Может потому что он родился так много лет назад?

Может ли кто-нибудь показать мне какие-либо идеи или какие книги / ссылки для чтения?

Заранее спасибо!

1 ответ

Unix-сокеты используются как любые другие типы сокетов. Это означает, что для них используются системные вызовы сокетов. Разница между FIFO и сокетами Unix заключается в том, что FIFO использует системные вызовы файлов, в то время как сокеты Unix используют вызовы сокетов.

Unix-сокеты рассматриваются как файлы. Это позволяет использовать права доступа к файлам для контроля доступа.

Unix-сокеты создаются с помощью сокета-вызова sys (в то время как FIFO создается mkfifo). Если вам нужен клиентский сокет, вы вызываете connect, передавая ему адрес сокета сервера. Если вам нужен сокет сервера, вы можете связать его, чтобы назначить его адрес. Пока для FIFO используется открытый звонок. Операция ввода-вывода выполняется посредством чтения / записи.

Unix-сокет может различать своих клиентов, а FIFO - нет. Информация об одноранговом узле предоставляется при приеме вызова, он возвращает адрес сверстника.

Unix-сокеты являются двунаправленными. Это означает, что каждая сторона может выполнять операции чтения и записи. В то время как FIFO являются однонаправленными: у них есть одноранговый одноранговый узел и одноранговый узел читателя.

Сокеты Unix создают меньше накладных расходов, и связь происходит быстрее, чем с помощью локальных IP-сокетов. Пакет не должен проходить через сетевой стек как с сокетами localhost. И поскольку они существуют только локально, маршрутизация отсутствует.

Если вам нужно больше подробностей о том, как сокеты Unix работают на уровне ядра, пожалуйста, посмотрите файл net/unix/af_unix.c в исходном коде ядра Linux.

Другие вопросы по тегам