首页 > 解决方案 > 何时以及为什么使用 AF_UNIX,为什么使用同一台机器

问题描述

我第一次开始研究Pythonsocket中的库,我意识到有一个常量调用它做同样的事情但它更快并且只与同一台机器建立连接并使用系统文件而不是互联网连接AF_UNIXAF_INET

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

标签: pythonsocketspython-3.7local

解决方案


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

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

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

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

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


推荐阅读