【初心者向け】AWS学習前の知っておくべきネットワーク用語について

#はじめに
ポートフォリオをAWSにデプロイするために、AWSサーバー構築を勉強し始めましたが、基本的なネットワーク知識が必要だと感じたので、ネットワーク用語についてまとめました。

参考にしました→[キタミ式基本情報](https://www.amazon.co.jp/%E3%82%AD%E3%82%BF%E3%83%9F%E5%BC%8F%E3%82%A4%E3%83%A9%E3%82%B9%E3%83%88IT%E5%A1%BE-%E5%9F%BA%E6%9C%AC%E6%83%85%E5%A0%B1%E6%8A%80%E8%A1%93%E8%80%85-%E4%BB%A4%E5%92%8C02%E5%B9%B4-%E6%83%85%E5%A0%B1%E5%87%A6%E7%90%86%E6%8A%80%E8%A1%93%E8%80%85%E8%A9%A6%E9%A8%93-%E3%81%8D%E3%81%9F%E3%81%BF%E3%82%8A%E3%82%85%E3%81%86%E3%81%98/dp/4297110210)
 　　　　　　　　[Amazon Web Services 基礎からのネットワーク&サーバー構築 改訂3版](https://www.amazon.co.jp/Amazon-Services-%E5%9F%BA%E7%A4%8E%E3%81%8B%E3%82%89%E3%81%AE%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF-%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E6%A7%8B%E7%AF%89-%E6%94%B9%E8%A8%823%E7%89%88/dp/4296105442/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&dchild=1&keywords=%E5%9F%BA%E7%A4%8E%E3%81%8B%E3%82%89%E3%81%AE%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF&qid=1599994103&s=books&sr=1-1)

<font color="Crimson">**2020/9/16 更新:　ポート番号、HTTP追加**</font>

#用語解説

##プロトコル
ネットワークを通じてコンピューター同士がやり取りするための約束事のこと。プロトコルには様々な種類があり、情報を送り出す端末の選定、データの形式、パケットの構成、エラーの対処などを取り決めた通信、などが決まっている。それらを7階層に分けた**OSI(Open Systems Interconnection)基本参照モデル**というモデルがある。

####OSI参照モデル
| 階層 | 階層名 | 役割 |
|:-:|:-:|:-:|
|第7層|アプリケーション層|具体的にどんなサービスを提供するか|
|第6層|プレゼンテーション層|データはどんな形式にするか|
|第5層|セッション層|通信の開始から終了までどう管理するか|
|第4層|トランスポート層|通信の信頼性はどう確保するか|
|第3層|ネットワーク層|ネットワークとネットワークをどう中継するか|
|第2層|データリンク層|同一のネットワーク内でどう通信するか|
|第1層|物理層|物理的にどうつなぐか（例えばLANケーブル）|

##ゲートウェイ
トランスポート層（第4層）以上が異なるネットワーク間で、プロトコル変換による中継機能を提供する装置。ネットワーク双方で使っているプロトコルの差をこの装置が変換、吸収することで、お互いの接続を可能にしている。

##IP(Internet Protocol)
ネットワーク層のプロトコル。経路制御を行いネットワークからネットワークへとパケットを運んで相手に送り届ける。IPによって構成されるネットワークは、コンピュータやネットワーク機器などを識別するために**IPアドレス**(後述）という番号を割り当てて管理する。

##TCP（Transmission Control Protocol)
トランスポート層のプロトコル。通信相手とのコネクションを確立してから、データを送受信する**コネクション型**の通信プロトコル。パケットの順序や送信エラー時の再送などを制御して、送受信するデータの信頼性を保証する。

##UDP（User Datagram Protocol）
トランスポート層のプロトコル。事前に送信相手と接続確認を取ったりせず、一方的にパケットを送りつける**コネクションレス型**の通信プロトコル。パケットの再制御などを一切行わないため信頼性に欠けますが、その分高速になる。

##IPアドレス
ネットワーク上で互いに重複しない唯一無二の番号で、いわゆる「住所」のようなもの。1998年10月に米国で設立された民間の非営利法人ICANNで一括管理している。IPアドレスは、32ビットで構成されており、「192.168.1.3」のように、8ビットずつ10進法に変換したものを「.」(ピリオド)で区切って表記する。つまりIPアドレスは「0.0.0.0」〜「255.255.255.255」までとなる。
IPアドレスには「パブリックIPアドレス」と「プライベートIPアドレス」の2種類が存在する。

####　・パブリックIPアドレス
　　インターネットに接続する際に用いるIPアドレスのこと。プロバイダーやサーバー事業者から貸し出される。

####　・プライベートIPアドレス
　　インターネットで使われないIPアドレス。主な用途として社内LANを構築するときや、ネットワークの実験をする際に用いる。
　　IPアドレスの範囲が決まっている。

| IPアドレス範囲 |
|:-:|
|10.0.0.0〜10.255.255.255|
|172.16.0.0〜172.31.255.255|
|192.168.0.0〜192.168.255.255|

<br>
また、IPアドレスは「ネットワーク部」と「ホスト部」に分かれている

####　・ネットワーク部
　　どのネットワークかを示すアドレス。
####　・ホスト部
　　どのパソコンかを示すアドレス。
<br>
![スクリーンショット 2020-09-13 19.04.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/687088/6e141fe5-f130-c7a1-80b7-a0d6b4bc41e4.png)

![スクリーンショット 2020-09-13 19.20.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/687088/8289a010-a2ba-9272-ad44-d1df812b0ed7.png)

##ポート番号
TCP/IP通信において、 コンピュータが通信に使用するプログラムを識別するための番号。 ポート番号は16ビットの整数であり、 0番～65535番まである。ポート番号を使うことで、1つのIPアドレスで同時に複数のアプリケーションが通信できる。主だったプロトコル（例えばHTTP、FTP、Telnetとか）には予めポート番号が予約されており、これを**ウェルノウンポート**と言う。

| プロトコル名 | ポート番号 |
|:-:|:-:|
|HTTP|80|
|FTP| 転送用：20、制御用：21|
|Telnet|23|
|SMTP|25|
|POP|110|
|NTP|123|

##HTTP(Hypertext Transfer Protocol)
アプリケーション層のプロトコル。ハイパーテキスト(HTMLとか)を伝送するため通信規約。WebサーバーとWebブラウザは、HTTPを用いてデータのやり取りをする。
HTTPやりとりには**「HTTPメソッド」「HTTPステータスコード」「リクエスト/レスポンスヘッダー」**などがある。

####　・HTTPメソッド
　コンテンツに対する操作コマンド。画像を参照したり、入力フォームからデータを送信したりする。

|　メソッド　| 意味 |
|:-:|:-:|
|**GET**|リソースを取得する|
|**POST**|リソースにデータを送信したり、子リソースを作成したりする|
|**HEAD**|リソースのヘッダー情報だけを得る|
|**PUT**|リソースを更新したり、作成したりする|
|**DELETE**|リソースを削除する|
|**OPTIONS**|サーバーがサポートしているメソッドを取得する|

####　・HTTPステータスコード
　結果の成否を表す値。3桁の数字で構成され、百の位の数字で大まかな成否が決まり、残りの桁で詳細なステータスが決まる。

| コード | 意味 | 解説 |
|:-:|:-:|:-:|
|1xx|処理中|なにか処理中のことを伝えるときに用いる。あまり使われない。|
|2xx|成功|成功したことを伝える。「200 OK」がよく使われる。|
|3xx|リダイレクト|別のURLにリダイレクトする。|
|4xx|クライアントエラー|クライアント側にリクエストエラーがある。|
|5xx|サーバーエラー|サーバー側にエラーがある。|

　例：301 Moved Permanently(永続的な移動)
　　　302 Found(一時的な移動)
　　　404 Not Found(指定されたリソースが見つからない)
　　　500 Internal Server Error(内部的なエラー)

####　・リクエストヘッダー
　クライアントからサーバーに送信するときに送られるヘッダー。

　qiita.comのリクエストヘッダー
![スクリーンショット 2020-09-16 1.02.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/687088/f60da096-be30-133d-00a0-0b1fe961da14.png)


####　・レスポンスヘッダー
　サーバーからクライアントに返すときに送信される情報。

　qiita.comのレスポンスヘッダー
![スクリーンショット 2020-09-16 1.04.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/687088/b6b6c783-1c4b-b2c5-44ea-65637142a016.png)


#まとめ
まだまだ知らなければいけない知識はありそうですが、この辺で。学習する上で必要だと思う用語が出てきたら随時更新していきます。
ネットワークについて、理解しづらい部分が多いですね。ネットワークを理解せずにAWSに取り掛かると、「この通信ってなんの通信だっけ？」となって、応用がきかなくなりそうです。あとインターネットに接続する際、セキュリティの知識も必要になると感じました。