両方のサーバーが同じポートをバインドできますか?

両方のサーバーが同じポートをバインドできますか?

私が管理する2つのサーバーが開発中に同時にポート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     

これの説明は、最初のサーバーはlocalhost(127.0.0.1)に対してポート3000のみをバインドし、2番目のサーバーは「すべて」(0.0.0.0)アドレスにポート3000をバインドしたことです。そうなんですか?

この動作は、最初のサーバーが他のサーバーが特別にターゲティングするトラフィックを置き換えるように見えますが、http://localhost:3000これは妥当だと思います。私はこのやや驚くべき状況についての私の理解を確認したかっただけで、そのポートのアドレスがすでにバインドされている場合は、「すべての」アドレスを受信しようとする試みが失敗すると思いました。

ベストアンサー1

最初のサービスの場合、あなたの家は正しいです。これはとlocalhostを受け取りますlocahost6。 2つ目は上記と違ってホストのIPを聞いているようです。しかし、2番目に聞くことも可能ですlocalhost。どちらも停止し、2番目のものだけを起動すると確認できます。

控えめな提案をするには:サービス1とサービス2のポートを外します。たとえば、ポートを 3001 と 3002 に設定します。

おすすめ記事