Un socket de dominio Unix o un socket IPC ( 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. Los tipos de socket válidos en el dominio UNIX son: [1]
SOCK_STREAM
(comparar con TCP ) - para un socket orientado a la transmisiónSOCK_DGRAM
(comparar con UDP ): para un socket orientado a datagramas que conserva los límites de los mensajes (como en la mayoría de las implementaciones de UNIX, los sockets de datagramas de dominio de UNIX son siempre confiables y no reordenan los datagramas)SOCK_SEQPACKET
(comparar con SCTP ): para un socket de paquete secuenciado que está orientado a la conexión, conserva los límites de los mensajes y entrega los mensajes en el orden en que se enviaron
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 se produce por completo dentro del kernel del sistema operativo . Los sockets de dominio Unix pueden usar el sistema de archivos como su espacio de nombres de direcciones . (Algunos sistemas operativos, como Linux, ofrecen espacios de nombres adicionales). Los procesos hacen referencia a los 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 para el cual el proceso de recepción no tiene acceso. [2] [3] Esto se puede utilizar para implementar una forma rudimentaria de seguridad basada en capacidades . [4] Por ejemplo, esto permite que el escáner Clam AntiVirus se ejecute como un demonio sin privilegios en Linux y BSD, y aún así leer cualquier archivo enviado al socket de dominio Unix del demonio.
Ver también
Referencias
- ^ "Manual del programador de Linux (unix - sockets para comunicación local entre procesos)" . 30 de abril de 2018 . Consultado el 22 de febrero de 2019 .
- ^ "Archivo de la lista de correo" Postfix Discussions " . 30 de septiembre de 2000. Archivado desde el original el 18 de mayo de 2013 . Consultado el 29 de septiembre de 2014 .
- ^ "Página de manual de Linux - cmsg (3): acceder a datos auxiliares" . Consultado el 9 de octubre de 2018 .
- ^ " " Programación segura para Linux y Unix HOWTO ", Sección 3.4" Enchufes y conexiones de red " " . dwheeler.com . David A. Wheeler. 22 de agosto de 2004 . Consultado el 29 de septiembre de 2014 .
enlaces externos
- especificación única de UNIX , número 7 de The Open Group - Referencia de interfaces del sistema, la
- especificación única de UNIX , número 7 de The Open Group - Referencia de interfaces del sistema, la
- especificación única de UNIX , número 7 de The Open Group - Referencia de interfaces del sistema, la
- Manual del programador de Linux - Funciones de biblioteca -
- ucspi-unix , herramientas de línea de comandos cliente-servidor de socket de dominio UNIX
- Sockets Unix vs sockets de Internet
- Sockets Unix - Guía de Beej para Unix IPC