加载中...

Unix 域套接字(Unix Domain Socket,UDS)是用于同一主机内进程间通信的套接字类型,复用 socket API,但数据完全在内核内传递,不经过网络协议栈,地址通常是文件系统中的一个路径(也支持 Linux 抽象命名空间)。
UDS 支持字节流(SOCK_STREAM)、数据报(SOCK_DGRAM,可靠且保序)与有边界的顺序分组(SOCK_SEQPACKET)。其独有能力包括:通过辅助数据(SCM_RIGHTS)在进程间传递打开的文件描述符;通过 SO_PEERCRED 获取对端的 PID/UID/GID 实现本地鉴权。文件路径型套接字还受文件系统权限保护。
Docker(/var/run/docker.sock)、systemd、PostgreSQL、MySQL 本地连接、X11/Wayland、nginx 与 php-fpm 之间的通信等大量本机服务都使用 UDS。
相比本机回环 TCP,UDS 免去协议栈开销、延迟更低,且具备传递描述符与凭证这两项 TCP 无法提供的能力。

登录 后参与讨论
暂无讨论,来发表第一条评论吧