AUnix domain socket (UDS),local socket, orinter-process communication (IPC)socket is acommunication endpoint forexchanging data between processes executing in the sameUnix orUnix-like operating system.
The nameUnix domain socket refers to thedomain argument valueAF_UNIX that is passed to the function that creates a socketsystem resource. The same communication domain is also selected byAF_LOCAL.[1]
Validtype argument values for a UDS are:[1]
SOCK_STREAM (compare toTCP) – for a stream-oriented socketSOCK_DGRAM (compare toUDP) – for a datagram-oriented socket that preserves message boundaries (as on most UNIX implementations, UNIX domain datagram sockets are always reliable and don't reorder datagrams)SOCK_SEQPACKET (compare toSCTP) – for a sequenced-packet socket that is connection-oriented, preserves message boundaries, and delivers messages in the order that they were sentThe UDS facility is a standard component of aPOSIXoperating system.
TheAPI for a UDS is similar to that of anInternet socket, but rather than using an underlying network protocol, all communication occurs entirely within the operating systemkernel. A UDS may use the file system as its addressnamespace. Some operating systems, likeLinux, offer additional namespaces. Processes reference a UDS as a file systeminode, so two processes can communicate by opening the same socket.
In addition to sending data, processes may sendfile descriptors across a UDS connection using thesendmsg() andrecvmsg() system calls. This allows the sending processes to grant the receiving process access to a file descriptor for which the receiving process otherwise does not have access.[2][3] This can be used to implement a rudimentary form ofcapability-based security.[4]
socket – System Interfaces Reference,The Single UNIX Specification, Version 5 fromThe Open Groupsocketpair – System Interfaces Reference,The Single UNIX Specification, Version 5 fromThe Open Groupsendmsg – System Interfaces Reference,The Single UNIX Specification, Version 5 fromThe Open Grouprecvmsg – System Interfaces Reference,The Single UNIX Specification, Version 5 fromThe Open Groupcmsg(3) – Linux Programmer'sManual – Library Functions from Manned.org