[神本]この本から培った基礎的なネットワークとサーバーの知識

# はじめに
職場でインフラ系の仕事を任せられ、勉強することに。。
某スクール時代に少しかじったくらいでほとんど知識が無いので、どのように勉強しようか悩んでいると、この本([Amazon Web Service 基礎からのネットワーク&サーバー構築](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))が良いと言う記事を多く見かけて読んでみることにしました。
そこで学んだ基礎知識を忘れないようにアウトプットしようと思います。

## 学んだこと(CHAPTER毎に)

####CHAPTER1
インフラ知識を身につけると良いこと↓↓

- 障害に強くなる

- アプリケーション開発の枠組みだけでなく、システム全体に対応出来る
  - システムを運用していると、リソース不足に陥ることがあります。インフラの知識があれば対応できます。

リージョン...世界10箇所に分散されたデータセンター群のこと。

アベイラビリティゾーン(AZ)...リージョンをいくつかに分割したもので、それぞれ物理的に教理が離れている。もしもの自然災害にも他のAZが影響を受けないようにする耐障害性を高める概念。

####CHAPTER2
インターネットで使われている「TCP/IP」というプロトコルは、通信先を特定するのに「IPアドレス」を用いる。
IPアドレスは32ビットで構成されている。8ビットずつ10進数で変換したものを、「.(ピリオド)」で区切って表記する。それぞれの数字は0~255までです。

-例-
192.168.1.2

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

プライベートIPアドレス...インターネットで使わないIPアドレス。誰に申請するでもなく自由に使える。


＜IPアドレス範囲と表記方法＞

IPアドレスは前半の16or24ビットを「ネットワーク部」と呼び、残りを「ホスト部」と呼びます。このホスト部に数字を割り当てます。(※ネットワーク部は同じネットワークに属する限り同じ値です。)
ホスト部に割り当てるIPアドレスの範囲は「2のn乗個」で区切る。
一般的には「256個」か「65536個」で区切ります。

256個...最後の8ビット分(=2の8乗)のため。
65536個...最後の16ビット分(=2の16乗)のため。

＜CIDR表記とサブネットマスク表記＞

CIDR表記...IPアドレスを2進数で表記した時、ネットワークのビット長を「/ビット長」
で示す方法。このビット長を「プレフィックス」と言う。

-例-
※ネットワーク長が24ビットの場合。
192.168.1.0 ~ 192.168.1.255 → 192.168.1.0/24

サブネットマスク表記...プレフィックスのビット数だけ2進数の「1」を並べ、残りを「0」で記述する表記方法。(1というか255と考えた方がいいかも、、)

-例-
※ネットワーク長が24ビットの場合。
192.168.1.0 ~ 192.168.1.255 → 192.168.1.0/255.255.255.0

＜サブネットについて＞
実際のネットワークでは、割り当てられたCIDRブロックは小さなブロックに分割して利用します。
その理由は、、

- 物理的な隔離
  -社内LANを構築する際に、階別に分けたいように物理的に分けることで、障害が起きても、片方のサブネットに影響が出にくいため。 

- セキュリティ上の理由

パブリックサブネット...インターネットからアクセスすることを目的としたサブネット。

プライベートサブネット...インターネットから隔離したサブネット。

インターネットゲートウェイ...インターネットに接続するために必要な出入り口のようなもの。

パケット...データを細切れにしたもの。ヘッダー情報と、データの実態を含んでいる。

ルートテーブル...パケットが到着した時に、ここに定義に従って次のネットワークへ転送する。各サブネットに設定する。

-例-
宛先アドレス(ディスティネーション) =   10.0.0.0/16

流すべきネットワークの入り口となるルーター(ターゲット) = local

デフォルトゲートウェイ...転送先が何も設定されていない場合の転送先。「0.0.0.0/0」に設定される。(全てのIPアドレスの範囲を表す)
                      

####CHAPTER3

＜SSH接続＞
以下のコマンドを実行することでssh接続できる。

```
$ ssh -i pemファイル名 ec2-user@パブリックIPアドレス

$ ssh -i my-key.pem ec2-user@12.168.199.122
```

＜IPアドレスとポート番号＞
インターネットでは、ルーター同士が通信してルートテーブルの情報をやり取りし、必要に応じて自動的に更新するようにしている。代表的な方法が「EGP」と「IGP」である。

EGP...大きなネットワークはAS番号と言うものを持っている。この番号をやりとりしてどのネットワークの先に、どのネットワークが接続されているのかを大まかにやり取りする。住所で例えるとすると、日本や東京都といった部分の情報。

IGP...より詳細なやりとりをする。住所で例えると渋谷区〜以降の情報のこと。

ポート...他のコンピューターと、データを送受信するための出入り口。住所で例えると、部屋番号といった情報。

ウェルノウンポート番号...あらかじめ定められたポート番号。

-例-
SSH　＝　22番
SMTP　＝　25番
HTTP　＝　80番
HTTPS　＝　443番

＜ファイアーウォールについて＞
ファイアーウォール...通して良いデータだけ通して、それ以外は遮断する機能のこと。


####CHAPTER4

＜ドメイン名＞
一般的には、Webサイトにアクセする際はIPアドレスでは無くドメイン名でアクセスします。これは、一意性が保証される必要があります。

名前解決...あるドメイン名からそれに対応したIPアドレスを引き出すこと。

-例-
www.example.co.jp　→　34.133.222.223


####CHAPTER5

HTTP...ハイパーテキストを伝送するための通信規約。クライアントとサーバー間でリクエストとレスポンスをやりとりしている。

-例-
(HTTPステータスコード)

| コード | 意味 |
|:-:|:-:|
| 1xx  | 処理中  |
|  2xx |  成功 |
|  3xx | リダイレクト  |
| 4xx  |  クライアントエラー |
|  5xx | サーバーエラー  |


####CHAPTER6

＜プライベートサブネットのついて＞

サーバを隠すことができて、セキュリティを高められることで利用される。
(主にDBサーバなどを置く)

プライベートサブネットにあるサーバーはインターネットに接続されていないので、SSH接続できないのか？
→踏み台サーバーを用いる！！

踏み台サーバ...パブリックサブネットのサーバーにSSH接続し、そのサーバーからプライベートサブネットにあるサーバーにSSH接続すること。

-例-
ローカル
↓SSH接続
Webサーバー(パブリックサブネット)
↓SSH接続
DBサーバー(プライベートサブネット)


####CHAPTER7

＜NATサーバーについて＞

NATサーバー...IPアドレスを変換するサーバーで、2つのネットワークインターフェースを持ちます。片側には一般的にパブリックIPアドレスを設定し、もう一方にはプライベートIPアドレスを設定する。

NATサーバーを用いると、プライベートサブネット側からのインターネット接続はできるが、その逆はできなくなります。



####CHAPTER8

PHPやMySQL、WordPressのインストールや設定がメインなので割愛。


####CHAPTER9


TCP/IPモデル...役割ごとに4つの階層に分けたモデル。各層には、その層の役割を果たす書くプロトコルがある。各階層を独立化するために階層化しています。上位の階層は下位の階層が何でも良くて、下位の階層は上位の階層の内容を分からなくても良いです。


| 層 | 役割 | 代表的なプロトコル |
|:-:|:-:|:-:|
|  アプリケーション層 | ソフトウェア同士が会話する  |  HTTP SSH,DNS |
|  トランスポート層 | データのやり取りを制御、エラー訂正など  | TCP,UDP  |
|  インターネット層 | IPアドレスの割り当て、ルーティング  | IP ICMP,ARP  |
|  インターフェース層 | ネット上で接続されている機器同士を通信する  | Ethernet,PPP  |


# 終わりに
全然インフラ系の知識を持ち合わせていなかった自分には基礎を固められた良い本でした。。
サーバー構築の手順などもありましたが、書いてもキリがないので割愛しました。
得た用語や知識を綴らせてもらいました。
ここからまた、色んな知識を身に付けていけたらと思います！

## 参考
[Amazon Web Service 基礎からのネットワーク&サーバー構築](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)