1

Web サーバーが多数の同時 HTTP 要求と応答をどのように処理するかを理解したいと思います。私はネットワークプログラミングが初めてであることを覚えておいてください。

Web サーバーはポート 80 で同時に複数の HTTP 応答を送信できますか? または、応答を「シリアル化」する必要がありますか?

Web サーバーはシリアル化された方法で要求を受け取りますか? その場合、プライオリティ キューへの挿入はおそらく高速である必要があります。

4

2 に答える 2

2

簡単に言えば、ほとんどの Web サーバーは、個別のスレッド/プロセスで各要求を処理することにより (スレッドプールからスレッドをプルするか、新しいスレッドを作成することにより)、着信要求を並行して処理します。通常、同時に処理できるリクエストの数には上限があります (スレッドプール内のスレッドの最大数など)。その上限を超えると、保留中のリクエストは、別のリクエストが完了するまでキューで待機することを意味します。サーバーが要求の非同期処理を行う必要がある場合は、要求を終了する準備が整うまでスレッドをスレッドプールに返すことがあります (ASP.NET の IHttpAsyncHandler などを使用)。

サーバーは実際にはポート 80 で要求を送り返しません。クライアントは、その特定の接続用に独自のポートを持ちます。

于 2011-12-15T19:04:49.543 に答える
2

私も初心者ですが、ネットワーク通信について少し理解しています。

一度に 1 つずつ複数の要求に同時に応答するのではなく、適切に機能している場合は非常に高速です。

ポートに関係なく、情報がネットワーク経由で送信される場合、情報はパケットで送信されます。そのパケットには、あなたの場合、使用しようとしているポート番号とその他の必要な情報を定義するヘッダーがあります。ヘッダーの次はデータです。パケット内のデータのサイズは、コンピューター、ルーター/スイッチ、その他の関係する設定によって異なります。最後にフッターです。これには、その特定の要求に対して来る最後のパケットであるかどうか、そうでない場合は次のパケットで何を探すべきかについての指示が含まれています。

あなたの質問に答えるのに役立ち、さらにいくつかの質問ができることを願っています.

于 2011-12-15T19:06:56.153 に答える