レイヤ３

#レイヤ３

レイヤ３について掘り下げてみようと思う

ネットワークとは（ここでは）PCや各デバイスをメディアで相互に接続した論理グループ
のことを指す。

レイヤ２はネットワーク内での相互通信の方法で
レイヤ３はネットワーク間の相互通信の方法のことである

##論理アドレス
MACアドレスは住所ではなく名前を指すもの

論理アドレスは住所と名前がわかる二つの情報からなる
そして経路検索がしやすいため
すなわちインターネットワーク内でのデータの転送が可能になる

##ルータ
最適な経路を選択することができる機器
距離、転送速度、トラフィック量、信頼性などを考慮してルートを探し出す
→_ルーティング_

スイッチがMACアドレスに基づいてスイッチングを行うのに対し、ルータは、レイヤ３の論理アドレスに基づいてスイッチングを行う

##TCP/IP
インターネットで使用されているプロトコル

レイヤ３プロトコルがパケットの転送を受け持つ
論理アドレスを決定、経路設定。

コネクション・レス型通信
…事前に送るという宣言もなしに送ったら送りっぱなしのこと

##論理アドレス
論理アドレスはネットワーク管理者がつけ、各デバイスのネットワークとの_接続点_ごとに
つける
物理アドレスとは違いNICを変えたとしても同じ論理アドレスを持つ
所属するネットワークが変わった場合、論理アドレスも変わるgroup」

論理アドレスは所属する＿ネットワークの番号＋ホストの番号_
そしてネットワークの番号は接続されているすべてのネットワークでユニークでなければならない
一方でホストの番号は所属するネットワーク内でユニークでなければならない

##クラスフルアドレッシング
クラスに分けてIPアドレスを割り振る方式のこと
Internetのネットワーク間を管理する暖帯を_ICANN_

|クラス	|第１オクテット|	10進数で表記した場合|
|---|---|---|
|Ａ	|0	 	|0.x.x.x ～127.x.x.x|
|Ｂ	|1	0	 	|128.x.x.x ～191.x.x.x|
|Ｃ	|1	1	0	 	|192.x.x.x ～223.x.x.x|
|Ｄ	|1	1	1	0	 	|224.x.x.x ～239.x.x.x|
|Ｅ	|1	1	1	1	 	|240.x.x.x ～255.x.x.x|

##予約済みアドレス
特別な意味を持つアドレス
・ネットワークアドレス（ホスト番号のビットがすべて０）
192.168.10.0
これはネットワーク自体を示し、経路選択の際に使用する
つまり、192.168.10.0にとりあえず情報を運んで、その先はネットワーク内部で解決してもらおうということ

・ブロードキャストアドレス（ホスト番号のビットがすべて１）
192.168.10.255
ネットワーク内の全員が受け取るためのアドレスのこと
このアドレスに情報を送信すると192.168.10に属するホストは情報を受信することになる

・クラスD　クラスE
マルチキャスト用と研究用
　
・0.0.0.0/　127.0.0.0/ 255.255.255.255
すべてのネットワーク/ループバックアドレス/全ネットワークに対するブロードキャストアドレス

・プライべートアドレス


|第１オクテット	|第２オクテット	|第３オクテット	|第４オクテット|
|---|---|---|---|
|10	|ホスト番号|ホスト番号|ホスト番号|
|172	|16～31	|ホスト番号|ホスト番号|
|192	|168	|0～255	|ホスト番号|

これらのプライベートIPアドレスは、インターネットに接続しない環境で使われるアドレスで、万が一インターネットと接続できる状況になっても、ルータがインターネット上に流さないように止める役割がある

##サブネットワーク
ホスト番号のビットをサブネット番号とホスト番号にして考える
使用する場合はサブネットマスクをIPアドレスと同時に表記する必要がある

##データ転送
_宛先IPアドレス__宛先MACアドレス__送信元IPアドレス__送信元MACアドレス_の四つが必要

・送信元MACアドレス＝自分のMACアドレスは、NICを取り付けた段階でわかる
・送信元IPアドレス＝自分のIPアドレスは、静的な割り当てと、動的な割り当てがある
・静的な割り当ては、ネットワーク管理者にIPアドレスを割り当ててもらい、手動で入力する
・静的な割り当ては、大規模や移動の多いLANには向かない
・サーバと通信して、IPアドレスを割り当ててもらう方式を動的な割り当てという
・動的な割り当てにはDHCPなどがある

##DHCP（レイヤ7）
・IPアドレスを自動的に割り振る方法がDHCPである。
・各クライアントはDHCPサーバが持つアドレスプールから、IPアドレスを割り振ってもらう。
・IPアドレスを割り振る際には、リース期間を設定する。
・DHCPはIPアドレスを割り振るだけでなく、詳細な設定も同時に送信することができる。
・DHCPの動作は、以下のように行われる。
　・クライアントがサーバを見つける(DISCOVER)
　・サーバは候補のアドレスを送る(OFFER)
　・クライアントは正式な要求を送る(REQUEST)
　・サーバがそれを認める(ACK)
・DHCPのメッセージのやりとりはブロードキャストを使用する。
・リース期間前にも返却や再取得要求が行える。
→_送信元のアドレスの入手方法_
※この部分はレイヤ７の時に深く触れようと思います。

##ARP
宛先のMACアドレスとIPアドレスの入手方法はARPというプロトコルを使用する
ARPは宛先のIPアドレスが決定した時点で実行される。。。。どういうこと…
一番簡単な方法は、宛先のIPをもとから知っていること
それは当たり前のことだと思うが、意外と重要だったりする。
IPを知ると聞くとなじみがないかもしれないが、ドメインとホスト名と聞けば
なんとなくわかる人もいると思います

##DNS
なるほど、ここでDNSの出番ということである
簡単に説明すると、ヒトは192.168......といった数字の羅列なんてサイトごとに記憶するのは無理なので、ヒト語に変換してwww.tekitou.comといったユニークな名前をやり取りしてくれるサーバーのことです
（前の記事に少し詳しくのっているので見てみてください）

ドメイン名はIPアドレス同様にICANNが管理している

そしてクライアントは名前とIPアドレスの対応DBを持つDNSサーバーに対して問い合わせをして
データを転送したいデバイスのIPアドレスを手に入れるのである

##ARP
話は戻りますが、DNSによって宛先のIPアドレスが決定した時点で実行されます
そこで問い合わせたIPアドレスのホスト、MACアドレスを問うのがARPである

実際の動作は
まず宛先のIPアドレスを取得します
IPアドレスが決定した時点で※ARPテーブル（ARPキャッシュ）を参照します
※IPアドレスとMACアドレスの対応表です
ARPテーブルに宛先IPと宛先MACの対応があれば、その時点で宛先MACアドレスがわかり、
テーブルにIPとMACの対応がない場合、DNSによって取得したIPアドレスをもとに_ARP要求_によってテーブルに反映させる。

##実際のARP要求
・IPアドレス取得
　１、テーブル参照
　２、なければARP要求をブロードキャスト送信する
　３、ARP要求を受け取ったホストは、要求されたIPと自身のIPを比較
　・不一致ならば無視
　・一致ならばARP応答を送信
　４、ARP要求側のホストは、ARPテーブルにMACアドレスを追加

##ARPテーブルのエントリ問題
①ARP要求はブロードキャストなので、スイッチやブリッジではフィルタリングできないのでトラフィックに影響を及ぼしやすい。
→_ブロードキャスト・ストリーム_
・解決策
APRテーブルに静的にエントリを作っておく

②ルータはブロードキャストをフィルタリングするため、ルータ先のネットワークホストに対してARPが届かない
・解決策
デフォルトゲートウェイ（のちに説明します）

##経路選択
ルータはポートがあり、各ポートに別のネットワークが接続していて、それぞれに論理アドレスをもつ

ルータはパケットを受け取って送り出すデバイスなので、ほかのネットワークにデータを転送するとき、ルータを経由するためアドレスが必要となる

またルータは最適なルートを見つけるために、他ネットワークのルートを知る必要がある
どうやってルートを知るのかというと、静的と動的がある

###静的ルーティング
静的ルーティングは管理者が手動でルートを入力
→最も優先される
他のネットワークへの出入り口が一つ

デメリットとして、手動で入力したルートが使えなくなってしまうことが起こる
その場合管理者が手動で書き換える必要がある


###デフォルトルート
宛先ネットワーク（0.0.0.0）
ルーティングテーブルの他の行に当てはまらない時使用する
知らない宛先は知ってそうなルータへ送るというルートが、デフォルトルート、ということ

###動的ルーティング
静的ルーティングによって手動で書き換えると述べたが、毎度手動で書き換えるとなると大変面倒なので
自動化することを動的ルーティングという

ルータは情報を交換し合い、ルートを知る。
そのルートの中から最適なものを選び、ルーティングテーブルを作成する

こちらにもデメリットがある
①お互いにデータを送りあうので_帯域幅_を使用することだ
特に低速な回線を使用している場合には、注意が必要

②交換し合った情報から、最適ルートを計算する必要がある
つまりルータの処理能力が必要

③すべてのルータが同一のルート情報を持つ必要がある
ルータが同一のルート情報を持っている状態の事を_コンバージェンス_というが、ネットワークはコンバージェンスになっている必要がある

しかし動的ルーティングによって_自動で障害を切り離せる_
この動的ルーティングは、ルーティングプロトコルというプロトコルにより、実現される

##ルーティングテーブル
1. ルータがホストから、パケットを受け取る。
2. パケットの宛先IPアドレスとサブネットマスクから宛先ネットワークアドレスを決定する
3. ルーティングテーブルを参照し、宛先ネットワークまでのルートを決定する。
4. 決定されたルートに従って、決められたポートからパケットを送信する。

##ルータの役割
ルーティング以外にも、_ブロードキャストを他ネットワークに送り出さない_という役割がある
ルータがないとブロードキャストがインターネットすべてに伝わるので回線がパンクしてしまう

ブロードキャストが届く範囲のことを、ブロードキャストドメインというが、ルータはブロードキャストドメインを分けることができる

衝突ドメインはブリッジ・スイッチが区分けし、ブロードキャストドメインはルータが区分けする

それでは先ほど説明したARP要求がルータによって制御されてしまい
異なるネットワークにデータを転送できないのではないだろうか
その問題を解決するのが
_デフォルトゲートウェイ_
→他ネットワークとの接続点に位置するデバイスのこと

他のネットワークへデータ転送を希望するホストは、一度デフォルトゲートウェイにデータを送り、他ネットワークへ転送してもらう
→デフォルトゲートウェイは主にルータがその役割を果たす

デフォルトゲートウェイにARPを送信し、デフォルトゲートウェイのMACアドレスを宛先MACアドレスにする。

##ルーティング
ネットワークとネットワークを繋ぐルートを探し、最適ルートを探し出して、パケットを運ぶ

##ルーティングプロトコル
何か障害が発生した際、迂回路を作るなどの_冗長性を維持するため_、動的ルーティングを使うことが多い。特に大規模ネットワークでは必須

ルーティングプロトコルとは_近接ルータ間とネットワークの情報を交換しあう_ことである
そして、交換した情報をもとにしてルーティングテーブルを変更する

###ルーティング対象プロトコル
ルートを決定する際の情報を持つプロトコルのことである
つまり_論理アドレスを提供し、実際にデータを転送するプロトコル_のこと
IP、IPXなどがこれにあたる

###自律システム
１つの管理団体によって管理されるネットワークの集合体のこと
？

インターネットでは、あまりに多くのネットワークが存在する
なので、インターネットでは同じ組織が管理する複数のネットワークをASとしてまとめてしまう。
１つ１つのネットワークに対しルートを決定するのではなく、まずASに対しルートを設定する
さらに、AS内部でどのネットワークか判断をし、ルートを設定する　

ルーティングするために、ASに番号をつけている。
これはもちろん、世界中でユニークな番号である（ICANN）
※日本の場合はJPNIC

###二種類のルーティングプロトコル
_AS間のルーティング用（EGP）とAS内部のルーティング用（IGP）_の２種類

これら二つは一般名詞であり実際のプロトコルは以下の表である


|	||
|---|---|---|
|IGP|OSPF|
|	|IGRP|
|	|RIP	
| |EIGRP
|EGP	|BGP|
||EGP

IGP種類の多さはそれぞれの弱点をカバーしているためである
EGPでは、AS間のルーティングでは、BGPがスタンダードである

話しは変わるが
EGPとIGPという種類があるルーティングプロトコルであるがルーティングの仕方によって三種類に分けることができる

_ディスタンスベクタ型_、_リンクステート型_、_拡張ディスタンスベクタ型_の三つ


|	||
|---|---|---|
|ディスタンスベクタ|RIP|
||IGRP|
|リンクステート	|OSPF	
|拡張ディスタンスベクタ |EIGRP


##RIP
ディスタンスベクタ型と呼ばれるルーティングプロトコルで距離と方向型と直訳するとなる

宛先ネットワークの「距離と方向」の情報を交換するシステムのため、この名前がついている


###ルーティングアップデート
交換する情報のことをルーティングアップデートという
この情報交換で、どのような情報を交換するかというと、ルーティングテーブルをそのまま交換しあうのである
更新頻度は30秒に一回送る
しかし６回受け取らなかったら、そのルータは何らかの障害が発生したとみなすので、この場合、そのルータを使うルートを消してしまう



###ルーティングループ
ディスタンスベクタには致命的な欠点がある。
それは、_ルーティングループ_と呼ばれる欠点だ。
（IPネットワークなどの転送経路上に生じた循環経路で、パケットが一度通過したルータが経路上にもう一度出現し、宛先に届かずにぐるぐると回ってしまう経路のこと）
これはルートの変更情報がすぐに伝わらないことに原因がある
これを_コンバージェンスが遅い_という


###スプリットホライズン
上記の解決策に
ルートを教えてもらったルータには、そのルートよりよいルート以外は教えない。
よりよい近道なら教えるが、それ以外は教えない、という方法

###ホールドダウンタイマ
ルートの変更情報がすぐに伝わらないのなら、全員に伝わるまで待とうという
ホールドダウンタイマと呼ばれる方式
このホールドダウンタイム中に来たアップデートは無視する

RIPはこれらルーティングループの問題や、コンバージェンスの遅さなどの欠点があるので、どちらかというと小中規模のネットワーク向けである


##ICMP
エラーメッセージなどを転送するプロトコルのことで、_IPヘッダ＋ICMPメッセージ_の形で_カプセル化_される。

##ICMPの種類
ICMPには大きく分けて、２種類のメッセージがある
_Queryメッセージ_と_Errorメッセージ_だ

###Queryは状態を調査するために使用されるメッセージ
###Errorはそのままエラーを通知するためのメッセージ


|code|	説明|	意味|
|---|---|---|
|0	|Net Unreachable	|ネットワークへ到達不能
|1	|Host Unreachable	|ホストへ到達不能
|2	|Protocol Unreachable	|そのプロトコルは使用できない
|3	|Port Unreachable	|対象ポートが閉じている
|4	|Fragmentation Needed and DF was Set	|パケットサイズが大きいため分割したいが、分割が不可になっている
|5	|Source Route Failed	|ソースルートが不明。
|6	|Destination Network Unknown	|宛先ネットワークが不明
|7	|Destination Host Unknown	|宛先ホストが不明
|8	|Source Host Isolated	|宛先ホストがネットークから分離されている
|9	|Communication with Destination Network is Administratively Prohibited	|宛先ネットワークとの送信が禁止中
|10	|Communication with Destination Host is Administratively Prohibited	|宛先ホストとの送信が禁止中
|11	|Destination Network Unreachable for Type of Service	|指定したサービスタイプでは宛先ネットワークへ到達不能
|12	|Destination Host Unreachable for Type of Service	|指定したサービスタイプでは宛先ホストへ到達不能