UNIX 域套接字是同一主机上的进程可以进行通信的一种方法。流套接字的通信是双向的,数据报套接字的通信是单向的。
UNIX 域套接字使用文件系统作为地址命名空间,即,UNIX 域套接字不是通过 IP 地址和端口来识别服务器,而是通过路径名来识别。这意味着您可以使用 UNIX 文件权限来控制与它们通信的访问权限。即,您可以限制哪些其他进程可以连接到守护程序——也许一个用户可以,但 Web 服务器不能,等等。使用 IP 套接字,连接到您的守护进程的能力在当前系统之外是公开的,这意味着任何人都可以连接到您的套接字,因此可能需要采取额外的步骤来确保安全。另一方面,您可以获得网络透明度。
使用 UNIX 域套接字,您实际上可以检索创建远程套接字的进程的凭据,并将其用于访问控制,这在多用户系统上非常方便。
UNIX 域套接字明确知道它们在同一系统上执行。它们避免了额外的上下文切换,不计算校验和,不插入头,不执行路由等。因为它们可以访问远程套接字缓冲区,所以它们也可以在填充时直接向发送方提供反馈,或者更多重要的是清空,而不是增加显式确认和窗口更改的开销。UNIX 域套接字不提供 TCP 提供的一项功能是带外数据。