ブラウザと矛盾することなく、アプリケーションはどのようにポート80/HTTPを使用できますか?

StackOverflow https://stackoverflow.com/questions/2957757

  •  23-10-2019
  •  | 
  •  

質問

私が正しく理解していれば、他のポートを使用することはファイアウォールの問題を引き起こす可能性があるため、アプリケーションはHTTPを使用してメッセージを送信することがあります。しかし、Webブラウザーなどの他のアプリケーションと矛盾することなく、それはどのように機能しますか?実際、複数のブラウザが一度に実行されているのはどうすれば競合しませんか?それらはすべてポートを監視し、通知を受けますか...この方法でポートを共有できますか?

私はこれが愚かな質問だと感じていますが、私が以前に考えたことはありませんでした、そして他のケースでは、2つのアプリが同じポートを使用するように構成されているときに問題を見ました。

役に立ちましたか?

解決

2つのポートがあります ソースポート (ブラウザ)およびa 宛先ポート (サーバ)。ブラウザは、利用可能なソースポートをOSに要求します(受信したとしましょう 33123)次に、宛先ポートへのソケット接続を作成します(通常は 80/http, 443/https).

Webサーバーが回答を受信すると、ソースポートとして80、宛先ポートとして33123がある応答が送信されます。

したがって、2つのブラウザがstackoverflow.comに同時にアクセスしている場合、次のようなものがあります。

Firefox (localhost:33123) <-----------> stackoverflow.com (69.59.196.211:80)
Chrome  (localhost:33124) <-----------> stackoverflow.com (69.59.196.211:80)

他のヒント

発信HTTP要求はポート80では発生しません。アプリケーションがソケットを要求すると、通常はランダムに受信します。これがソースポートです。

ポート80は、(クライアントではなくサーバーによる)HTTPコンテンツを提供するためのものです。これが宛先ポートです。

各ブラウザは、異なるソースを使用してリクエストを生成します。そうすれば、パケットが正しいアプリケーションに戻ります。

接続を識別するのは、5タプル(IPプロトコル、ローカルIPアドレス、ローカルポート、リモートIPアドレス、リモートポート)です。複数のブラウザ(または実際には複数のページを同時にロードする単一のブラウザ)はそれぞれ宛先ポート80を使用しますが、ローカルポート(O/sによって割り当てられます)は、それぞれの場合に異なります。したがって、対立はありません。

クライアントは通常、1024から65535の間にポートを選択します。オペレーティングシステムに依存します。 Windowsクライアントは、新しい接続ごとに値を増やし、UNIXクライアントがランダムなポート番号を選択します。

一部のサービスは、NTP(123 UDP)のような静的クライアントポートに依存しています

ブラウザは、のコンテンツを表示するために使用するクライアントアプリケーションです Webサーバー 通常、別のマシン上にあります。 Webサーバーは、クライアントのブラウザではなく、ポート80でリスニングされているものです。

「ポート80でリスニング」と「ポート80への接続」を区別することに注意する必要があります。

「アプリケーションはHTTPを使用してメッセージを送信することがあります。他のポートを使用することはファイアウォールの問題を引き起こす可能性があるため、メッセージを送信することがあります」と言うと、実際には「アプリケーションがポート80にメッセージを送信することがあります」と意味します。

サーバーはポート80でリスニングされており、そのポートの複数の接続を受け入れることができます。

ここで話しているポート80です リモート サーバー上のポート、ローカルブラウザは、確立された各接続ごとにハイポートを開きます。

各接続にはポート番号があります 両方 終了、1つはローカルポート、もう1つのリモートポートと呼ばれます。

ファイアウォールは、ブラウザ用の高ポートへのトラフィックを可能にします。これは、コンピューターから接続が確立されていることがわかっているためです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top