Answers:
甲UNIX插座是一个进程间通信机制,允许在相同的机器上运行的进程之间的双向数据交换。
IP套接字(尤其是TCP / IP套接字)是一种机制,允许通过网络在进程之间进行通信。在某些情况下,您可以使用TCP / IP套接字与同一台计算机上运行的进程通信(通过使用回送接口)。
UNIX域套接字知道它们在同一系统上执行,因此可以避免进行某些检查和操作(例如路由)。这使它们比IP插座更快更轻。因此,如果您打算与同一主机上的进程进行通信,则这是比IP套接字更好的选择。
编辑:根据Nils Toedtmann的评论:UNIX域套接字受文件系统许可,而TCP套接字只能在数据包筛选器级别上进行控制。
您可以使用以下命令列出自己的计算机本地unix套接字:
netstat -a -p --unix
玩得开心!
netstat
但是在Windows上可以使用。
Unix套接字和TCP / IP套接字有什么区别?
TCP / IP套接字用于通过TCP / IP网络进行通信。通过本地IP,本地端口,远程IP和远程端口的组合来标识已连接的TCP套接字。侦听的TCP套接字由本地端口以及可能的本地IP标识。至少在Linux TCP / IP套接字上,AIUI始终会导致TCP / IP数据包的生成和解码,即使客户端和服务器在同一台计算机上也是如此。
另一方面,unix域套接字(有时缩写为unix套接字)在单台计算机上运行。侦听套接字位于文件系统层次结构中,可以通过文件系统权限控制对它们的访问。
此外,在Unix套接字上接受连接的进程可以确定所连接进程的用户ID。这样可以避免进行身份验证步骤。无需为数据库服务器生成密码并将其副本包含在webapp的代码中,您只需告诉数据库服务器运行webapp的用户有权访问数据库中的相应用户帐户即可。
TCP套接字也由Unix处理吗?
当然
TCP套接字是TCP协议规范的一部分
Internet协议规范仅倾向于关注网络上发生的事情,TCP规范包含Socket的定义,但该定义与“套接字API”使用该术语的方式不同。
据我们所知,“ socket API”是BSD引入的,后来被复制到各处,并作为posix标准的一部分包含在内。TCP和UDP套接字的基本内容在不同平台上趋于相同,但更高级的内容以及与OS其他部分进行交互的内容也有所不同,例如,在类Unix系统上,套接字由文件句柄标识并且可以由文件API读取/写入,在Windows上则不是这种情况。
套接字API的某些扩展已在rfcs中进行了记录,但这些RFC只是“信息性的”。
还是任何协议都可以使用IP套接字?
当应用程序使用“套接字”功能显式创建套接字(套接字也由accept函数创建)时,它将传递三个参数:“域”,“类型”和“协议”。在这三个参数之间,可以用来选择许多不同类型的套接字。