Ответы пользователя по тегу *nix-подобные системы
  • FIFO-пайпы и Unix Sockets?

    @shuraosipov
    pipe - это механизм коммуникации между процессами. pipe, как уже было сказано выше, является однонаправленным потоком данных, все данные, записанные процессом в пайп перенаправляются ядром другому процессу для чтения.
    pipe это объект VFS (Virtual File System), поэтому pipe не имеет соответсвутющего образа на диске, грубо говоря он хранится в памяти (pipefs).
    Главным недостатком pipe является тот факт, что невозможно открыть уже существующий pipe. Поэтому два произвольных процесса не могут использовать одновременно один и тот же pipe, за исключением случаев если pipe был создан общим родительским процессом.

    fifo (named pipe) - это специальный файл, очень похожий на pipe, за исключением того, что fifo inode содержится в файловой системе, плюс fifo это двунаправленный механизм обмена данными между двумя и более процессами, поэтому доступ к fifo на чтение и запись может получить любой процесс. Грубо говоря процесс общения с использованием fifo выглядит следующим образом - "сервер" создает fifo файл, который успользуется "клиентами" для выполнения запросов. Каждый "клиент", прежде чем установить соединение с "сервером", создает другой fifo файл, в который "сервер" может записать ответ клиенту, при это указывая имя fifo в изначальном запросе.

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

    Итак в чем же отличие fifo (named pipe) от unix socket:
    1. "Сервер" (или принимающий процесс) в fifo не умеет различать "Клиентов".
    "Клиенты", использующие unix socket имеют отдельные соединения с сервером. В fifo различные "клиенты" могут писать в pipe, но "Сервер" не может различить "Клиентов" друг от друга.
    2. При создании fifo и unix socket используются различные системные вызовы.
    Unix socket создается системным вызовом "socket()". fifo создается "mkfifo()"
    3. Для подключения к fifo и unix используюся различные системные вызовы.

    Сравнение по производительности - fifo vs unix socket:
    1. unix socket обеспечивает лучшую производительнось при передаче большого объема данных
    2. для малых объемов unix socket уступает в производительности fifo. это вызвано накладными раскодами, связанными с созданием сокета, инициализацией и подключением к нему.
    Ответ написан
    Комментировать
  • Как правильно проксировать SSL сайт в Apache 2.4?

    @shuraosipov
    how-to с примерами конфигов для apache 2.4 - https://httpd.apache.org/docs/2.4/ssl/ssl_howto.html
    В SSL сертификатах в качестве common name указывается FQDN имя, но я не вижу технических ограничений от указания в качестве common name IP адреса - https://support.globalsign.com/customer/portal/art...
    Ответ написан
    Комментировать