通信経路選択と通信手順

■ルーター

ルーターはネットワークの橋渡しを行うなどの役割を
もっていますので、その役割を紹介したいと思います。

①.ネットワークの橋渡し
	ルーターは自分たちが所属しているネットワークから
	別のネットワークへの橋渡しを行っています。
	LANからインターネットにつなぐ場合、
	ネットワーク間の出入り口(ゲートウェイ)になっているので
	必ずルーターを介して接続が行われます。
	
	network_0029
	
②.伝送経路の選択
	ルーターはインターネット側にデータを送り出す際に
	送信先への伝送経路を決めます。
	これをルーティングと呼び、目的地への適切なルートを記した
	ルーティングテーブルを利用しています。
	ここにはあて先までの距離や次に中継するルーターのアドレスなどが
	記録されています。
	ルーターはパケットに記載されたあて先IPアドレスと
	ルーティングテーブルを比較し、適切な経路を見つけたら
	次の中継点へデータを転送します。
		
	network_0030

③.伝送媒体のコンバート
	ユーザーは様々な通信手段を用いてインターネットにアクセスしますが
	ルーターは回線の違いを吸収して、同一の環境を提供します。

	network_0031

■ルーティングテーブル

ルーティングテーブルは宛先への適切なルートを記載したデータで
経路選択(ルーティング)を行うために欠かせない情報です。
	
network_0032

テーブルの作成は静的(スタティック)ルーティング動的(ダイナミック)ルーティングによって行われます。
	
●静的ルーティングの特徴
	・全ての経路を自分で決める
	・管理者がルーティングテーブルを入力する必要がある
	・手動なので臨機応変に対応することが難しい
	・ネットワーク障害が起こった際に対応が遅れやすい
	・経路が少なかったり、決まっている場合に使用される
	・経路が固定しているのでルータへの負担が低い
		
	まとめ
		全ての伝送経路を自分で設定しなくていけないので
		すごい手間がかかるがルータへの負荷は低い

●動的ルーティングの特徴
	・全ての経路をルーターが決める
	・ルーターが自動でルーティングテーブルを作成、編集する
	・隣接するルーターと経路情報を随時交換し、
	 情報の変更に臨機応変に対応する
	・ネットワークで障害が起こっても素早く別の経路に変更できる
	・大規模なネットワークでは必要不可欠
	・情報交換が定期的に行われるので通信負荷がかかる
	
	まとめ
		ルーター任せなので管理の負荷が少ないが
		情報交換を頻繁するので通信の負荷がかかる

■動的ルーティングのルーティングプロトコル

動的ルーティングでの情報交換やルーティングテーブルの作成は
ルーティングプロトコルにより作成されています。
	
	ルーティングプロトコル:
		ルーター同士がネットワーク上で経路を選択するための
		情報のやり取りを行う通信プロトコルのこと

このルーティングプロトコルはAS(Autonomous System:自律システム)と
呼ばれるネットワークグループ内部で使用されるものと
AS同士のやり取りで使用されるものの2つがあります。

●AS(Autonomous System:自律システム)
	ASはルーティングの効率化をはかるためにグループ化された
	ネットワークの集合です。
	グループは地域や組織ではなくYahooBBやOCNなどのプロバイダ単位で
	作成されており、AS間で経路情報の交換を行うことにより、
	インターネット上で効率的な経路制御を実現します。
	また、ASにはAS番号というものが設定されており、
	AS番号はICANN(日本はJPNIC)から割り当てられています。
	ルーティングプロトコルはAS間のルーティングプロトコルの
	EGP(Exterior Gateway Protcol)とAS内のルーティングプロトコルの
	IGP(Interior Gateway Protcol)に大別できます。
	
	network_0033


●ルーティングプロトコルで使用する単語
	ルーティングプロトコルの説明をする上で使用する単語の
	説明を行いたいと思います。

	・ポップ数
		送信先へ届くまでに経由するルーターの数で
		送信先のルータも数に含める
		自身のネットワーク内に送信する場合は0

	・帯域幅
		回線の通信速度

	・メトリック
		ポップ数や帯域幅、回線の混雑状況や
		回線のエラー発生率などの経路判断基準のこと

●ルーティングプロトコルの種類
	ルーティングプロトコルはEGPとIGPに大別できますが、
	最適な経路をどの観点から導き出すかでいくつかのタイプに
	分類することも可能です。

	・ディスタンスベクタ型
		宛先までのポップ数で最適な経路を決める

	・リンクステート型
		所属するAS内のネットワーク構成を把握したデータベースを持ち
		これを元にして最短経路を計算して適切なルートを決める

	・ハイブリット型
		ディスタンスベクタとリンクステートの
		長所を取り入れたプロトコル

	network_0034
	
	上の図ではディスタンスベクタによる経路選択を行っており、
	ルートAはポップ数(送信先までの距離)が4、
	ルートBはポップ数(送信先までの距離)が3です。
	ディスタンスベクタはポップ数を経路選択の
	メトリック(基準)とする経路選択方法なので、
	ポップ数の少ないルートBが伝送経路として決定します。

■ICMP

ここからはデータの伝送手順の話になります。
ICMP(Internet Control Message Protcol:アイシーエムピー)とは
通信中に発生したエラー通知や動作確認などを行う際に
利用するプロトコルです。
メッセージにはエラー内容を通知するエラーメッセージと
ネットワークの状態の調査を要求するクエリメッセージがあります。
	
network_0036

●ICMPのタイプ
	ICMPには11種類のタイプがあり、タイプごとに
	エラー内容や要求内容が異なります。
		
	network_0035

●ping(ピング)
	pingはICMPのエコーメッセージを利用した機能のことで、
	データを送信したい相手のコンピュータがネットワークに
	つながっているかどうかを確認する際に使用されます。

	・pingの流れ
		まず、宛先に対してエコー要求(type:11)を送信し、
		宛先のコンピュータがネットワークに接続されていれば
		エコー応答(type:0)を返してきます。

		これによって相手がインターネットに接続されているかどうか
		確認できます。
		また、要求から応答までの時間を計ることで
		回線の混雑状況を知ることもできます。

	network_0037

	・pingの使用方法
		コマンドプロンプトを開き、ping URLで実行可能です。


■3ウェイハンドシェイク

3ウェイハンドシェイクの説明の前にTCPの説明をしておきたいと思います。
	
●TCP
	TCP(Transmission Control Protcol)とは
	インターネットでデータを確実に宛先へ届けるために
	使用するプロトコルのことです。
	
●3ウェイハンドシェイク
	TCPを使ったデータのやり取りは、事前に送信先に
	「これから通信を行う」という確認を行って
	通信可能な状況を作り出します。
	確実にデータを届けるために事前の段階から準備を行います。
	この「これから通信を行う」という事前確認を3度のやり取りで
	行うことから3ウェイハンドシェイク(3方向の握手)と呼ばれています。
	
●事前確認の流れ
	1.送信元 => 宛先
		SYNという通信許可を求める情報を送る

	2.宛先 => 送信元
		通信を許可するACKという情報と
		送信元への通信許可を求めるSYNを送信

	3.送信元 => 宛先
		宛先へACKを送る
	
	network_0038

■確認応答

確認応答とはTCPでデータをパケット送信した際に
データが届いたことを送信先が送信元へ伝えるメッセージのことです。
パケットデータにはシーケンス番号とデータのサイズが設定されています。
確認応答ではACK番号を設定して送信側へ送ります。
	
	シーケンス番号:
		パケットに分割されたデータの先頭のバイト番号
		(データ全体の何番目にあたるのかを示す数値)

	ACK番号:
		次に送ってほしいデータの先頭バイトの先頭番号
	
	network_0039

●応答確認が来なかったら
	応答確認が受信側に届かなかった場合、通信中にエラーが
	発生した可能性が高いので、送信側は一定時間待って、
	再度パケットデータを送信します。
	もし、再送したパケットデータ重複していたり、
	シーケンス番号がずれていた場合は確認応答で
	送ってほしいACK番号を設定して送信します。

■TCPとUDP

データ送信のプロトコルはTCPの他にUDPと呼ばれるものがあります。
UDP(User Datagram Protcol)とはデータの正確性よりも
即時性(リアルタイム性)を重視した通信になります。

	●TCPの特徴
		・データの正確性が高い
		・応答確認を待つ必要があったりするので
		 伝送に時間がかかる
		・メールなどの正確性を重視した通信に適している

	●UDPの特徴
		・データの正確性が低い
		・応答確認を行わないので伝送速度は速い
		・IP電話やライブ映像などの通信に適している

	network_0040