メインコンテンツにスキップ

3件の投稿件の投稿が「ネットワーク」タグ付き

すべてのタグを見る

マルチコネクションサーバへの旅

· 21分の読み時間
Haril Song
Owner, Software Engineer at 42dot

banner

概要

複数のクライアントリクエストを同時に処理できるサーバアプリケーションの実装は、今や非常に簡単です。Spring MVCを使うだけで、すぐに実現できます。しかし、エンジニアとして、その基礎原理に興味があります。本記事では、明らかに見えることを問い直しながら、マルチコネクションサーバを実装するための考慮事項について考察していきます。

情報

例のコードはGitHubで確認できます。

ソケット

最初の目的地は「ソケット」です。ネットワークプログラミングの観点から、ソケットはネットワーク上でデータを交換するための通信エンドポイントです。「ファイルのように使用される」という説明が重要です。これは、ファイルディスクリプタ(fd)を通じてアクセスされ、ファイルと同様のI/O操作をサポートするためです。

なぜソケットはポートではなくfdで識別されるのか?

ソケットはIP、ポート、および相手のIPとポートを使用して識別できますが、fdを使用する方が好まれます。これは、接続が受け入れられるまでソケットには情報がなく、単純な整数(fd)以上のデータが必要だからです。

ソケットを使用してサーバアプリケーションを実装するには、次の手順を踏む必要があります:

Termsharkを使ったパケットによる3ウェイハンドシェイクの理解

· 9分の読み時間
Haril Song
Owner, Software Engineer at 42dot

banner

ネットワークパケットとは?

データをネットワーク経由で送信するにはどうすれば良いでしょうか?受信者と接続を確立し、一度にすべてのデータを送信するのが最も簡単な方法のように思えます。しかし、この方法は複数のリクエストを処理する際に非効率的です。なぜなら、1つの接続は1回のデータ転送しか維持できないからです。大きなデータ転送のために接続が長引くと、他のデータは待たなければなりません。

データ送信プロセスを効率的に処理するために、ネットワークはデータを複数の部分に分割し、受信側がそれらを再構成する必要があります。これらの分割されたデータ構造をパケットと呼びます。パケットには、受信側がデータを正しい順序で再構成できるようにするための追加情報が含まれています。

複数のパケットでデータを送信することで、パケットスイッチングを通じて多くのリクエストを効率的に処理できますが、データの損失や誤った順序での配信など、さまざまなエラーが発生する可能性もあります。こうした問題をどのようにデバッグすれば良いのでしょうか?🤔

1台のサーバーアプリケーションは同時にどれだけのリクエストを処理できるか?

· 22分の読み時間
Haril Song
Owner, Software Engineer at 42dot

banner

概要

Spring MVCのWebアプリケーションはどれだけの同時ユーザーを受け入れられるのか?🤔

多くのユーザーを受け入れながら安定したサービスを提供するために、サーバーが処理しなければならないユーザー数を推定するために、本記事ではSpring MVCのTomcat設定に焦点を当ててネットワークトラフィックの変化を探ります。

利便性のため、以下の文章は会話調で書かれています 🙏

情報

技術的な誤り、誤字脱字、または不正確な情報があれば、コメントでお知らせください。フィードバックは大変ありがたいです 🙇‍♂️