CCNA勉強記

CCNA勉強記

勉強を記録していきたいと思います

Amebaでブログを始めよう!
ARP(Address Resolution Protocol)とは、イーサネットなどのLAN上でTCP/IP通信を行う際に必要なプロトコルです。TCP/IPではIPアドレス、LANではMACアドレスを利用して通信を行いますが、この2つのアドレスはお互いに関連していません。関連
していないIPアドレス、MACアドレスを対応づける役割を持つプロトコルがARPです。
 ARPの役割を具体的に知るために、まずイーサネットのフレームフォーマットについてみておきましょう。


$CCNA勉強記


イーサネットのフレームフォーマットを見ると、送信先、送信元MACアドレスを指定する必要があることがわかりmす。送信元MACアドレスは自分のMACアドレスですから簡単にわかります。しかし、送信先MACアドレスはそういうわけにもいきません。送信先MACアドレスがわからないとイーサネットフレームを作成することができないので、結局通信することができません。この送信先MACアドレスを求める
ためにARPが必要になっってくるわけです。
 なお、IPアドレスからMACアドレスを求めることをアドレス解決(Address Resolution)と呼びます。


ARPの仕組み

ARPは、

・ARPリクエスト
・ARPリプライ

によって、目的のIPアドレスに対応するMACアドレスを求め目ます。

ARPの仕組みについて図を利用しながら見て行きましょう。


コンピュータAからコンピュータDに対して通信したいという場合を考えます。コンピュータAはコンピュータDのIPアドレスはわかっていますが、MACアドレスはわかっていますが、MACアドレスがわかりまあせん。そのため、イーサネットフレームを作成できないので通信できない状態です。

 そこで、コンピュータAはコンピュータDのMACアドレスを求めるためにARPを利用します。Aは、ARPリクエストをブロードキャストで送信します。この場合は、データリンクレベルのブロードキャスト(送信先MACアドレス:FF-FF-FF-FF-FF-FF-FF)です。
 ARPリクエストは「このIPアドレスが設定されているコンピュータはMACアドレスを教えてください」といった内容です。ですから、この場合「IPアドレス192.168.1.4」のコンピュータはMACアドレスを教えて下さい」というリクエストを送ります。
 ARPリクエストはブロードキャストなので、コンピュータB,Cも受信します。しかし、問い合わせているIPアドレスではないので、コンピュータBはCも受信します。しかし、問い合わせれているIPアドレスではないので、コンピュータBやCはARPリプライを返しません。それに対し、コンピュータDはこのリクエストに返事をして、「こちらのMACアドレスはDです」というARPリプライをコンピュータAに返信しますこうしてアドレス解決を行い、イーサネットのフレームを作りネットワーク上に送信することが出来るようになります。
 
 以上のARPの処理は透過的に行われます。コンピュータやルータでARPについて明示的な設定は必要ありません。

また、いったんアドレス解決した情報は一定時間ARPキャッシュに保存されます。CiscoルータやCataLystスイッチでは、show ip arp コマンドでARPキャッシュの内容を確認することができます。Windowsコンピュータではコマンドプロントからarp -a でARPキャッシュの内容を確認することができます。










IP(Internet Protocol)は、TCPIPのさまざまなプロトコルの中で代表的なプロトコルの一つです。OSI参照モデルではネットワーク層に相当します。IPによってあるコンピュータから別のコンピュータへデータを送り届ける事ができ、これをエンド・ツー・エンドの通信として表現します。また、IPによって運ばれるデータをIPパケットと呼びます。
 IPパケットには、IPヘッダ含まれています。エンド・ツー・エンドの通信を行う経路上にはルータが存在します。IPヘッダの情報によりルータが適切なルーティングを行い、エンド・ツー・エンドの通信が可能になります。


ここでは、IPV4ヘッダに含まれる情報についてどのような意味を持っているのかを見て行きましょう。



IPV4ヘッダフォーマット

エンド・ツー・エンドの通信を行うためのIPヘッダについて確認しましょう。IPヘッダフォーマットは下図のように全部で12のフィールドオプションから成り立っています。オプションを含まないIPヘッダ長は20バイトで、オプションが追加された場合でも必ず4バイト単位になるように調整されます。


$CCNA勉強記

バージョン、ヘッダ長

「バージョン」にはそのものずばりのIPのバージョンが入ってきます。現在のIPのバージョンは「4」です。そしてもう一部ではでは使われていますが、IPの次のバージョンは「6」となります。バージョン4の次が5を飛ばして6になっています。


優先順位、データグラム長

「優先順位」では各データの優先順位を決めてあげることができます。優先順位とは、ルータがIPパケットをルーティングしてネットワークに送出するときの優先順位です.これはいわゆるQoS(Quality of Service)と呼ばれる方法です。Qosとは、データごとに優先順位を決めて順番が変わってしまったりすると音声品質が悪くなります。そのようなデータは優先的に転送します。ですが、ファイル転送などは特にデータが遅れてもそれほど影響はしません。そのようなデータは後から送るという制御を行うために使います。
 「データグラム長」ではヘッダを含めたIPパケット全体の長さが入ってきます。生データの長さを知りたいときには、(データグラム長ーヘッダ長)でわかります。

識別番号、フラグ、フラグメントオフセット
 次の3つの情報である「識別番号」「フラグ」「フラグメントオフセット」はデータの分割と組み立てに関わってくる情報です。
 では、データの分割、組み立てはどういうときに行われるのでしょうか?
 例えば、イーサネットでは1つのフレームで最大1,500バイトのデータを送ることができます。この最大値のことをMTU(Maximum Transmission Unit)と読んでいます。MTUサイズを超えてしまうとデータを送るときには分割して、複数のフレームにしなくてはいけないということになります。データが2,000バイトあるときを考えてみます。すると2つのフレームに分割してこの2000バイトを転送することになります。ただ、ここで注意することはイーサネットから考えるとIPヘッダもデータになることです。



分割されたデータのIPヘッダ無いの「識別番号」にはすべて同じ値が入ります。「識別番号」が同じということはもともと1つのデータであるということを表しています。そして、「フラグ」には分割されたデータが最後のデータなのという情報が入ってきます。
 後組み立てるときに必要なことを考えると、分割されたデータはもともとのデータのどの位置にあったものかということです。その上方が「フラグメントオフセット」です。このようにデータが分割されて送られても、受け取ったコンピュータでこの3つの情報から元データに復元することができる仕組みになっています。

なお、ほとんどのアプリケーションの通信はMTUサイズの制限から複数に分割されて送信されるようになります。一つの通信を構成する連続したデータ(パケット)のまとまりのことを「アプリケーションフロー」あるいは単純に「フロー」と呼びます。



TTL

「TTL」とpはTime To Liveの略でパケットの生存時間を表しています。時間といっていますが、実際には「パケットが何台のルータを経由することが出来るか?」ということを表しています・TTLは、ルータのルーティングテーブルに不整合があり、IPパケットがネットワーク内を延々とループしてしまうことを防ぐためのものです。



プロトコル番号

「プロトコル番号」とは上位のプロトコルが何かを識別するための番号です。IPの上位層のトランスポート層にはTCPとUDPの2つのプロトコルがありますが、そのどちらにデータを渡せばいいのかということをプロトコル番号で識別します。また、インターネット層に踏まれるICMPやOSPF,IGRP、EIGRPといったプロトコルも、IPヘッダ内のプロトコル番号で識別されます。



ヘッダチェックサム
IPヘッダにエラーがないかどうかをチェックするためのフィールドです。IPパケット全体ではなくIPヘッダのみになっていることにはもちろん理由があります。この理由は、上位のUDPやTCPでIPパケットのデータ部分のエラーチェックが行われているからです。

送信元IPアドレス、送信先IPアドレス
 送信元と送信先IPアドレスが入ります。送信元IPアドレスは必ずユニキャストアドレスになります。ブロードキャストアドレスやマルチキャストアドレスが送信元IPアドレスフィールドに入ることはありません。

オプション
 オプションフィールドによって明示的にどの経路を通るのかを指定することです。これをソースルーティングと呼んでいます。ただし、セキュリティ上インターネット上のルータではソールルーティングをしているパケットは捨てられてしまう可能性があります。また、他に経路上のタイムスタンプを取得するなどの使い方があります。
 オプションはIPの事件を行うために様々な用途で利用されていましたが、現在ではあまり使うことはありません。

データリンク層では、隣接ノード間でのデータ通信にかかわる機能が定義されています。
データリンク層では、隣接ノード間での通信を実現するためn、以下の規定がされています。


・ハードウェアアドレス
・フレームのフォーマット・作成
・フロー制御
・エラー制御
・同期

上記で、「隣接ノード間」とありますが、隣接ノードとは1つの回線に接続されたノードのことです。例えば、図1-16であれば、1つの回線に接続されるノードAとノードBが隣接ノードになります。


隣接ノード間で通信を実現するためには、通信相手を識別するアドレス情報が必要です。データリンク層で隣接ノードを識別するために仕様されるアドレスが、ハードウェアアドレスです。ハードウェアアドレスは、物理アドレスと呼ばれることもあります。

 ハードウェアアドレスまたは物理阿蘇レスは、レイヤ2で使用されるアドレスの総称として使用される用語です。

 データリンク層で扱うデータのことをフレームと呼びますが、このハードウェアアドレスは、フレームのヘッダに含まれます。


LANではMACアドレスを使用します。


 データリンク層では、1つの伝送媒体に接続されたノード間でのデータ転送にかかわる定義がされています。
 そのためデータリンク層では、異なる回線を介したネットワークへの通信は出来ません。
異なる回線を介したネットワークについては、第3層・ネットワーク層で定義されています。


-----------------------------------------------------

MACアドレス重要

フレームという単位も重要
物理層では、以下の機能が定義されています。

・コンピュータ内部で扱っている「0」と「1」の情報(ビット列)を信号に変換したネットワーク上に転送する機能

・ネットワーク上から受信した信号を「0」と「1」の情報(ビット列)に変換しコンピュータの内部に取り込む機能

・電気的な条件
  ⇛信号として扱う電流・電圧など
・機会的な条件
  ⇛ケーブルやハブの仕様など
・論理的な情景ん
  ⇛仕様するケーブルのピンアサインなど


このように物理層ではビット列と信号の変換のみを行うため、ヘッダやFCS情報は一切チェックしません。


ーーーーーーーーーーーーーーーーーー


実はものすごく難しい物理層


OSI参照モデルも復讐しておこう





OSIのデータ通信において、送信側デバイスの処理は以下の通りです。

・送信元デバイスは上位の階層第7層から、順に下位の階層に向けて処理していく
・各階層では、その階層で定義されている内容を処理し、処理した内容をヘッダとしてデータの前に付加した後、下位の階層にデータを渡し、それ以降のすべての処理を下位の階層にまかせる
 

  ⇛ヘッダとは、そこで使用されたプロトコルの機能を実現するための重要な制御情報です。
$CCNA勉強記


・下位の階層では、上位のヘッダとデータの合計をデータとして受け取り、上位の階層と同様に、その階層で定義されている内容を処理し、処理した内容をヘッダとしてデータの前に付加した後、下位の階層にデータを渡し、それ以降の全ての処理を下位の階層に任せる



$CCNA勉強記


・上位の階層から順にネットワーク層までの処理が終わると、データリンク層ではヘッダに加えて、トレーラも付加される

トレーラとは、データリンク層で扱うデータ全体のエラーチェックのために使用される制御情報です。送信元デバイスで、ある計算式に基づいて算出された結果の値をFCSniいれます。トレーラは、データリンク層のみで付加されます。


・物理層では、ヘッダやトレーラなどが付加されることはなく、データリンク層から受け取ったデータ(情報)を、送信先のネットワークに応じた信号に変えて、ネットワークに送信する


また、受信側デバイスの処理は以下の通りです。

・受信側デバイスは、下位の階層(第一層・物理層)から、順に上位の階層に向けて処理していく

・データリンク層では、送信側デバイスがその階層で付加したFCSを確認しエラーチェックを行い、そののちヘッダを確認し、ヘッダを取り外して上位のネットワーク層にデータを渡す



・データリンク層以上の階層で付加されているヘッダから、送信側デバイスで処理した内容を確認し、その内容に応じた処理を行った上で制御情報を取り外して、上位の階層に渡す

・受信側でデバイスで7階層すべての処理が完了すると、受信側デバイスは送信側デバイが送信したデータを受け取ることが出来る。
データリンク層で扱うデータの単位を、フレームと呼びます。
ネットワーク層で扱うデータの単位を、パケットと呼びます。
厳密な使い分けがされていないこともよくありますが、フレームやパケットといった擁護で意図する階層が違ってきますので、区別して覚えてください。

 また、ヘッダやトレーラを付加することをカプセル化。ヘッダやトレーラを取り外すことを逆カプセル化非カプセル化)といいます。通信において送信側デバイスでカプセル化し、受信側デバイスでは逆カプセル化します。


ーーーーーーーーーーーーーーーーーーー


ちょくちょく解らない用語が出てきますね

カプセル化ってそういう意味だったんだ。

オブジェクト指向だとまた違う意味で使われているよね