カタカナ言葉を整理してみた　~インフラ,Web編~

　IT系でよく使われるカタカナ言葉を、自身の振り返りの意味も込めて簡単に整理してみました。
　**自分が分からないと感じたところを広く浅く書いているので、「ここの説明が足りねぇよ！」という箇所もありますがご了承ください。**

# インフラ
　システムやサービスの基盤となる設備。サーバやネットワークのこと。
　現実で例えると水道や電気といった「生活を支えるもの」で、ITにおいては「安定したサービスを支える設備」と言えるかと思います。

## サーバ
　クライアント(ユーザ)に対してサービスを提供する**ソフトウェアやコンピュータ**のこと。
　WebサーバやDBサーバ等名称が色々あるけど、名前が違うだけでコンピュータであることに変わりはない。

## ネットワーク
　複数のコンピュータをつないでデータを送受信できるようにする仕組み。

## web
　**ネットワークの機能の一つ。**
　様々な情報を発信、閲覧できる仕組み。webのお陰でQiitaで記事を投稿できたり、動画サイトで動画の閲覧が出来る。

　サーバ、ネットワーク、webを画像でまとめるとこんな感じ。
![復習.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2448205/e3cc779e-0a05-7918-6876-42989c7bac6a.jpeg)

# IPアドレス
　32ビット(8bit × 4)の整数値で構成される、ネットワーク上の機器に割り当てられる**インターネット上の住所。** 32桁の2進数で表すことが出来るが、読みやすいように10進数で表現する。
例) 11000000.10101000.10000000.11111111
　　　↓
　  192.168.128.255

　IPアドレスは、**ネットワーク部(固定)** と**ホスト部(可変)** で区分けされる。ネットワーク部で **「どこの住所まで通信を送るか」** 、ホスト部で **「どのデバイスに通信を届けるか」** が決まる。
例) 192.168.128.0 ~ 192.168.128.255の256パターンのIPアドレスを使う場合
　 ネットワーク部：192.168.128で固定
　 ホスト部：0 ~ 255 で可変
　マンションで例えるとネットワーク部は「マンションの名前」、ホスト部は「マンション内の部屋(○○号室)」です。

## サブネットマスク
　**「IPアドレスのうち、ココまでがネットワーク部で、ココからがホスト部だよ」** と表記する方法。

・CIDR表記
IPアドレスの後ろに/を書き、ネットワーク部のビット数を記載する
例) 192.168.128.0/24

・サブネットマスク表記
IPアドレスの後ろに/を書き、ネットワーク部を表すビット部分を1に、ホスト部を表すビット部分を0にする。
例) 192.168.128.0/255.255.255.0

　上記どちらの書き方も、「IPアドレスは192.168.128.0 ~ 192.168.128.255の256パターンがある」ということを表している。

## ドメイン名
　コンピュータやネットワークを識別する**名前(IPアドレスの代わり)**。
例)www.spring.com
　ドメイン名はピリオドで区切って、.comとか.workとか、ドメイン名の一番右を「トップレベルドメイン」と呼ぶ。

### DNS
　ドメイン名をIPアドレスに変換する管理システム。
・**ネームサーバ**
　ドメイン名とそれに紐づくIPアドレスが登録されているサーバ。階層化されていて、ドメインの区切りごとにサーバがある。
・**フルリゾルバ(キャッシュDNSサーバー)**
　ネームサーバにIPアドレスを訪ね、その結果をクライアントに返すサーバ。

　例として、「www.spring.com」というドメインにアクセスした時、どういう処理が動いているのかを図にしました。
![復習3 (1).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2448205/d2b5cc31-83c1-236b-563e-843dbb3f168e.jpeg)

　言葉で説明すると、
1. DNSサーバにドメインを問い合わせる
2. DNSサーバからIPアドレスを取得
3. 取得したIPアドレスをもとに、webサーバへアクセスする
4. webサーバからHtmlなどのデータがレスポンスとして返ってくる

みたいな流れです。

# プロトコル
　ネットワークを利用して通信するために決められた**約束事・ルール**。プロトコルのお陰で、コンピュータ同士のOSや内部の仕様が違っていても、データの送受信が可能になる訳です。
　お仕事で例えると「就業規則」でしょうか。社員同士が就業規則を遵守することで不快な思いをすることなく仕事が出来たり、手順を守って何かの申請をすることで、業務が円滑に進むイメージです。

## TCP/IP
　**プロトコル群の総称**。通信方法を、4つの層に分けて定義する。
![復習4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2448205/5a7f2061-bc10-8837-0354-4c1d209b96bd.jpeg)

### HTTP
　HTMLなどのコンテンツの送受信に用いられる、アプリケーション層の**プロトコル(通信時の約束事)**。クライアントが**HTTPリクエスト**を送り、サーバが**HTTPレスポンス**を返すことで、クライアント側にHTMLなどのコンテンツが表示される。
　HTTPリクエスト&レスポンスは、〇〇ライン+ヘッダ+ボディで構成される。
+ **HTTPリクエスト**
    + リクエストライン
        + 例) GET /index.html HTTP/1.1
        + リクエスト方法 / 対象のコンテンツ / プロトコルのバージョン
    + ヘッダ 
        + 例) Host:spring.com Accept-Encoding:gzip,deflate...
        + クライアントから送信する追加情報
    + ボディ
        + オプション
+ **HTTPレスポンス**
    + ステータスライン
        + 例) HTTP/1.1 200 OK
        + プロトコルのバージョン / ステータスコードの数字 / ステータスコードのテキスト
    + ヘッダ
        + 例) Content-Type:text/html charset=UTF-8...
        + 日付、コンテンツタイプ、文字コードなどを指定
    + ボディ
        + HTML

#### getリクエストとpostリクエストの使い分け

| |get|post|
|-|-|-|
|用途|新しい情報(webページなど)を取得する場合|入力値をもとにデータベースなどを更新する場合|
|パラメータの<br>渡し方|URLの後にデータをつけて送信|htmlのフォームに入力して送信|
|URL|例) spring.com/create?user=taro|例) spring.com/insertuser|
|送信可能<br>データ|テキストデータ|テキストデータ&バイナリデータ|

# 参考文献

https://qiita.com/mogulla3/items/efb4c9328d82d24d98e6

https://qiita.com/Yasuaki-Nagai/items/c322c48684cf89b50ca4

https://qiita.com/Sekky0905/items/dff3d0da059d6f5bfabf