Dev Study
← ネットワークとプロトコル

サーバーのしくみ

6 カテゴリ・60

サーバーのしくみ I(物理からアプリまで)

10

リクエストがNIC(ネットワークカード)に信号として届いてから、カーネルのネットワークスタックを上っていき、アプリが受け取るまでの縦の流れを追います。DMA、割り込みとNAPI、リングバッファ、システムコールの境界などを具体的に確認します。

サーバーのしくみ II(ソケットとカーネル)

10

サーバーがsocket()/bind()/listen()/accept()でどう接続を待ち受け、受け取るかを追います。2つのキュー、ファイルディスクリプタ、backlog、4タプルによる接続の識別などを具体的に確認します。

サーバーのしくみ III(並行処理モデル)

10

1台のサーバーで多数の接続を同時にさばくための並行処理モデルを比較します。プロセス/スレッドモデルのコスト、C10K問題、select/pollとepoll/kqueue、イベントループ、レベル/エッジトリガの違いを具体的に確認します。

サーバーのしくみ IV(HTTPサーバーの内部動作)

10

ソケットから読んだバイト列をHTTPリクエストへパースする流れ、部分受信とバッファリング、ヘッダ終端の検出、ボディ長の判定、ルーティング、keep-alive、バックプレッシャ、graceful shutdown、スローロリス攻撃対策としてのタイムアウトを扱います。

サーバーのしくみ V(リバースプロキシとアプリ連携)

10

リバースプロキシとは何か、なぜ前段に置くか、アプリサーバーとの接続方式、WSGI/Rackのような標準インターフェースの役割、プロセスマネージャとワーカープロセス、X-Forwarded系ヘッダ、UnixドメインソケットがループバックTCPより速い理由を扱います。

サーバーのしくみ VI(具体的なサーバー製品)

10

nginxのマスター+ワーカーとイベント駆動、Apacheのマルチプロセッシングモジュール(prefork/worker/event MPM)、Node.jsの単一イベントループとlibuv、Goのgoroutineとネットランタイムなど、代表的なサーバーの設計と向く用途の違いを扱います。