Networking

兩台伺服器可以綁定同一個埠嗎?

  • March 9, 2022

我驚訝地發現我正在維護的兩台伺服器都能夠同時在開發中偵聽埠 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,我認為這是有道理的。我只是想確認我對這個稍微令人驚訝的場景的理解,如果已經綁定了具有該埠的任何地址,我會認為嘗試偵聽“任何”地址會失敗。

您的假設對於第一次服務是正確的。它聽著localhostlocahost6。大約第二個,它似乎偵聽主機的 IP,與上面不同。不過有機率秒也試聽一下localhost。您可以通過停止兩者並僅啟動第二個來檢查它。

如果你允許我謙虛的建議:將服務一和服務二的埠分開,例如 3001 和 3002

引用自:https://unix.stackexchange.com/questions/693772