多个进程在监听端口 22?这怎么可能呢?

多个进程在监听端口 22?这怎么可能呢?

我有一台启用了 SSH 的 Solaris 10 服务器,我想找出哪个特定进程负责打开侦听端口 22 的套接字。我使用该实用程序PFiles循环遍历/proc文件夹中的所有进程,以使用以下简单脚本找出答案:

PORT=22; for PID in /proc/*; do pfiles ${PID} |grep "port: ${PORT}" && echo ${PID}; done

我发现有多个进程正在监听同一个端口。示例输出如下:

   sockname: AF_INET6 ::ffff:10.192.18.188  port: 22 /proc/26766
   sockname: AF_INET6 ::ffff:10.192.18.188  port: 22 /proc/26767
   sockname: AF_INET6 ::  port: 22 /proc/620
   sockname: AF_INET6 ::ffff:10.192.18.188  port: 22  /proc/9131
   sockname: AF_INET6 ::ffff:10.192.18.188  port: 22 /proc/9132

我的问题是,这怎么可能呢?多个进程可以在同一个 IP 地址上监听同一个端口吗?如果可以的话,所有这些进程 ID 是否共享一个绑定到此地址:端口的套接字,或者打开多个套接字,每个套接字监听同一个地址:端口,内核决定在特定时刻将连接传递给哪个套接字?有人可以解释一下吗?谢谢!

相关内容