今回はWebサイトまでの道のりについて細かいところまですべて説明していきます。
DNSサーバへの問い合わせ
まず、Webサイトのサーバを見つけるためにWebサイトのIPアドレスを取得します。
取得するにはWebサイトのIPアドレスの情報を持っているDNSサーバに問い合わせます。
基本的にパソコンやスマホでは自動的にDNSサーバが割り当てられています。
家庭用ルータ(Wi-Fi)であればDNSサーバと一体になっており多くのメーカで初期IPアドレスが192.168.0.1になっています。
たまにネットワークがつながりにくいときには8.8.8.8など、他のDNSサーバに変更すると繋がりやすくなります。
このIPアドレス(192.168.0.1)がここで問い合わせるDNSサーバのアドレスとなります。
このDNSサーバにはwww.google.comのIPアドレスって何?と問い合わせます。
すると、下の図のようにルートドメインサーバにcomのサーバのIPアドレスを問い合わせ、帰ってきたIPアドレスにまた、問い合わせをします。
この繰り返しでwww.google.comのIPアドレスをもらいます。

何度も同じWebサイトにアクセスする場合、このように何度もDNSサーバに問い合わせをするのは効率が良くないのでキャッシュとしてある期間その情報を保持しておきます。
次にWebサイトに問い合わせをするため、ホスト側でデータを作成します。
ホストでのデータ制作
まず初めに、Webサイトに問い合わせをするためのデータをホストで作成します。
まず、作成したデータをアプリケーション層でHTTPヘッダを付けます。
HTTPヘッダではほしいメソッド、WebサイトのURI、httpのバージョンとメッセージを入力します。
そして、プレゼンテーション層でどの機器でもわかるようなデータ形式に変換します。
トランスポート層では多数のデータを送信するときはTCPヘッダを使用し、一つのデータを使用するときはUDPヘッダを使用します。
Webサイトのデータは基本的に情報量が多いため、TCPでコネクションを確立し通信を行います。
httpではポート番号を80番、httpsではポート番号を433番を選択します。
ネットワーク層ではIPヘッダをつけWebサイトのIPアドレスを選択します。
データリンク層でイーサネットヘッダをつけMACアドレスを選択します。
MACアドレスでSTPを用いてネットワークでループ防止をします。
MACアドレスはARPを用いてMACアドレスを取得します。
物理層では電気や光信号として伝送するためにデータを物理的なものに変形します。
そして、物理的なものにしたデータをメタルケーブルや光ケーブルで伝送します。
そしてリピータハブ、スイッチハブ、ルータを通してWebサーバに問い合わせメッセージを伝送します。
その前に自分のネットワークでセキュリティを上昇させるためにNATとファイヤーウォールを使用します。
ローカルネットワーク
ローカルネットワークではオフィスや学校など小さい範囲で動作するネットワークのことです。
ここですべてのデバイスにアドレスを割り当てると一つのデバイスが攻撃され内部に侵入されてしまうとそこからすべてのデバイスに広がっていきます。
そのため、プライベートIPアドレスとグローバルIPアドレスを変換するNATを使用します。
また、ファイヤーウォールで不正な通信からの接続を防ぎます。
これでセキュリティを向上させることができます。
そしてリピータハブ、スイッチハブ、ルータへと伝送されますが一度入手したデータはキャッシュサーバで保存されます。
リピータハブ、スイッチハブ、ルータ
まず、リピータハブで増幅し同じネットワーク内にデータをブロードキャストします。
同ネットワーク内にDNSサーバがあればそこに問い合わせメッセージを送信します。
なければ、スイッチもしくはルータに伝送します。
スイッチハブではMACアドレステーブルで学習されている情報をもとに登録されているポートに伝送します。
そしてルータではIPアドレスを用いてルータが持っているルーティング情報をもとに経路を選択します。
ネットワークにはとても多くのIPアドレスが存在するため一つのルータで大量の情報を管理することはできません。
そのためルータ間でやり取りをして効率の良い経路選択(RIP,OSPFなど)をします。
そうしていくつかのルータを経由したのちにWebサーバたどり着きます。
Webサーバの働き
Webサーバにデータが伝送される前にファイヤーウォールで悪意のあるデータや不正なトラフィックから防ぎます。
ファイヤーウォールを通過した後データをWebサーバが受け取りデータを解析し、ホストに向けてデータを伝送します。
Webサーバからホストへの伝送は上で説明した逆の経路を辿ればいいです。
これでWebサイトを表示するための伝送の仕方がわかったと思います。
しかし、Webサーバからホストに向けてデータが送られてくるときにホストのハードが処理できない量のデータを送られてきてしまうとデータを損失してしまいます。
そこで伝送するときにフロー制御をします。
フロー制御
フロー制御ではまず、ホスト側が受け取れるデータの量(ウィンドウサイズ)をWebサーバ側に送信します。
受信側では受け取ったウィンドウサイズに応じてデータを送信します。
これでデータの損失を防ぐことができます。
このような制御でWebサイトへ伝送されます。
コメント