Un socket de dominio Unix ( UDS ), también llamado socket local o socket de comunicación entre procesos ( IPC ) , es un punto final de comunicación utilizado para el intercambio de datos entre procesos que se ejecutan en el mismo sistema operativo Unix o similar a Unix .
El término socket de dominio Unix se refiere al domainvalor del argumento AF_UNIXque se pasa a la llamada al sistema que crea el socket. El mismo dominio de comunicación también se puede seleccionar con AF_LOCAL. [ 1 ]
Los valores de argumento válidos typepara un UDS son: [ 1 ]
SOCK_STREAM(comparar con TCP ) – un socket orientado a flujoSOCK_DGRAM(comparar con UDP ) – un socket orientado a datagramas que conserva los límites de los mensajes; en la mayoría de las implementaciones de Unix, los sockets de datagramas de dominio Unix son fiables y no reordenan los datagramas.SOCK_SEQPACKET(comparar con SCTP ) – un socket de paquetes secuenciados orientado a la conexión que conserva los límites de los mensajes y los entrega en el orden en que se envían.
La función UDS es un componente estándar de un sistema operativo POSIX .
La API de un UDS es similar a la de un socket de Internet , pero en lugar de usar un protocolo de red subyacente, la comunicación se realiza completamente dentro del núcleo del sistema operativo . Un UDS puede usar el sistema de archivos como su espacio de nombres de direcciones . Algunos sistemas operativos, como Linux , proporcionan espacios de nombres adicionales. Los procesos se refieren a un UDS a través de un inodo del sistema de archivos , lo que permite que dos procesos se comuniquen abriendo el mismo socket.
Además de enviar datos, los procesos pueden pasar descriptores de archivo a través de una conexión UDS mediante las llamadas sendmsg()al recvmsg()sistema. Esto permite que un proceso otorgue a otro acceso a un descriptor de archivo que de otro modo no podría usar. [ 2 ] [ 3 ] Esto puede utilizarse para implementar una forma rudimentaria de seguridad basada en capacidades . [ 4 ]
Véase también
- Socket de red : punto final basado en software para comunicaciones de red.
- Sockets de Berkeley : API de comunicación entre procesos
- Tubería (Unix) – Mecanismo para la comunicación entre procesos mediante paso de mensajes
- Netlink : interfaz del kernel de Linux para la comunicación entre procesos.
Referencias
- 1 2 "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 del original el 18 de mayo de 2013. Consultado el 29 de septiembre de 2014 .
- ↑ "Página man de Linux - cmsg(3): acceso a datos auxiliares" . Consultado el 9 de octubre de 2018 .
- ↑ ""Programación segura para Linux y Unix: Guía práctica", Sección 3.4 "Sockets y conexiones de red"" . dwheeler.com . David A. Wheeler. 22 de agosto de 2004 . Consultado el 29 de septiembre de 2014 .
Enlaces externos
- – Referencia de interfaces del sistema, Especificación única de UNIX , Versión 5 de The Open Group
- – Referencia de interfaces del sistema, Especificación única de UNIX , Versión 5 de The Open Group
- – Referencia de interfaces del sistema, Especificación única de UNIX , Versión 5 de The Open Group
- – Referencia de interfaces del sistema, Especificación única de UNIX , Versión 5 de The Open Group
- – Manual del programador de Linux – Funciones de la biblioteca de Manned.org
- ucspi-unix , herramientas de línea de comandos para cliente-servidor de sockets de dominio UNIX
- Sockets Unix frente a sockets de Internet
- Sockets Unix - Guía de Beej para la comunicación entre procesos (IPC) en Unix
- socket de red
- Unix