「ネットワークはなぜつながるのか」読後#1

目的

「ネットワークはなぜつながるのか」を読んだ後にアウトプットするため、今回第一章。

まとめ

この章ではwebブラウザーにURLを入力した後のwebサーバやDNSサーバの振る舞い、httpプロトコルの概要などの話が主題。

ブラウザーはまずurlを解読する。

例えば、"http://www.p49e.com/somepage.html"とあれば 「httpプロトコルを使用してp49e.comというサーバのsomepage.htmlのファイルを開く」と解釈する。 なお、p49e.comはドメイン名なのでIPアドレスに変えてもアクセスすることができる。(このページもローカルネットワークではIPベタ打ちでいける)

ブラウザーはwebサーバにリクエストを送る

解釈した後は実際にファイルを探して開く。 httpプロトコルでの通信には「何を(URI)」「どうする(メソッド)」のかをwebサーバとやりとりする必要がある。 URIにはファイル名やURLが含まれる。 メソッドには主に以下のメソッドがある。

  • GETメソッド その名の通りURLで指定した情報を取り出す
  • POSTメソッド 主にフォームの内容をサーバに送信する時に使われる。

どちらもサーバにリクエストを送信するので振る舞いはたいして変わらない。 しかし、GETメソッドはURLの情報をやり取りするのでURLで内容が把握できる。 露呈して困るような情報のやり取りではGETよりPOSTメソッドの方がセキュア。

他にもDELETEメソッドなどあるがここでは割愛する。(当ブログでは記事の削除にDELETEメソッドを使っている)

リクエストを送るとレスポンスが返ってくる

リクエストしたのでレスポンスが返ってくる。 httpプロトコルではステータスコードという形でやりとりの結果を把握できる。 404 Not Foundなどがよくある例 以下に主なステータスコードを示す。

  • 1xx 処理の状況などを通知する。
  • 2xx 正常終了。
  • 3xx 追加で操作が必要である。
  • 4xx クライアントのエラー(自分のせい)
  • 5xx サーバのエラー(相手のせい)

リクエスト時のメッセージ作成

webサーバにリクエストを送るにはhttpプロトコルに沿った リクエストメッセージを送らないといけない。

主にメッセージライン、メッセージヘッダー、メッセージボディからなる。

メッセージライン

1行目でURIやhttpバージョン、メソッドなど 「何」を「どうする」かを書いている

メッセージヘッダー

メッセージライン以外で必要になる情報が書いてある。開発者用ツールだとNetwork -> Headersで見れる

メッセージボディ

ヘッダーでも書けない情報を書くところ。POSTメソッドの時によく使う(バレたらまずい情報)

あとはIPアドレスからDNSサーバーを辿って解決する

socketというライブラリがDNSリゾルバを提供しているので、ブラウザはリゾルバでIPを調べる。 調べたIPアドレスを使ってプロトコルスタックに依頼をし、webサーバーが解答(webページ)を返す。

2025-08-26 12:56