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