UNIX域套接字和Internet套接字之间的区别

我认为差异是

  • 您通过提供文件path而不是目标IP /端口来连接到服务器
  • 没有源端口这样的东西。另外,源IP只能是本地主机。

我认为每个打开的UNIX Domain套接字仍然有相同的两个stream,inputstream和输出stream。

这是正确的吗?

另外,连接到UNIX域套接字时需要知道该文件吗? 非root用户可以findUNIX域套接字并连接到它们吗?

是的,UNIX域套接字使用文件系统作为地址名称空间,.ie文件path而不是URL / IP和端口。 套接字的手册页说

套接字创build一个Internet域TCP或一个UNIX域stream套接字,并将其连接到标准input和标准输出。 主机参数可以是点号(如“130.149.28.10”)或域名的互联网号码。 在这种情况下,必须可以使用gethostbyname将名称parsing为有效的Internet地址。 端口参数可以是端口号或服务名称,可以通过getservbyname映射到端口号。 如果想要创buildUNIX域套接字而不是Internet套接字,请指定path而不是Internet(标准域名或点标记)主机。 如果至less包含一个斜线,主机名将被视为一个path名。 也就是说,如果要创build或连接到当前目录中的套接字,请使用./filename指定连接点。

Unix域套接字比本地进程间通信的IP套接字快,请参阅这里和这里或这个相关的问题 。

在Linux上, netstat -x显示。