Un socket de dominio Unix, también conocido como UDS o IPC socket ( socket de comunicación entre procesos ) es un punto final de comunicaciones de datos para intercambiar datos entre procesos que se ejecutan en el mismo sistema operativo host. También se le conoce por su familia de direcciones AF_UNIX
.
Los tipos de socket válidos en el dominio UNIX son: [1]
SOCK_STREAM
(comparar con TCP ): para un socket orientado a flujosSOCK_DGRAM
(compárese con UDP ): para un socket orientado a datagramas que preserva los límites de los mensajes (como en la mayoría de las implementaciones de UNIX, los sockets de datagramas de dominio UNIX siempre son confiables y no reordenan los datagramas)SOCK_SEQPACKET
(compárese con SCTP ): para un socket de paquetes secuenciados que está orientado a la conexión, preserva los límites de los mensajes y entrega los mensajes en el orden en que fueron enviados.La función de socket de dominio Unix es un componente estándar de los sistemas operativos POSIX .
La API para sockets de dominio Unix es similar a la de un socket de Internet , pero en lugar de utilizar un protocolo de red subyacente, toda la comunicación ocurre completamente dentro del núcleo del sistema operativo . Los sockets de dominio Unix pueden utilizar el sistema de archivos como espacio de nombres de direcciones . (Algunos sistemas operativos, como Linux , ofrecen espacios de nombres adicionales). Los procesos hacen referencia a sockets de dominio Unix como inodos del sistema de archivos , por lo que dos procesos pueden comunicarse abriendo el mismo socket.
Además de enviar datos, los procesos pueden enviar descriptores de archivos a través de una conexión de socket de dominio Unix utilizando las llamadas al sistema sendmsg()
y recvmsg()
. Esto permite que los procesos de envío otorguen al proceso de recepción acceso a un descriptor de archivo al que de otro modo el proceso de recepción no tendría acceso. [2] [3] Esto se puede utilizar para implementar una forma rudimentaria de seguridad basada en capacidades . [4]