Webサーバーの正体 — 物理からコードへ
1本のリクエストが辿る道のりを、8つの段階に分けて見る。番号ボックスをクリックしても移動できます。
クライアント
① TCP接続を要求(3-way handshake)
OS カーネル領域
② OSのlistenキュー(backlog)に並ぶ
ポート番号でOSが待ち受けている
③ accept() で1本取り出す
アプリプロセス内 (Go: net/http)
④ この接続専用のgoroutineが起動
※接続ごとに1つ。リクエストごとではない
⑤ バイト列を受信し*http.Requestへ組立
ルーター/フレームワーク層 (gin)
⑥ ルーティングで木を引く(gin.Engine)
⑦ ハンドラ実行(あなたのコード)
⑧ レスポンス書込 → keep-aliveなら②へ戻る
はじめに
図解
必要な設定
コードでの表現
← 前へ
1 / 9
次へ →