Понятно, что первые нужны для связи между собой программ в двух разных инстансах операционных систем (но могут связать и программы в одном и том же экземпляре операционной системы), а вторые используются, когда работа с сетью не нужна и достаточно только взаимодействий между процессами в пределах одной операционной системы.
У слова «сокет» как минимум два семантических значения:
1) это имя API (интерфейса, программного, то есть набора функций), пишет нам Сокет_(программный_интерфейс).
Стандарт POSIX.1 описывает программный интерфейс сокетов.
2) «абстрактный объект, представляющий конечную точку соединения»,
но когда соединение устанавливается или установлено, объекты-то вполне себе не абстратные, где-то находятся, к ним создаются хэндлы (наверное).
В ядре два комплекта сисколлов или один, а разница в параметрах фунции создания сокета?
Когда надо описать сокет буквами, то где описан синтаксис, при помощи которого это делается для каждого из двух видов сокетов?
«любое чтение или запись через его файловый дескриптор будут передавать данные между ним и сервером.»
Что общего между дескрипторами сокетов и файловым дескриптором, как из первого получить второе?
Практический вопрос - если указать имя локального сокета в переменной $DISPLAY, то будет работать клиентский софт или нет?
Мне кажется, что было бы хорошей практикой с точки зрения безопасности держать поменьше открытых портов на компьютере, и удивляет, что соединение через UNIX Socket не является видом соединения по-умолчанию.