[解決済み] サーバーの1つのポート(例えば80)に複数のクライアントが同時に接続するにはどうすればよいですか?[重複しています]。
質問
ポートの仕組みの基本は理解しています。しかし、私が理解できないのは、複数のクライアントが同時に例えばポート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、および同一の送信元と送信先のポートを持つ場合、それらは同一の接続でなければなりません。
関連
-
[解決済み] Linuxで特定のポートで動作しているプロセスを停止させる方法は?
-
[解決済み] POSTとPUT HTTP REQUESTの違いは何ですか?
-
[解決済み] Spring Bootアプリケーションにポートを設定する方法
-
[解決済み] ubuntuでポート上のプロセスを強制終了する方法
-
[解決済み】WindowsでTCPまたはUDPポートをリッスンしているプロセスを見つけるにはどうすればよいですか?
-
[解決済み】AngularでHTTPリクエストにURL引数(クエリ文字列)を渡すには?
-
[解決済み】ダイジェスト認証とベーシック認証の違いは何ですか?
-
[解決済み】エンティティボディを持たないHTTP POSTを実行することはバッドプラクティスとみなされますか?
-
[解決済み] REST APIで "Not Ready Yet, Try Again Later "のHTTPステータスコードを選択するにはどうすればよいですか?[クローズド]。
-
[解決済み】最新のLinuxボックスが持つことができるオープンTCP接続の理論上の最大数は何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] サーバーの1つのポート(例えば80)に複数のクライアントが同時に接続するにはどうすればよいですか?[重複しています]。
-
[解決済み] ETagとヘッダーエクスパイアの比較
-
[解決済み】URI、URL、URNの違いは何ですか?[重複] URIとURLとURNの違いは何ですか?
-
[解決済み】GETリクエストで同じパラメータ名で複数の値を渡す場合の正しい方法
-
[解決済み】302と307のリダイレクトの違いは何ですか?
-
[解決済み】どのHTTPメソッドがどのCRUDメソッドと一致するか?
-
[解決済み】HTTP1.1とHTTP2.0の違いは何ですか?[クローズド]
-
[解決済み] REST DELETEは本当にべき乗なのか?
-
[解決済み] HTTP GETリクエストにcontent-typeヘッダーは必要ですか?
-
[解決済み] Cache-Control: privateとは何ですか?