サービスを IP とポートにバインドする方法を説明します

サービスを IP とポートにバインドする方法を説明します

昨日、同じサービス (たとえば SMTP) をサーバーの同じポートで実行することについて議論しました。サーバーに複数の IP アドレスを割り当て、サービスを各 IP/ポートの組み合わせにバインドすることで、これが可能になると思います。しかし、議論が終わって、理論的背景を理解していないという結論に達しました。

私たちは、サーバーが複数の (IP) アドレスで到達可能な家であり、ポートが部屋であるという比喩に行き着きました。部屋には番号がありますが、番号ごとに部屋は 1 つしかありません。つまり、家に到達するためにどのアドレスが使用されても、常に同じ部屋に到達することになります。

そのようには機能しないと思います。リクエストの IP/ポートの組み合わせによってリクエストが一意になります。サービスが IP アドレスにバインドされている限り、OS は同じポート番号で複数のサービスを処理できます。

これは、OSタイプYのポート80で2つのタイプXウェブサーバーを実行する方法に関する質問ではありません。概念レベルでこれがどのように機能するかを知りたいので、理解して他の人に説明することができます。

[編集]

私の質問はちょっと羊毛のような質問は、サーバーに複数の IP アドレスを設定し、IP アドレスごとにトラフィックを分割して、1 つのサーバーに複数のポート 25 を設定することは可能かどうかです。

もしそうなら、それを信じない人にどう説明すればいいのでしょうか。いい比喩でしょうか?

答え1

「すべてのサーバーは家である」という比喩は、「すべてのIPアドレスは家である」と修正する必要があると思います。たとえば、サーバーに2つのIPアドレスがあるとします。理論的には131072 個のサーバーソケットの 2 * (2^16) 通りの一意の組み合わせが利用可能です。

異なるIP:ポートの組み合わせが利用できるので、Sendmail (IP_Address_1:25) とPostfixを同じサーバー (IP_Address_2:25) に設定できます。

答え2

システム上のすべての IP アドレスには、使用可能なすべてのポートがあります。

多くのサービスは、1 つ以上の IP:ポート ペアをリッスンするように構成できます。サービスがすべての IP:25 をリッスンしている場合は、負荷を各ペアに分割できます。

しかし、接続デバイスが接続先をどうやって知るのかがわかりません。DNSラウンドロビン異なるIPアドレスを提供するか、SMTP(ポート25)の場合は均等に重み付けするMXレコード

実際、あなたの質問に答えようとすればするほど、あなたの理解不足を改善する必要があることに気づきます。そこで、優れたTCP/IP ガイド

関連情報