Web技術の基本2

# はじめに
これからエンジニアとして学んでいくうえで基本となる技術をまとめてみました。
間違い等があればご指摘いただけると幸いです。

# 1.コンピューターネットワーク
* **サーバー**
 ネットワーク上で情報やサービスを提供する機能を持つコンピューターのこと。Webサイトを提供しているもの
* **クライアント**
サーバーから提供された情報やサービスを利用する役割を持つコンピューターのこと。Webサイトを提供するスマホやpcに搭載されているWebブラウザなど

* **インターネット**
　小さな範囲のネットワークがお互いに接続して、世界中のネットワークを繋がった環境のこと。
　インタネットに接続するためのサービスは **インターネットサービスプロバイダー**が提供している。
<br>

* **インターネットサービスプロバイダー**
 　インターネットサービスプロバイダーは、単に「プロバイダー」や「ISP」と略されることが多く、各国に複数のプロバイダーが存在する。スマートフォンやパソコンはプロバイダーと接続し、プロバイダーはプロバイダー同士が接続し合うことで世界中が1つのネットワークとして形成される。

  # 2.標準プロトコル
* **プロトコル**
  　ネットワークに接続された機器同士が通信するときのあらかじめ決められた共通のルールや手順のこと。お互いに同じプロトコルを利用することにより、データのやり取りを可能としている。
　プロトコルは狼煙で例えられることが多い。「敵の襲来があったとき、狼煙を使って合図を送る」との取り決めがお互いに認識できていれば、情報の伝達を行うことができる
* **TCP/IP**
　インターネットにおけるさまざまなサービスを実現するためのプロトコルの集まり。

 # 3.TCP/IP
 TCP/IPは役割ごとに、以下の４つの **階層(レイヤー)**　に分かれる。
 * **アプリケーション層(レイヤー４）**
 アプリケーションごとのやり取りを規定
  ex)　HTTP,SMTP など
* **トランスポート層(レイヤー３)**
データの分割や品質保証を規定 
 ex) TCP,UDP など
* **インターネット層(レイヤー２)**
ネットワーク間の通信を規定 
 ex) IP,ICMP など
* **ネットワークインターフェイス層(レイヤー１)**
コネクタ形状や周波数といったハードウェアに関する規定
 ex) イーサネット, Wi-Fi　など

#### アプリケーション層の機能
　ここではWebブラウザやメールソフトなどのアプリケーションごとのやり取りを規定しており、クライアントとサーバー間のサービスの要求と応答で成り立っている。
　 また、扱うデータをネットワークで転送するのに適したデータ形式に変換し、逆にネットワーク経由で受け取ったデータを私たちが理解できるように変換する役割も持っている。

#### TCPとUDP
　アプリケーション層のやり取りに応じて実際にデータの転送処理をしているのがトランスポート層に位置するTCPやUDPといったプロトコル。
 
**TCPとUDPの違い**
　TCPは、送信側と受信側でお互いに確認をとりながら通信を行うコネクション側。Webサイトやメールなどデータ損失が起きると困るようなアプリケーションで利用される。
　UDPは送信側と受信側で確認を取らないコネクションレス側。信頼性は低いが、通信の手続きが簡略化されているぶん、効率よく通信できるため、動画ストリーミングなどで利用されている。

 # 4.IPアドレスとポート番号

* **IPアドレス**
　インターネットに接続されたコンピューターを特定し、データの行き先を管理するために利用されているもの。IPアドレスは世界中でたった一つだけで、世界中で利用できる「住所」のようなもの。

* **ポート番号**
 　IPアドレスは接続したいコンピューターを指定できるが、コンピューターが提供するサービスまでは指定できない。Webサービスやメールサービスといったコンピューターが提供するサービスを指定するためのものを**ポート番号**という。
 　ポート番号は「0〜65535」までの数字で、範囲によって用途が決められている。一般的に Web サーバー (HTTP) であれば80番といったようにポート番号が決まっており、ポート番号によってサービスを識別できる。（ちなみに、Webサーバーは80番）

  　例えば、あるマンションに住むAさんへ荷物を届けたい時に住所（IPアドレス）だけではAさんに届けることができないように、部屋番号（ポート番号）を住所と一緒に記載する必要がある。このように、IPアドレスとポート番号を指定することで特定のコンピューターの特定のサービスを受け取ることができる。

# 5.URLとドメイン
URLは、Webサイトの場所を示す際などに用いられる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1592334/aa283970-1aa6-8923-db86-0e9867094b40.png)

①スキーム名: プロトコルを指定
②ホスト名: ネットワーク上のコンピュータにつける識別ようの文字列
③ドメイン名:接続先のサーバーを指定。IPアドレスでも指定できる 
④ポート番号: 接続先のポート番号を指定。省略可。通常は指定しない
⑤パス名: 接続先のサーバー上のディレクトリやファイルを指定

　画像の例でいくと、①ファイルを取得する方法「http」で、②「www」は、ネットワーク上のコンピュータにつける識別ようの文字列。③「example.com」は、ファイル取得先のサーバーを指定している。④は通常省略する。⑤「test.html」は取得するファイル名。
　つまり、「HTTP」プロトコルを利用して、「example.com」サーバーにある「test.html」ファイルを取得する、との意味になる。

 * **ドメイン**
 　数字で表記されているIPアドレスは私たちにとって覚えにくく扱いにくいため、ドメインがIPアドレスの別名として扱われる。

# 6.DNS
 **ドメインをIPアドレスに変換する仕組みのこと。**
 
なぜ変換するの？
→ドメインは文字列で記述されるため私たちにとってわかりやすいものですが、インターネット上でのコンピュータ同士の接続にはIPアドレスが必要。そのため、ドメインを利用してコンピューターへ接続する際は、**ドメインをIPアドレスに変換**する必要がある。

DNSのサービスを提供するサーバーを**DNSサーバー**という。

DNS はドメインと IP アドレスが紐付いて管理されているため、 DNS を利用することでドメインから IP アドレスを知ることができる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1592334/7fe47b80-414a-22e6-57ba-93e115a60aa1.png)


# 7.HTTP
HTTP（HyperText Transfer Protocol）は、インターネット上で情報をやり取りするためのプロトコル（通信規約）の一つ。
特に、クライアント（Webブラウザ）とサーバー（Webサーバー）の間での通信に使われている。

#### クライアントとサーバー間のやりとり
1. Webブラウザのアドレス欄にURLを入力 or Webサイト内のリンクをクリック
2. URLやリンク情報に基づいてWebサーバーに対してデータを要求
3. Webブラウザより要求を受け取ったWebサーバーは要求内容を解析
4. 解析した結果より、要求されたデータをWebブラウザへと応答
5. WebブラウザはWebサーバーより受け取ったデータを解析し、Webページとして表示

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1592334/0fe28dd3-a66e-185e-5d03-d508149a28d1.png)