Es de esta respuesta:
https://stackoverflow.com/questions/2482411/is-this-pdo-bug-fixed-now/2482424#2482424
Es de esta respuesta:
https://stackoverflow.com/questions/2482411/is-this-pdo-bug-fixed-now/2482424#2482424
Respuestas:
Un socket UNIX es un mecanismo de comunicación entre procesos que permite el intercambio bidireccional de datos entre procesos que se ejecutan en la misma máquina.
Los sockets IP (especialmente los sockets TCP / IP) son un mecanismo que permite la comunicación entre procesos a través de la red. En algunos casos, puede usar sockets TCP / IP para hablar con procesos que se ejecutan en la misma computadora (mediante el uso de la interfaz de bucle invertido).
Los sockets de dominio UNIX saben que se están ejecutando en el mismo sistema, por lo que pueden evitar algunas comprobaciones y operaciones (como el enrutamiento); lo que los hace más rápidos y ligeros que los zócalos IP. Entonces, si planea comunicarse con procesos en el mismo host, esta es una mejor opción que los sockets IP.
Editar: según el comentario de Nils Toedtmann : los sockets de dominio UNIX están sujetos a los permisos del sistema de archivos, mientras que los sockets TCP solo se pueden controlar en el nivel del filtro de paquetes.
Puede enumerar los sockets locales de Unix de su propia máquina con el siguiente comando:
netstat -a -p --unix
¡Que te diviertas!
netstat
Sin embargo, funciona en Windows.
¿Cuál es la diferencia entre el socket Unix y el socket TCP / IP?
Se utiliza un socket TCP / IP para la comunicación a través de redes TCP / IP. Un socket TCP conectado se identifica mediante la combinación de IP local, puerto local, IP remota y puerto remoto. Un puerto TCP de escucha se identifica por el puerto local y posiblemente por la IP local. AIUI, al menos en sockets TCP / IP de Linux, siempre genera y decodifica paquetes TCP / IP, incluso si el cliente y el servidor están en la misma máquina.
Por otro lado, un socket de dominio de Unix (a veces acortado a socket de Unix) opera en una sola máquina. Los zócalos de escucha viven en la jerarquía del sistema de archivos y el acceso a ellos puede controlarse mediante permisos del sistema de archivos.
Además, un proceso que acepta una conexión en un socket Unix puede determinar la ID de usuario del proceso que se conecta. Esto puede evitar la necesidad de un paso de autenticación. En lugar de generar una contraseña para su servidor de base de datos e incluir una copia en el código de su aplicación web, puede decirle al servidor de la base de datos que el usuario que ejecuta la aplicación web tiene acceso a la cuenta de usuario correspondiente en la base de datos.
¿Los sockets TCP también son manejados por Unix?
Por supuesto
Los sockets TCP son parte de la especificación del protocolo TCP
Las especificaciones del protocolo de Internet solo tienden a referirse a lo que sucede en el cable, la especificación TCP contiene una definición de Socket, pero esa definición no es la misma que la "API de sockets" utiliza el término.
La "API de sockets", tal como la conocemos, fue presentada por BSD, pero luego se copió por todas partes y se incluye como parte del estándar posix. Las cosas básicas para los sockets TCP y UDP tienden a ser muy similares en diferentes plataformas, pero las cosas más avanzadas que interactúan con otras partes del sistema operativo varían, por ejemplo, en sistemas tipo Unix, un socket se identifica mediante un identificador de archivo y puede ser leído / escrito por las API de archivo, este no es el caso en Windows.
Algunas extensiones de la API de sockets se han documentado en rfcs, pero esas RFC son solo "informativas".
o cualquier protocolo podría usar Sockets IP?
Cuando una aplicación crea explícitamente un socket utilizando la función "socket" (los sockets también son creados por la función accept), pasa tres parámetros, "dominio", "tipo" y "protocolo". Entre ellos, estos tres parámetros se pueden utilizar para seleccionar muchos tipos diferentes de socket.