C'est de cette réponse:
https://stackoverflow.com/questions/2482411/is-this-pdo-bug-fixed-now/2482424#2482424
C'est de cette réponse:
https://stackoverflow.com/questions/2482411/is-this-pdo-bug-fixed-now/2482424#2482424
Réponses:
Un socket UNIX est un mécanisme de communication interprocessus qui permet l'échange de données bidirectionnel entre des processus s'exécutant sur le même ordinateur.
Les sockets IP (en particulier les sockets TCP / IP) constituent un mécanisme permettant la communication entre les processus sur le réseau. Dans certains cas, vous pouvez utiliser des sockets TCP / IP pour parler avec des processus s'exécutant sur le même ordinateur (à l'aide de l'interface de bouclage).
Les sockets de domaine UNIX savent qu'ils s'exécutent sur le même système, ils peuvent donc éviter certaines vérifications et opérations (comme le routage); ce qui les rend plus rapides et plus légers que les sockets IP. Donc, si vous envisagez de communiquer avec des processus sur le même hôte, il s'agit d'une meilleure option que les sockets IP.
Edit: Selon le commentaire de Nils Toedtmann : les sockets de domaine UNIX sont soumis aux autorisations du système de fichiers, tandis que les sockets TCP ne peuvent être contrôlés qu'au niveau du filtre de paquets.
Vous pouvez lister vos propres sockets unix locales sur la machine avec la commande suivante:
netstat -a -p --unix
S'amuser!
netstat
fonctionne cependant sous Windows.
Quelle est la différence entre un socket Unix et un socket TCP / IP?
Un socket TCP / IP est utilisé pour la communication sur des réseaux TCP / IP. Un socket TCP connecté est identifié par la combinaison d'une adresse IP locale, d'un port local, d'une adresse IP distante et d'un port distant. Un socket TCP à l'écoute est identifié par le port local et éventuellement par l'adresse IP locale. AIUI, du moins sur les sockets TCP / IP sous Linux, entraîne toujours la génération et le décodage des paquets TCP / IP, même si le client et le serveur se trouvent sur le même ordinateur.
Un socket de domaine Unix (parfois abrégé en socket Unix) fonctionne sur une seule machine. Les sockets d'écoute résident dans la hiérarchie du système de fichiers et leur accès peut être contrôlé par les autorisations du système de fichiers.
De plus, un processus acceptant une connexion sur un socket Unix peut déterminer l'ID utilisateur du processus qui se connecte. Cela peut éviter le besoin d'une étape d'authentification. Plutôt que de générer un mot de passe pour votre serveur de base de données et d'en inclure une copie dans le code de votre application Web, vous pouvez simplement indiquer au serveur de base de données que l'utilisateur qui exécute l'application Web a accès au compte d'utilisateur correspondant dans la base de données.
Les sockets TCP sont aussi gérés par Unix?
Bien sûr
Les sockets TCP font partie de la spécification du protocole TCP
Les spécifications du protocole Internet ne concernent généralement que ce qui se passe sur le réseau. La spécification TCP contient une définition de Socket, mais cette définition n’est pas la même que la façon dont le terme est utilisé par "l’API de sockets".
L '"API de sockets", telle que nous la connaissons, a été introduite par BSD mais a ensuite été copiée dans tous les sens et est incluse dans le standard posix. Les éléments de base pour les sockets TCP et UDP ont tendance à être sensiblement les mêmes d’une plate-forme à l’autre, mais des fonctions plus avancées et des fonctionnalités qui interagissent avec d’autres parties du système d’exploitation varient. Par exemple, sur les systèmes de type Unix, un socket est identifié par un descripteur de fichier et peut être lu / écrit par les fichiers API, ce n’est pas le cas sous Windows.
Certaines extensions de l'API sockets ont été documentées dans les rfcs mais ces RFC sont uniquement "informatives".
ou n'importe quel protocole pourrait utiliser IP Sockets?
Lorsqu'une application crée explicitement une socket à l'aide de la fonction "socket" (les sockets sont également créées par la fonction accept), elle transmet trois paramètres, "domaine", "type" et "protocole". Entre eux, ces trois paramètres peuvent être utilisés pour sélectionner de nombreux types de socket.