1. ホーム
  2. http

[解決済み] サーバーの1つのポート(例えば80)に複数のクライアントが同時に接続するにはどうすればよいですか?[重複しています]。

2022-03-23 09:30:22

質問

ポートの仕組みの基本は理解しています。しかし、私が理解できないのは、複数のクライアントが同時に例えばポート80に接続できる方法です。各クライアントが固有の(そのマシン用の)ポートを持っていることは知っています。サーバーは、クライアントに利用可能なポートから返信し、単に80から来たと述べるのでしょうか?これはどのように機能するのでしょうか?

どのように解決するのですか?

まず、quot;port"は単なる数字です。 あるポートに接続する」というのは、「宛先ポート」ヘッダフィールドにその番号が指定されているパケットを意味します。

さて、この質問に対する答えは2つあります。1つはステートフル・プロトコルの場合、もう1つはステートレス・プロトコルの場合です。

複数の人が同じポートにパケットを送ることができ、そのパケットはどのような順序でも到着します。 複数の人が同じポートにパケットを送ることができ、そのパケットはどのような順番でも到着します。

ステートフルプロトコル(TCPなど)の場合、接続は送信元ポートと送信先ポート、送信元IPアドレスと送信先IPアドレスからなる4タプルで識別されます。 したがって、2台の異なるマシンが3台目のマシンの同じポートに接続する場合、送信元IPが異なるため、2つの異なる接続が存在することになります。 同じマシン(またはNATの内側にあって同じIPアドレスを共有している2台)が1つのリモートエンドに2回接続する場合、接続はソースポート(一般にランダムな高番号のポート)によって区別されます。

単純に、私がクライアントから同じWebサーバーに2回接続した場合、2つの接続は、私から見た送信元ポートとWebサーバーから見た送信先ポートが異なることになります。 つまり、両方の接続が同じ送信元と送信先のIPアドレスを持っていても、曖昧さがないのです。

ポートというのは マルチプレックス 異なるアプリケーションが同じIPアドレス/プロトコルのペアをリッスンできるように、IPアドレスを指定します。 アプリケーションが独自の上位プロトコルを定義していない限り、ポートを多重化する方法はありません。 同じプロトコルを使用する2つの接続が同時に同一の送信元と送信先のIP、および同一の送信元と送信先のポートを持つ場合、それらは同一の接続でなければなりません。