ネットワークの基本について（TCP/IP、OSI参照モデルなど）

書籍でネットワークについて学習したのでまとめてみました。

#ネットワークとは
> 複数のコンピューターを接続して、相互に通信できるようにした状態。通信回路やケーブルなどを通してコンピューター同士を接続することで、情報の共有や処理の分散、メッセージの交換などが可能になる。[コトバンク](https://kotobank.jp/word/%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF-7058)

##なぜネットワークが必要なのか
メールを送る、ファイルを共有する、HPを公開する、HPを見る、プリンターを共有して使うといった、**それぞれのユーザーがもつリソースをデータによってコンピューター同士で共有するため。**

データを共有するにはネットワークを使う必要があるが、ネットワークではどのようにデータを送受信しているのか。![Qiita.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295193/c3da3480-b3dd-7ffb-a077-b7b51ead239e.png)

#OSI参照モデルによるデータ通信
ネットワークではデータを送る側と受け取る側が使用するルールを決めてデータをやりとりする。そのルールを**プロトコル**と呼ぶ。データ通信に必要なプロトコルは１つではなく複数のプロトコルからなる。

複数のプロトコルによるデータ通信の説明には**OSI参照モデル**がよく使われる。**OSI参照モデル**はISO（国際標準化機構）がデータ通信の標準化のために作ったもので、プロトコルを７つの階層構造で説明している。

つまり、ネットワークによるデータ通信は段階ごとの複数のプロトコルで実現され、**OSI参照モデル**の各層ごとにそれぞれ役割とルールが存在する。
![OSI.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295193/4607da4d-1825-cb82-960c-8f3aef70d682.png)
　　　　　　　　　　　　　　　　　　OSI参照モデル

ではOSI参照モデルを使ってどのようにデータがやりとりされるのか。

データの送信者は第７層から第１層へ向かってデータを送信し、それぞれの階層の役割をこなしながら受信者側の第1層の物理層にデータが届く。
データの受信者側は第1層でデータを受け取り、第7層に向かってそれぞれの階層の役割をこなすことでデータを受信することができる。

![OSI (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295193/7b131f81-1c91-1bd5-44d8-0f1e6f62c020.png)

##データについて
送信されるデータはデータ本体のみで送られるわけではなく、宛先、送信元のアドレスなどデータ以外のものも一緒に運ばれる。
データにデータ以外のものをくっつけることを**カプセル化**といい、カプセル化されたデータを**PDU(プロトコルデータユニット)**という。
カプセル化で追加されるデータは、データの前につけるときは**ヘッダー**、後ろにつけるときは**トレーラー**と呼ばれる。
![新規登録完了.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295193/f2b93f14-470f-2c74-a3e3-4c354139f718.png)



##各層の役割について
データ通信では**OSI参照モデル**の各層の役割をこなしながらデータを送受信する。


###第1層　物理層
物理層では電気信号の条件、ケーブルの端子といった通信の最も基本的な電気的、物理的なルールが決められる。**コンピュータを繋ぐケーブルと、ケーブルに流す信号のルールを決めることで宛先にデータを届けられるようになる。**実際にデータを信号にして流すのはこの層。

###第２層　データリンク層
データリンク層では**信号が届く範囲でのデータ転送についてルールを決める。**この範囲を**セグメント**という。

セグメントとは、LANケーブルによってハブやスイッチで繋がれている範囲、または専用線によって繋がれているコンピューターとルーター間、ルーターとルーター間のことをいう。
![セグメント (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295193/9d3af809-cc7d-0429-e3f9-234f114e24b6.png)

データリンク層のルールにはLAN用とWAN用があるが、より身近なLAN用のルールでは**イーサネット**が使われる。イーサネットとはLANに関する物理的な規格であり、LANケーブルそのものを指すこともある。

イーサネットではデータにイーサネットヘッダーとイーサネットトレーラーをつけてイーサネットフレームにカプセル化する。イーサネットヘッダーには**あて先MACアドレス**と**送信元MACアドレス**の情報がはいっており、これを使って送信先のコンピューターにデータを届ける。



###第3層　ネットワーク層
第２層がセグメント内でのデータのやりとりであったのに対し、第３層ではセグメント間でのデータのやりとりを行う。セグメントは狭義の意味で「ネットワーク」と言い換えることができる。**ネットワーク間のデータのやりとりとは、ルーターを超えて別のネットワークへデータを送ることである。**このネットワーク間でデータをやりとりすることを**インターネットワーク**という。インターネットワークにより、**離れた位置にあるコンピュター同士がデータを通信できるようになる。**
![インターネットワーク.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295193/f9fc2a11-d864-dd53-3970-d91acccaf216.png)
　　　　　　　　　　　　　　　　　　　インターネットワーク
####アドレッシングとルーティング
ネットワークを超えた通信ではMACアドレスでは送信先の位置情報がわからないため、どのネットワークのどのコンピュターといった位置情報が必要になる。また、位置情報に加えてどのネットワークを経由して届けるかも決める必要がある。
位置情報、つまりアドレスをどのように書き、どのように割り振るかを**アドレッシング**という。
どのネットワークを経由してデータを届けるか決めることを**ルーティング**という。

アドレッシングとルーティングによるインターネットワークを行うプロトコルが**IP（インターネットプロトコル）**と呼ばれるプロトコルである。

第３層ではデータにIPヘッダーをつけて情報を付加する。IPヘッダーの情報で最も重要なものが**IPアドレス**で、アドレッシングによりインターネットワークでのデータ通信に必要な**あて先IPアドレス**と**送信元IPアドレス**を特定することができる。インターネットワークでは**あて先IPアドレス、送信元IPアドレス、あて先MACアドレス、送信元MACアドレス**の４つのアドレスを特定することでデータ通信ができるようになる。

あて先IPアドレスと送信元IPアドレスがわかったら、ルーティングを決定するのがルータである。
インターネットワークではあて先にデータを届ける場合、**複数のネットワークを経由してデータを届けるが、**どのネットワークを経由していけばあて先に届くかを知る必要があり、それを決めるのがルータである。
ルータは**ルーティングプロトコルで近接するルータと情報を交換し合い、**複数ある経路から最適なものを選んで経路を決定する。

###第4層　トランスポート層
第１〜３層は「あて先へデータを届ける」役割であったが、第4層では「データを確実に届ける仕組み」と「アプリケーションの識別」を行う。
第4層でこれらの役割を担うプロトコルが**TCP**と**UDP**である。
####コネクションの確立
TCPは「データを確実に届ける仕組み」として**コネクションの確立**を行う。第３層でルーティングにより経路が確立されたことでデータを届けることができるようになったが、**「確実に」**データが届くのかは不明である。
そこでデータ通信を行う前に確認のやりとりを行うことで、相手に**「確実に」**データが届くのかを確認する。
AとBでコネクションを確立する場合、AからBへ**データ転送の許可要求**を出す。要求を受けたBは**それに対する許可を送信元に伝える。**これで「A→B」へデータが通信できることが確認できる。次は反対に**BがAにデータ転送許可要求を出す。**そして**Aはそれに対する許可をBに伝える。**これで双方向のデータ通信が確立されたことになる。
コネクションの確立は3回のやりとりを行うので**スリーウェイハンドシェイク**と呼ばれる。
![スリーウェイハンドシェイク (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295193/d59f710b-3a8c-9300-0af6-8a0faa617278.png)


####アプリケーション間通信
第４層ではコネクションの確立のほかに「アプリケーションの識別」を行う。

第３層でアドレッシングとルーティングによりコンピュータとコンピュータでデータ通信ができるようになったが、実際にデータ通信を行なっているのは**アプリケーション**である。データ通信を行う際にブラウザやメールソフトでデータをやりとりした場合、IPアドレスとMACアドレスだけではどのアプリケーションでデータ通信を行なったのかは不明である。そこで**ポート番号**を使ってそれぞれのデータがどのアプリケーションから送信されあて先はどのアプリケーションかを決定する。

したがって実際にデータ通信を行う場合は、**IPアドレスとポート番号を使って「どのコンピューターの、どのアプリケーション」を判断する。**

よく使われるアプリケーションは**「ウェルノウンポート番号」**という事前に決められたポート番号が割り振られているので、この番号を使ってデータ通信を行うことができる。
####UDP
TCPがスリーウェイハンドシェイクで確認しながらデータ通信を行うのに対して、UDPはデータが正しく届いたかの確認はしない。データが正しく届く保証がないが、確認の手間が省けて、必要な情報もTCPより少ないためデータのサイズが小さくなり、その分データを早く**送信することができる。**

このため、UDPは確実性よりもスピードが優先される動画配信サービスなどで使われる。


###第5層　セッション層
第5層ではデータ通信での処理がセッション、つまり会話として成り立つように制御している。

例えば認証やログイン、ログアウトなどはアプリケーション間で
・「認証してください」→「認証します」
・「ログインさせてください」→「ログインします」

といった会話形式で言葉をやりとりしている。この言葉のやりとりが会話として成り立つように制御している。
###第6層　プレゼンテーション層
第6層ではアプリケーションのデータの表現形式を規定している。

例えばテキストデータをやりとりする場合、データの送信者と受信者で**データ形式が異なっていると文字が送れなくなってしまう。**そこでデータ形式をプレゼンテーション層で変換し、差異をなくすことでデータ通信を可能にする。

ほかにも**データの圧縮や変換**も行うことができる。
###第7層　アプリケーション層
第７層は**アプリケーションによってネットワークサービスを提供するレイヤー**である。
アプリケーション層ではアプリケーションの目的に応じたプロトコルを提供する。

| アプリケーション       |       プロトコル|    
|:-----------------|:------------------:|
| ブラウザー             |HTTP           |      
| FTPクライアント           |            FTP |       
| メールクライアント             |              SMTP |     


##参考
[３分間ネットワーク基礎講座](https://www.amazon.co.jp/%E6%94%B9%E8%A8%82%E6%96%B0%E7%89%88-3%E5%88%86%E9%96%93%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E5%9F%BA%E7%A4%8E%E8%AC%9B%E5%BA%A7-%E7%B6%B2%E9%87%8E-%E8%A1%9B%E4%BA%8C/dp/4774143731/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=2A1ZEHVRGHTT6&keywords=%EF%BC%93%E5%88%86%E9%96%93%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF&qid=1567915759&s=gateway&sprefix=%EF%BC%93%E5%88%86%E9%96%93%2Caps%2C271&sr=8-1)
[図解サーバー仕事で使える基本の知識](https://www.amazon.co.jp/%E5%9B%B3%E8%A7%A3-%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC-%E4%BB%95%E4%BA%8B%E3%81%A7%E4%BD%BF%E3%81%88%E3%82%8B%E5%9F%BA%E6%9C%AC%E3%81%AE%E7%9F%A5%E8%AD%98-%E6%94%B9%E8%A8%82%E6%96%B0%E7%89%88-%E5%A2%97%E7%94%B0/dp/4774197572/ref=sr_1_2?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&keywords=%E5%9B%B3%E8%A7%A3+%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC&qid=1567915783&s=gateway&sr=8-2)