ARPの仕組みと重要性について考えてみる

ARPの仕組みと重要性について考えてみる

TCP/IPをおさらいしよう

ARPを説明する前にTCP/IPについて復習してみたい。

TCP/IPという名称はその名の通り、TCP(Transmission Control Protocol)とIP(Internet Protocol)を合わせたものです。ただ、実際には

信頼性のある通信を実現するTCPとインターネット通信で相手を特定するためのIPアドレスに基づいてパケットをあて先ネットワークに送るためのIP

という風に個別で捉えることは少なく、一般的にTCP/IPといえばネットワークを支える重要な技術というニュアンスで使われることが多いです。
中身を覗くとTCPとIPの他にUDPやICMP、FTP、HTTPなど色々ありますから、その点でもお分かりいただけるかと思います。

TCP/IPを語る上で重要なモデルがあります。「OSI参照モデル」です。

「OSI参照モデル」とは国際標準機構(ISO)によって定められた7層から構成されるモデルのことです。
1~7層まであり、番号が大きくなるにつれてソフトウェア、アプリケーション的になります。
逆に番号が小さくなるにつれて電気的なデータに近づいていきます。(物理的といいます)

7

アプリケーション層 ソフトウェアがあつかう通信サービス層、ファイル、メールの転送などを提供。HTTPやFTP等の通信サービスなどが含まれる。

6

プレゼンテーション層 データの表現方法、圧縮方式、文字コードなどの定義を管理する。

5

セッション層 通信プログラム間の通信の開始から終了までのセッションを管理する。

4

トランスポート層 エラー訂正、再送制御などTCPの機能などはここに位置する。

3

ネットワーク層 ネットワーク上の通信経路の選択、つまり一般的なルーティングはこの層でおこなわれる、ルータなどはこの階層での仕事が主になる。

2

データリンク層 接続されている通信機器間の信号のやりとり、受け渡しなど、一般的なスイッチングハブなどはこの層を扱うことが可能となっている。

1

物理層  物理的な接続、電気的であったり、その形状など、基本的な通信機器の物理的なものを内包する。

 

この7層はネットワークの世界では当たり前に覚えているものです。
この範囲はcisco社が提供する資格CCNAの範囲にもなっているのでぜひとも覚えてください。
よくある覚え方はそれぞれ頭文字を取って、

「アプセトネデブ」

となります。
ちなみにこういう暗記物に関して自己流の覚え方がありますので紹介します。

字面からみてそれぞれ雰囲気を感じ取ってみてください。

アプセトネデブ

アプセトネデブ

アプセトネデブ

どうですか?何か感じ取れましたか?
私は最後のデブが気になってしょうがないです。
OSI参照モデルは階層が下がるごとに物理的になるのでした。
とすれば、最後のデブって強そうじゃないですか?(大変失礼ですがご了承ください・・・。)

逆にアプセトはどうでしょう。
字面が軽そうに私は感じます。
なのでより身軽なアプリケーション寄りだ!と覚えられるわけです。

余談ですが、DTEとDCEってありますよね。これも自己流の覚え方があります。
字面から、私の感性だとDTEは堅そう、DCEは柔らかそうと感じます。

DTEは堅そう・・・狭い範囲のクライアント側だ
DCEは柔らかそう・・・モヤモヤしたWAN側だ

と無理やりこじつけて覚えてます(笑)

話を戻すと、このOSI参照モデルを元により実践向けのTCP/IPの考え方が出来上がったのです。

カプセル化

AさんからBさんへデータを送信するとき、送信側ではそのままデータを送っているのではなく、レイヤ7から順番に処理を行っています。
その際、階層が下がるに伴いヘッダが付与されていきます。これをカプセル化といいます。

最終的には各ヘッダを格納したデータは電気信号となって宛先に送られます。
一方、受信側は送信側の逆の手順でヘッダを外していきます。

 

これを非カプセル化といいます。

着目されがちなIPに加えて重要なARP

前菜は終わりです。本題のARPに入りましょう。
通信の世界では二つのアドレスが存在します。
IPアドレスとMACアドレスです。

これらを二つの世界に分けましょう。

IPの世界:IPアドレス
イーサネットの世界:MACアドレス

さらにOSI参照モデルと照らし合わせれば

IPアドレス:L3
MACアドレス:L2

となります。
ここで先ほどと同様にAさんからBさんへデータを送ってみます。
何でもいいのですが、何らかのアプリケーションを使用して(L7)、AさんがBさんへデータを送るとまずIP(L3)が処理します。
IPの役割は通信の経路を考えることで、どのアドレスに送ればよいかを調べてくれます。

通信したい宛先のIPアドレスが決まればIPが動くので宛先IPアドレスは分かっています。

ここで困ることがあります。
カプセル化の話を思い出してみましょう。
データを送信するとき、データはL7から順番にヘッダを格納しているのでした。
ここまででL3までの処理は終わっています。
次のL2ヘッダ、つまりBさんのMACアドレスを知るにはどうしたらよいでしょうか?

ここで登場するのがARPというプロトコルなのです。
ARPは宛先MACアドレスを調査してくれるものです。

IPはARPに対して、x.x.x.xというアドレスの機器が持つMACアドレスを教えてくれ!と指示をします。
ARPにはARPリクエストとARPリプライという2種類のパケットが存在し、これらのパケットを利用して宛先MACアドレス情報を取得します。

x.x.x.xアドレスの情報を持ったARPリクエストをブロードキャストし、中身を探索しているIPアドレスが自分(x.x.x.x)と分かったら今度はMACアドレス情報を格納したARPリプライをユニキャストします。

これでAさんはBさんのMACアドレスを知ることができるのです。
その後は各ヘッダを格納したデータが電気信号となり、非カプセル化を通じてBさんにデータが送られるというわけです。

※補足
実際にカプセル化する際はOSI参照モデル(7層)ではなくTCP/IP(4層)に基づいてカプセル化されます。
あくまでOSI参照モデルは概念です。
詳しくはリンク先を参照してください。
3分間ネットワーキング:http://www5e.biglobe.ne.jp/aji/3min/37.html

 

最後に

なぜARPを取り上げたかというと、ネットワークのスペシャリスト3名の方と対面できた機会がありまして、そこでARPについて質問されたことがきっかけです。

「ARPって何に使うか教えて」

そう聞かれた私は

「ARPは相手のMACアドレスを知りたいときに使うプロトコルです」

と答えました。そこで、具体的にどういう機会に使われるかと質問されて悩んでしまいました。
自分なりの解答はこれです。

「MACアドレスを知りたいわけなのでスイッチなどでMACアドレスフィルタを掛けるときに使用するのでしょうか。。。」

と。
どうなんでしょう、この回答が正答なのかわかりません(笑)

ちなみに解答はこの記事に書いてある通りカプセル化を経たデータ通信に必要不可欠なものだと教えていただきました。
私のネットワークの知識はCCNAレベルですが、ARPについて学んだにもかかわらず本質を理解できてなかったのだと痛感しました。
確かに、言われてみればARPが重要なのも頷けます。

ネットワークといえばIPでしょ!
と考えていた私にとって一石を投じるやりとりでした。

やはりネットワークの世界は面白いものです。
なんでネットワークとは程遠い案件をやっているんだろう・・・(笑)
実務経験がないのが悔しいです。

いやー、奥が深いね!

ネットワークカテゴリの最新記事

%d人のブロガーが「いいね」をつけました。
TOP