两台服务器可以绑定同一个端口吗?

两台服务器可以绑定同一个端口吗?

我惊讶地发现我维护的两台服务器在开发过程中都能够同时侦听端口 3000。

当第一个服务器运行时,netstat 显示

  ▶ sudo netstat -nap tcp | grep 3000
  tcp6       0      0  ::1.3000               *.*                    LISTEN     
  tcp4       0      0  127.0.0.1.3000         *.*                    LISTEN     

两者都运行:

  ▶ sudo netstat -nap tcp | grep 3000
  tcp4       0      0  *.3000                 *.*                    LISTEN     
  tcp6       0      0  ::1.3000               *.*                    LISTEN     
  tcp4       0      0  127.0.0.1.3000         *.*                    LISTEN     

我对此的解释是,第一台服务器仅为本地主机(127.0.0.1)绑定了端口 3000,第二台服务器为“任何”(0.0.0.0)地址绑定了端口 3000。是对的吗?

这种行为似乎是第一台服务器取代了另一台服务器专门针对 的流量http://localhost:3000,我认为这是有道理的。我只是想确认我对这个有点令人惊讶的情况的理解,我本以为如果该端口的任何地址已经绑定,尝试侦听“任何”地址将会失败。

答案1

对于第一项服务,您的假设是正确的。它监听localhostlocahost6。关于第二个,它似乎监听主机的 IP,与上面不同。但有可能第二次也尝试听一下localhost。您可以通过停止两个并仅启动第二个来检查它。

如果您允许我提出谦虚的建议:将服务一和服务二的端口分开,例如将它们设置为 3001 和 3002

相关内容