Open1

なぜネットワークは繋がるのか

TakashiTakashi

第1章 Webブラウザ

概要

ユーザーがブラウザにURLを入力すると、ブラウザはそのURLの解読をする
次にそのURLの意味に従ってHTTPリクエスト・メッセージを作成する

メッセージ作成後、ブラウザはWebサーバーのIPアドレスを調べる。
URLの中にWebサーバーのドメイン名が記載してあるので、その名前をDNSサーバーに問い合わせてIPアドレスを調べる
OS(プロトコル・スタック)に依頼してWEBサーバーに向けてメッセージを送信してもらう

詳細

etc: https://www.google.com
「//」は後に続く文字列がサーバーの名前である事を表す

  • HTTPリクエスト
    リクエスト・メッセージはリクエスト・ライン、メッセージ・ヘッダー、メッセージ・ボディの3つで構成されている
    レスポンス・メッセージはステータスライン、メッセージ・ヘッダー、メッセージ・ボディの3つで構成されている

  • IPアドレス
    IPアドレス:32ビットで構成されている
    ネットマスク:IPアドレスの内訳 
    ネットワーク番号:ネットマスクが「1」の箇所
    ホスト番号:ネットマスクが「0」の箇所 ※全て0の場合、サブネット自体を表す。全て1の場合、ブロードキャストを表す

  • DNSリゾルバ(DNSクライアントに相当するもの)
    ネーム・リゾリューション(名前解決):DNSの仕組みを使ってIPアドレスを調べること
    Socketライブラリからリゾルバを呼び出せる
    応答メッセージからIPアドレスを取り出し、メモリー領域に格納する
    ドメイン名からIPアドレスを調べるとき、ブラウザはSocketライブラリのリゾルバを使用する
    OS内部のプロトコル・スタックがネットワークに対してデータの送受信を行う
    LANアダプタを通じてDNSサーバーに渡る

ドメインの階層

  • DNSサーバー
    サーバー内に登録されたドメイン名とIPアドレスの対応表を調べて、IPアドレスを回答する
    DNSサーバーに登録されている項目、1件分の登録情報をリソース・レコードという

IPアドレスを調べるときはまず最寄りのDNSサーバーにアクセスする
その後、ルートドメインから順番にアクセスしていく

  • データ送受信動作
    ソケットを作る(ソケット作成フェーズ)
    サーバー側のソケットにパイプを繋ぐ(接続フェーズ)
    データを送受信する(送受信フェーズ)
    パイプを外してソケットを抹消する(切断フェーズ)