何时以及为何使用AF_UNIX,为什么要在同一台计算机上使用

问题描述

我第一次开始在 Python 中研究socket库,我意识到有一个名为AF_UNIX的常量与{{1 }},但速度更快,并且只能与同一台计算机建立连接,并使用系统文件而不是Internet连接

但是我不明白的是为什么?为什么我要与自己的机器建立通信?这有什么用?在什么情况下使用AF_UNIX真正有用?

解决方法

您的问题有很多答案,我将尝试回答AF_UNIX的一些用例:

  1. 您可以使用它公开一个私有通道,供其他进程使用文件安全地进行通信(因为它将尊重文件系统层次结构和* nix权限模型)。众所周知,PostgreSQL通过psql CLI来安全连接来公开unix套接字。

  2. 您可以使用套接字协议来实现可交换的通信,因为在AF_INETAF_UNIX之间移动并在不同主机之间扩展其通信非常容易(redis和docker都这样做了。) >

  3. 即使使用环回接口,您也可以创建一种可扩展且快速的方式,使不同的流程和技术进行通信,而不会产生设备开销AF_INET

实际上可能性是无限的,因为它包括一些个人喜好。但是AF_UNIX使用与AF_INET类似的规范这一事实使它成为扩展进程之间通信的强大工具,而不必依赖极为不同的工具(FIFO,共享内存,内部队列,文件等)。一些)。