什么是 UNIX 套接字?

luv*_*eet 1 system networking

什么是 unix 套接字以及它在哪里以及为什么使用?

在什么情况下,我应该 UNIX socket over IP socket ?

luv*_*eet 5

UNIX 域套接字是同一主机上的进程可以进行通信的一种方法。流套接字的通信是双向的,数据报套接字的通信是单向的。

UNIX 域套接字使用文件系统作为地址命名空间,即,UNIX 域套接字不是通过 IP 地址和端口来识别服务器,而是通过路径名来识别。这意味着您可以使用 UNIX 文件权限来控制与它们通信的访问权限。即,您可以限制哪些其他进程可以连接到守护程序——也许一个用户可以,但 Web 服务器不能,等等。使用 IP 套接字,连接到您的守护进程的能力在当前系统之外是公开的,这意味着任何人都可以连接到您的套接字,因此可能需要采取额外的步骤来确保安全。另一方面,您可以获得网络透明度。

使用 UNIX 域套接字,您实际上可以检索创建远程套接字的进程的凭据,并将其用于访问控制,这在多用户系统上非常方便。

UNIX 域套接字明确知道它们在同一系统上执行。它们避免了额外的上下文切换,不计算校验和,不插入头,不执行路由等。因为它们可以访问远程套接字缓冲区,所以它们也可以在填充时直接向发送方提供反馈,或者更多重要的是清空,而不是增加显式确认和窗口更改的开销。UNIX 域套接字不提供 TCP 提供的一项功能是带外数据