どのように多くのクライアントは、80として、サーバー上のポートに接続しますか?(翻訳)

原文:どのように複数のクライアントがサーバに、80を言って、1つのポートに同時に接続できますか?[重複]

 

 

通常、我々はServerSocketのは、複数のクライアントがポート8080上のソケットにこれを使用してサーバ側の通信接続され、その後の後に、ポート(例えば8080)を指定してください。またはHTTPサーバーはポート80を使用し、通信を接続するための複数のブラウザでもあります。なぜこれが起こることができますか?複数のポートに関連してシステムプロセスを操作する方法を区別するのですか?


 

翻訳:

ここではソケット接続について話しています:

1.ポートの識別は単なる数ではなく、実際の物理ポートです。 

主キー(すなわち、異なるソケットを区別する)2.ソケット接続は5タプルから構成されている{SRC-IP、SRC-PORT、DEST-IP、DEST-PORT、PROTOCOL}組成物、すなわち、{送信元アドレス、送信元ポート、宛先アドレス、宛先ポート、プロトコル}契約はクワッド引数が間違っている含まれていないと言う人たちで構成される。 

3.プロセスは、複数のソケット接続を持つことができます。

同じポート80を持つサーバーに接続された2つのクライアントの例、すなわち2つのソケット接続があります。 

- socket1 {SRC-A、100、DEST-X、80、TCP} 

- socket2 {SRC-B、100、DEST-X、80、TCP} 

ホストAとホストBの異なるアドレスは、二つのホストは、Xサーバながら、ポート80に接続されています。この接続を処理する方法Serverは、それは我々がポートを持つホストが複数のクライアントソケット接続を監視することができます理由を理解したいものです。

説明: 

1. IPが2つの異なるクライアントので、サーバは別のソケットを識別することができますです。 

2.さえ、同じIPアドレス、異なるポートならば、サーバーを区別することが可能です。 

3.限り、サーバーがどのソケット要求を知っているし、関連する受信として、それが適切にクライアントに対応するために、このソケットを使用することができます。 

4.あなたは、サーバーリソースの浪費、そしてまた、追加の新しいポートとクライアントの通信を割り当てられたServerSocketを各クライアント接続の後だけでなく、その後、別のソケットのための別のポートが必要な場合。必要ありません。

例としては、第二に、異なるプロセスが同じポートを聞くことができます。

そのため、2つのプロセスがサーバーが同じポートで待機することができ、異なるプロトコルを使用しています。

識別のみソケットクワッドであれば{SRC-IP、SRC-PORT、DEST-IP、DEST-PORT}プロトコルを含んでいない、同時に異なるプロセスを同一のポートを監視することは不可能です。合意は、同じサーバーに接続するクライアントは、2つのプロセスのリスニングポートを持って、その後、その後、クライアントが接続されているプロセスであるかどうかを判断する機構がない、ありません。

オペレーティングシステム(特にUNIX)は、ファイル・ディスクリプタ(FD)に記載されているすべてのファイルの子プロセスの親プロセスを継承することができますので、親プロセスAは、すべてのソケット上で待機している、また、すべての子プロセスで使用することができA1、A2モニタが処理します。しかし、別のプロセスBは同じリスニングポートではありません。


 

個人的な理解:

1つの問題:どのように同時に複数のサーバー上のポートに接続されたクライアントは、そのような80?

A:異なるサーバと通信ポート80を介して通信するクライアント。ソケットは{SRC-IP、SRC-PORT、DEST-IP、DEST-PORT、PROTOCOL}された後、サーバーのペンタッドは、ポート番号80を聞いて、クライアントのポート番号とIPに基づいて、接続要求を受信80 +サーバーのIPアドレスとポート番号を使用すると、スレッドまたは単にクライアントと通信するためのソケットが作成したコルーチンを作成することができ、ソケットを作成します。

2つの質問:(例えば80など)を同時にポートに接続された複数のクライアントサーバー上で、新しい遊び別のポートが通信するかどうか?

A:新しいサーバーは、ポートを再生されません。その後、5元に応じて設定する新しいソケットを(作成し、クライアントの要求がある場合、サーバは常に最初のテスト(別のサーバポートを割り当てる必要はありません)に応じて、同じソケットを使用し、聞くためにクライアントの要求を担当する80ポートサーバとなっています)、そしてちょうど新しく作成されたとクライアント通信へのソケット上でスレッドまたはコルーチンを作成します。だから、最初から最後まで、サーバが唯一の80ポートリスニングとコミュニケーションをとります。

3質問:10万のクライアントが存在する場合は80ポートが相互作用するので、多くのクライアント接続を受け入れることができれば、同時に、サーバーに接続?

:80ポートかどうかと、非常に多くのクライアントとの対話を収容することができ、これは問題のマシンのパフォーマンスやプログラムのパフォーマンスです。


 

参考:

なぜ複数のクライアントが同じポートサーバーに接続することができますか?

 

 

おすすめ

転載: www.cnblogs.com/zkfopen/p/11206612.html