何时以及为何使用 AF_UNIX,为什么使用同一台机器

When and why to use AF_UNIX, why work with the same machine

第一次开始研究Python中的socket库,才知道有个常量叫AF_UNIXAF_INET 做同样的事情,但速度更快,仅与同一台机器建立连接并使用系统文件而不是互联网连接

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

真的有用

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

的用例
  1. 您可以使用它为其他进程公开专用通道,以便使用文件进行安全通信(因为它会遵守文件系统层次结构和 *nix 权限模型)。众所周知,PostgreSQL 公开了一个 unix 套接字,因为它的 psql cli 可以安全连接。

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

  3. 您可以为不同的进程和技术创建一种可扩展且快速的通信方式,而无需设备开销 AF_INET,即使您使用的是环回接口。

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