Web技術の基本 (2) Webとネットワーク技術

# この記事の内容について
　Web系エンジニアになるための必須知識の1つである「Web技術の仕組み」について、初学者でもわかりやすいと定評のある書籍「イラスト図解式 この一冊で全部わかるWeb技術の基本」の要点を自分なりにまとめて、理解力の向上に努めていきます。
　私はまだエンジニア歴1年未満の初学者なので、間違い等があればご指摘いただけると幸いです。
# Web技術の基本 (1) 〜 (7)
[Web技術の基本(1) 〜Web技術とは〜](https://qiita.com/Nao52/items/a12402f8e21a9b9ba961)
[Web技術の基本(2) 〜Webとネットワーク技術〜](https://qiita.com/Nao52/items/9f5d7731abbec8f5f4eb)
[Web技術の基本(3) 〜HTTPでやりとりする仕組み〜](https://qiita.com/Nao52/items/e95a7094893f2332e68f)
[Web技術の基本(5) 〜Webアプリケーションの基本〜](https://qiita.com/Nao52/items/65c1a599f1ed484e6e5e)
[Web技術の基本(6) Webのセキュリティと認証](https://qiita.com/Nao52/items/326948f6195a515900fd)
# 1. Webを実現するコンピューターネットワーク
## クライアントとサーバー
### サーバーとは
ネットワーク上で情報やサービスを提供する役割を持つコンピューターのこと
例: Webサイトを提供しているもの
### クライアントとは
サーバーから提供された情報やサービスを利用する役割を持つコンピューターのこと
例: Webサイトを表示するスマートフォンやパソコンに搭載されているWebブラウザなど
## インターネットとは
　インターネットとは、自宅や会社、学校など小さな範囲のネットワークが1つ1つお互いに接続し、世界中のネットワークと繋がった環境のこと。
　インターネットに接続するためのサービスは**インターネットサービスプロバイダー**が提供している。
## インターネットサービスプロバイダー
　インターネットサービスプロバイダーは、単に「プロバイダー」や「ISP」と略されることが多く、各国に複数のプロバイダーが存在する。スマートフォンやパソコンはプロバイダーと接続し、プロバイダーはプロバイダー同士で接続し合うことで世界中が1つのネットワークとして形成される。
# 2. インターネットの標準プロトコル
## プロトコルとは
　**プロトコル**とはネットワークに接続された機器同士が通信をするときの、あらかじめ決められた共通のルールや手順のこといい、お互いに同じプロトコルを利用することにより、データのやりとりを可能としている。
　プロトコルは狼煙で例えられることが多い。「敵の襲来があったとき、狼煙を使って合図を送る」との取り決めがお互いに認識できていれば、情報の伝達を行うことができる。
## TCP/IPとは
　**TCP/IP(Transmission Control Protocol/Internet Protocol)** とはインターネットにおけるさまざまなサービスを実現するためのプロトコルの集まりのこと。
　スマートフォンやパソコン、サーバーといったコンピューターはすべて TCP/IP に対応している。一昔まではコンピューターに搭載される OS や機種ごとに独自のプロトコルが利用されていたため、同じ機器同士でないとお互いに接続ができなかった。
# 3. TCP/IP
### TCP/IP は役割ごとに、以下の4つの階層(レイヤー)に分かれる。
* アプリケーション層(レイヤー4)
→ アプリケーションごとのやりとりを規定 (HTTP、SMTP、FTPなど)
* トランスポート層(レイヤー3)
→ データの分割や品質保証を規定 (TCP、UDP)
* インターネット層(レイヤー2)
→ ネットワーク間の通信を規定 (IP、ICMP)
* ネットワークインターフェイス層(レイヤー1)
→ コネクタ形状や周波数といったハードウェアに関する規定
## アプリケーション層の機能
　**アプリケーション層**ではWebブラウザやメールソフトなどのアプリケーションごとのやりとりを規定しており、クライアントとサーバー間のサービスの要求と応答で成り立っている。
　またアプリケーション層では、扱うデータをネットワークで転送するのに適したデータ形式に変換したり、受け取ったデータを人間が理解できるように変換する役割も持っている。
## TCP と UDP
　アプリケーション層のやりとりに応じて実際にデータの転送処理をしているのがトランスポート層に位置する **TCP(Transmission Control Protocol)** や **UDP(User Datagram Protocol)** といったプロトコルがある。
### TCP と UDP の違い
　**TCP** はWebサイトやメールなどデータ損失が起きると困るようなアプリケーションで利用され、**UDP** は信頼性が低いものの、通信の手続きが簡略化されているぶん、効率よく通信ができるため、動画ストリーミングなどで利用されている。
# 4. IP アドレスとポート番号
## IP アドレス
　インターネットに接続されたコンピューターを特定し、データの行き先を管理するために利用されているものを **IP アドレス**という。IP アドレスは世界中でたった1つだけであり、IP アドレスは世界中で利用できる「住所」のようなものである。
## ポート番号
　IP アドレスは接続したいコンピューターを指定できるが、コンピューターが提供するサービスまでは指定できない。Web サービスやメールサービスといったコンピューターが提供するサービスを指定するためのものを**ポート番号**という。
　ポート番号は「0〜65535」までの数字で、範囲によって用途が決められている。一般的に Web サーバー (HTTP) であれば**80番**といったようにポート番号が決まっており、ポート番号によってサービスを識別できる。
# 5. URLとドメイン
## URLの構文
URLはスキーム名、ホスト名(ドメイン名)、ポート番号、パス名などで構成される。

 http://example.com:80/test.html

* スキーム名
→ プロトコルを指定する。
* ホスト名 (ドメイン名)
→ 接続先のサーバーを指定する。(IP アドレスでの指定も可能)
* ポート番号
→ 接続先のサーバーのポート番号を指定する。省略可能で、通常は指定しない。
* パス名
→ 接続先のサーバー上のディレクトリやファイルを指定する。
## ドメイン
　数字で表記される IP アドレスは私たちにとって覚えにくく扱いにくいため、IP アドレスの別名として利用されるものを**ドメイン**と呼ぶ。
　ドメインはグローバル IP アドレスと同様に一意であり、世界中で同じドメインは1つとして存在しない。
# 6. DNS
　コンピューターへ接続するためには IP アドレスが必要となる。そのため、ドメインを利用してコンピューターへ接続する際は、**ドメインをIPアドレスへと変換**する必要がある。
## ドメインと IP アドレスの変換
　ドメインを IP アドレスへと変換する仕組みを **DNS(Domain Name System)** といい、DNS のサービスを提供するサーバーを **DNS サーバー**という。
　DNS はドメインと IP アドレスが紐付いて管理されているため、 DNS を利用することでドメインから IP アドレスを知ることができる。
# 7. HTTP
## クライアントとサーバー間のやりとり
### Webサイトの閲覧は5つのステップで行われる。
1. Webブラウザのアドレス欄に、閲覧したいWebサイトのURLを入力
1. WebブラウザによりWebサーバーに対してデータを要求
1. Webサーバーは、Webブラウザからの要求内容を解析し、データを用意
1. WebサーバーよりWebブラウザへデータを応答
1. Webサーバーより受け取ったデータをWebブラウザが解析し、Webページとして表示

　上記の2と4のステップがWebコンテンツの送受信の部分であり、この際に HTTP が利用される。 HTTP はあくまでもデータのやりとり(要求と応答)のみを取り決めており、Webサイトを閲覧する際は HTTP だけでなく、IP や TCP といったさまざまなプロトコルを組み合わせて利用されている。