59

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

これはばかげた質問だと思いますが、以前は考えたこともありませんでした。また、2 つのアプリが同じポートを使用するように構成されている場合に問題が発生したこともあります。

4

7 に答える 7

89

送信元ポート(ブラウザー) と宛先ポート(サーバー)の 2 つのポートがあります。ブラウザーは、OS に使用可能なソース ポートを要求し (たとえば、33123を受信するとします)、宛先ポート (通常は80/HTTP443/HTTPS ) へのソケット接続を確立します。

Web サーバーが応答を受信すると、送信元ポートとして 80、宛先ポートとして 33123 を持つ応答を送信します。

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

Firefox (localhost:33123) <-----------> stackoverflow.com (69.59.196.211:80)
Chrome  (localhost:33124) <-----------> stackoverflow.com (69.59.196.211:80)
于 2010-06-02T12:59:42.893 に答える
23

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

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

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

于 2010-06-02T12:49:53.210 に答える
9

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

于 2010-06-02T12:52:30.453 に答える
6

クライアントは通常、1024 から 65535 の間のポートを選択します。これを処理する方法は、オペレーティング システムによって異なります。Windowsクライアントは新しい接続ごとに値を増やし、Unixクライアントはランダムなポート番号を選択すると思います.

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

于 2010-06-02T12:52:46.543 に答える
5

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

于 2010-06-02T12:50:26.220 に答える
5

「ポート 80 でリッスン」と「ポート 80 に接続」の区別には注意が必要です。

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

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

于 2010-06-02T12:51:23.060 に答える
3

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

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

ファイアウォールは、コンピューターからの接続が確立されていることを認識しているため、ブラウザーの上位ポートへのトラフィックを許可します。

于 2010-06-02T12:51:20.553 に答える