¿Qué es un socket de dominio Unix?

Un socket de dominio Unix® es un tipo de socket especial dentro del sistema operativo (SO) Unix® que transfiere datos de una aplicación a otra. A diferencia de otros sockets, que normalmente se conectan a otros sistemas, el socket de dominio Unix® es un socket de comunicación entre procesos (IPC), lo que significa que solo se conecta a otros programas en la computadora del usuario. Estructuralmente, el conector de dominio se parece más a una tubería con nombre que a un conector, aunque tiene varias características que una tubería no incluye. El uso de sockets de dominio es seguro, porque otras redes no pueden espiar el flujo de datos y el socket ni siquiera necesita una red para funcionar.

Los sockets, en todos los sistemas operativos, se utilizan para transmitir bytes de un programa a otro en un flujo bidireccional, lo que significa que mientras los datos se van, otros datos entran. Esto normalmente se usa como puente para otros servidores y computadoras, pero no en el caso de un socket de dominio Unix®. Estos sockets especiales se utilizan para enviar datos desde el sistema de archivos Unix® a otro programa en lugar de a una red externa.

Si bien el socket de dominio de Unix® comparte muchas tareas y capacidades relacionadas con el socket, es más como una tubería con nombre. Una tubería con nombre es una forma en que la computadora transmite datos de una sección a otra. Se llama tubería con nombre porque a la tubería se le da un nombre, al igual que el socket de dominio Unix® tiene un nombre: el sistema de archivos Unix® en sí mismo funciona como el nombre. La principal diferencia entre estos dos es que las tuberías solo pueden ofrecer secuencias de flujo de bytes, en las que los datos se leen a medida que se envían, mientras que los sockets de dominio ofrecen flujo de bytes y datagramas, en los que la información se lee como un paquete. El flujo de bytes es mejor en términos de seguridad, mientras que el datagrama es mejor para los sistemas que envían mensajes continuos.

Los sockets de dominio Unix® no están hechos para integrarse con redes externas, pero ofrecen muchas funciones convenientes para redes locales, ya sea que una o varias personas estén usando la computadora. Al usar el socket de dominio Unix® en lugar de otros tipos de sockets, los programas pueden obtener autenticación o permiso sin que el usuario tenga que ingresarlo manualmente. El socket de dominio también asume las reglas del sistema Unix®, lo cual es útil si diferentes usuarios tienen diferentes niveles de acceso, ya que estas reglas se pueden escribir en el sistema y se cumplirán.

Más que otros sockets y tuberías, un socket de dominio Unix® es seguro. Los sockets de dominio no permitirán que una red no confiable escuche el flujo de datos, y las computadoras remotas no pueden conectarse al flujo sin acceso. Toda la información de autenticación e inicio de sesión se encuentra en el dominio Unix®, por lo que el usuario nunca tendrá que ingresar una contraseña o nombre de usuario para iniciar sesión en el servidor. Esto significa que los programas que escuchan las pulsaciones de teclas no obtendrán esta información.