全てのエンジニアが知っておきたいネットワーク入門

# 初めに
初めまして、現在CCNAの勉強を通して絶賛ネットワーク勉強中の者です。
勉強の片手間でこれはCCNA受験者に限らず、全てのエンジニアが知っておいた方がいいな〜と思った所を中心にまとめていきます。質問や間違っている点などありましたら是非コメント頂けたら嬉しいです。

#1.ネットワークとプロトコル

###1-1.ノードとリンク
以下は一般的なネットワークとしてよくある構成。各々を以下として呼びます。

* パソコンやルーター・スイッチなどのネットワークを構成する機器を**ノード**
* パソコンとスイッチ・スイッチとルーターなどを接続する線を**リンク**と呼ぶ。
![スクリーンショット-2017-09-11-15.18.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1173407/37e4c621-4f20-de96-a795-3062e61f7c1d.png)

>添付画像
http://www.runsurunet.com/2017/09/11/%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%81%AE%E5%9F%BA%E7%A4%8E_1/

###1-2.LANとWAN

* LANとは、自宅などの1つの拠点で利用されているネットワークの事。このプライベートなネットワークを**イントラネット**と呼ぶ。
* WANとは、地理的に離れたLANとLANを接続する**広範囲のプライベートネットワークの事**。例えば企業が複数の拠点を構えている際に、相互接続する時などに利用される。

以下LANとWANのイメージ図。拠点間のLANを場合に個人で数10kmや数100kmのケーブルを物理的に引く事は不可能な為、**ISP**(属にいうプロパイダー)に依頼して接続を行う。
![68747470733a2f2f7777772e6e2d73747564792e636f6d2f77702d636f6e74656e742f75706c6f6164732f323032302f30312f6c65617365645f6c696e6530312e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1173407/f035f3b2-af65-d2d5-0313-659e997cf360.png)
>添付画像
https://www.n-study.com/wan-detail/leased-line-overview/

###1-3.プロトコルとは
コンピューター同士でやり取り(例.メールの送信等)するには、データをどのような形式で送信するかなどの規則が存在する。これを**プロトコル**と呼ぶ。このプロトコルを各ベンダーで共通化した物を**OSI参照モデル**という。

#2.OSI参照モデルとは
ベンダー独自で上記のプロトコルを規定した場合、「NECはNECのパソコンのみ」や「CiscoはCiscoルーターのみ」としか接続出来ないという問題が発生してしまう。

その為ベンダーごとの独自プロトコルでは無く、各ベンダーは**ISO(国際標準化機構)**が定めたプロトコルに乗っ取って実装を行う事で、他のベンダーが提供しているパソコンやネットワーク機器と相互に通信が可能になるという形態をとっている。
※余談ですが**"ISO"**が定めた**"OSI"参照モデル**と暗記すると覚えやすいです。逆から読むだけなので。

###2-1.OSI参照モデル
OSI参照モデルは通信を行う為の機能を7つの階層に分けた物。
※暗記のおすすめとして上のレイヤから順に**アプセトネデブ**とそれぞれの頭文字のみを覚える方法がオススメ。
![osim.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1173407/9a276bdc-c778-1884-9dcc-23081d2cbfec.png)
ただ正直市販の参考書やネットの記事だと役割の部分が難しい用語が使われていて分かり辛いんですよね。なんで今回はここに具体例を加えて簡単に紐解いていきます。

####物理層
OSI参照モデルの第1層。**ハブ**などがこれにあたる。
念の為ハブが分からない人に解説しておくと、ハブはルーターのLANポートが足らない時などに利用する物。例えば6人が以下のルーターを利用して有線接続する場合、LANポートが2つ足らないという問題に直面してしまう。
![download.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1173407/081d89c5-bc02-4a95-22f9-746c1a950c1c.jpeg)
こういった場合に利用するのが**ハブ**。これをルーターに接続して利用する事で**"物理的"**に足らないLANポートの不足分を解消する事が出来る。こういった**物理的**な問題を解消してくれるから**物理層**と覚えたら覚えやすそう。
![physical-layer_img_02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1173407/bb64609d-3f87-d8ae-45d2-fd3f48c35050.jpeg)
>添付画像
https://ansl-blog.hatenablog.com/entry/2019/05/22/OSI%E5%8F%82%E7%85%A7%E3%83%A2%E3%83%87%E3%83%AB%E3%81%A8TCP%EF%BC%8FIP%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6
http://rooter.web.fc2.com/page_01.html

####データリンク層
OSI参照モデルの第2層。**スイッチ**などがこれにあたる。
こちらもスイッチの機能が分からない人向けに解説しておくと、基本的な機能と見た目に関してはハブと変わらない物の、**MACアドレス**という各PCに割り振られている固有のアドレスを利用して通信制御が出来るというのがハブより賢い所。

例えばハブは6人が接続している場合に6人全員にフレームを送信してしまう物の、スイッチの場合は上述の通り**MACアドレス**で通信制御が行える為、"特定の誰か"のみにフレームを送信する事が出来る。
![61EJ60k-ONL._AC_SL1000_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1173407/ba1b0c0f-e7a5-4d9b-17fb-c30a794a2f3b.jpeg)
>添付画像
www.amazon.co.jp/dp/B0763TGBTS

####ネットワーク層
OSI参照モデルの第3層。**ルーター**などがこれにあたる。
データリンク層ではMACアドレスを利用して識別を行っていた物の、ネットワーク層ではルーターから付与される**IPアドレス**を利用してお互いの識別を行う事が可能になる。

データリンク層までは、物理的にケーブル等で接続されている範囲内でしか通信出来なかった物の、ネットワーク層以降ではIPアドレスを利用する事で物理的な制約から開放されて異なるネットワーク間で通信出来るようになる事が最も違う点。

このIPアドレスには以下の2種類が存在する。

* **グローバルIPアドレス:** インターネット上と通信する為に全世界で重複しない一意なIPアドレス。イメージとしてはインターネットにおける住所のような物。
* **プライベートIPアドレス:** ルーターから付与されるIPアドレスで、イントラネット上で重複しない一意なIPアドレス。こちらに関してはグローバルIPアドレスが別であれば、重複しても平気なIPアドレス。

グローバルIPアドレスとプライベートIPアドレスの関係を図で表すと以下が分かりやすい。
![kagoya1711-3_0_1.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1173407/1ccff66d-3fd4-5fad-3581-1728dee22036.gif)
>添付画像
https://www.kagoya.jp/howto/network/ipaddress/

####トランスポート層
OSI参照モデルの第4層。通信の信頼性に関する機能が提供されている。
インターネット上でデータの送信を行うに当たって途中でデータが欠けた場合に宛先は正しくデータを処理出来なくなるという問題が発生する。このような問題の発生を防ぐ機能を提供しているのがトランスポート層。
具体例を挙げるとメール送信時にデータが欠けてしまい受信時に読み込めないなど。

大まかに分類すると以下の2つの通信プロトコルに分割される。
以下を見るとTCPを利用する方が良さそうな一方で、音声通話などは通信品質の低下と比較して、通信遅延が発生する方が問題である事からUDPを使用している為、case by caseで利用されている。

* **TCP:** データの破損をさせる事なく宛先に届ける為の通信効率の最適化機能を提供。
* **UDP:** TCPとは異なりデータ送信の確実性は劣る物の、高速にデータの転送を行う機能を提供。

####セッション層
OSI参照モデルの第5層。通信の開始から終了までのひとかたまりを**セッション**といい、通信が可能となる。Webサイトのログイン後のセッションと役割は殆ど同じで、インフラ機器も複数のアプリケーションと通信を行っている事があり、その際に別のアプリケーションにデータを転送しないようにセッション層では制御が行われている。

####プレゼンテーション層
OSI参照モデルの第6層。通信の際に利用される文字コードの規定を行っている。
文字コードの種類は[こちら](https://uxmilk.jp/46875)のような物があり、この文字コードが異なる事で文字化けといった事象が発生する。
※因みに文字化けとは、1度は誰でも見た事があると思われるこんな感じの状態。
![mojibake-1.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1173407/e5b5c147-1cb1-71eb-efbb-fd5e7c48d5cb.gif)
>添付画像
https://skill-up-engineering.com/gachinko/?p=160


####アプリケーション層
OSI参照モデルの第7層。ユーザが利用する通信に関する規定を行っている。
有名な物だとWebサイトの閲覧には**HTTP**といったプロトコルや、メール送信には**SMTP**といったプロトコルを利用する事でアプリケーションの機能の提供が出来るようになる。

#終わりに
一見複雑なネットワーク周りの勉強や覚える事の多いOSI参照モデルなども具体例や図を交えて覚えるだけで、割とスラスラ覚えられそうですね。

無論今回の記事は到底CCNAレベルでは無い物の、同じようにして理解していけばなんとかなるかなぁ〜と甘い期待をしております。続きはまたどこかで。以上。
※ps:[Twitter](https://twitter.com/kenmatsu201225)もやっているので是非絡んで貰えると嬉しいです。

#追記
#####2020-03-07:
@tokkun5552 さんのコメントを頂きWANとスイッチの説明の一部を修正致しました。コメントの方ありがとうございます!
因みに物理層・データリンク層で紹介した各々のハブには、以下の別名が存在するようです。

* フレームの制御やVLANの設定が出来ないハブは別名**バカハブ**
* フレームの制御やVLANの設定が出来るハブは別名**インテリジェントスイッチ**

VLANの説明等については今後別記事で更新していくかもしれないです。