В Linux, как и в классическом Unix, существует особый тип межпроцессного взаимодействия - Unix Domain Sockets (UDS). Многие админы сталкиваются с ними при настройке сервисов вроде php-fpm, MySQL, PostgreSQL, nginx, не всегда понимая, зачем выбирать между TCP и сокетом.
🌟 Сокет - это специальный тип файла, который создаётся в файловой системе и служит точкой подключения для процессов. Выглядит как обычный файл, но данные через него не записываются на диск, а обрабатываются напрямую в оперативной памяти ядром Linux.
▪️ Пример пути к сокету:
/run/mysqld/mysqld.sock
Основное отличие от TCP: не используется сетевой стек, что делает работу чуть быстрее (в теории), особенно при высоких нагрузках.
▪️ Когда использовать Unix-сокеты?
📍 Доступ к сервису нужен только локально.
📍 Нет необходимости открывать порт и рисковать безопасностью.
📍 Можно ограничить доступ к сокету правами на файл.
На обычном сервере с веб-сайтами разницы между 127.0.0.1:3306 и mysqld.sock вы, скорее всего, не заметите. Но с точки зрения безопасности и практики - предпочтительно использовать сокеты.
▪️ Как проверить работу сокета?
Через netcat:
nc -U /run/mysqld/mysqld.sock
Аналогичный запрос по TCP:
telnet 127.0.0.1 3306
Результат будет одинаковый, только путь разный.
🌟 Unix-сокеты - это быстрый, безопасный и удобный способ локального взаимодействия между сервисами. Если ваш сервис поддерживает их — используйте. Особенно когда нет нужды слушать внешний интерфейс.
#linux #unixsocket
🧑💻 NetworkAdmin