eag*_*arn 21 unix sockets network-protocols
当我正在阅读什么AF_INET方式时,我了解到还有另一个家庭UNIX domain socket.这是我读到的关于此的维基链接.
我不明白这意味着什么:
Unix域套接字使用文件系统作为其地址名称空间.它们被进程引用为文件系统中的inode.这允许两个进程打开同一个套接字以进行通信.但是,通信完全在操作系统内核中进行.
如果我想这样做SSH or FTP,我会使用哪个家庭AF_INET or AF_UNIX.我实际上有点困惑.
Ste*_*ppo 40
如果要与远程主机通信,则可能需要一个INET套接字.
区别在于INET套接字绑定到IP地址端口元组,而UNIX套接字"绑定"到文件系统上的特殊文件.通常,只有在同一台机器上运行的进程才能通过后者进行通信.
那么,为什么要使用UNIX套接字呢?正是由于上述原因:同一主机上的进程之间的通信,INET通过环回作为套接字的轻量级替代.
实际上,INET套接字位于完整TCP/IP堆栈的顶部,具有流量拥塞算法,退避等等.一个UNIX插座没有处理任何的这些问题,因为一切都被设计为本地的机器,所以它的代码更简单,通信速度更快.当然,您可能会注意到仅在负载很重的情况下才会出现差异,例如在Nginx等后面反向代理应用服务器(Node.js,Tornado ......)时.