イーサネットに接続したパソコンからIPを使って通信する場合,イーサネット上ではどのように通信が処理されているのか。今回は,コンピュータ通信の基本ともいえるイーサネットとIPの連携のしくみについて見てみよう。

 IPネットワークで通信するとき,相手を指定するのはIPアドレスである。パソコン内のIPスタックは最初に,あて先IPアドレスから,そのあて先が自分と同じサブネットにいるかどうかを判断する。相手がサブネット内にあれば,直接その相手にイーサネットでデータを送る。相手がサブネットになければ,ルーターにデータの中継を依頼する。IPの処理で,データを送るLAN内のあて先がわかるのである。

 あて先が特定できたら,あとはそこにデータを送るだけだ。しかし,イーサネットでデータを送るからには,送信元とあて先のMACアドレスがわからないとダメだ。そこで,LAN内のあて先となるネットワーク機器(通信相手か最寄りのルーター)のMACアドレスを調べる必要が出てくる。

 でも,パソコンのイーサネット機能には,MACアドレスを調べる機能は備わっていない。イーサネット機能は,MACフレームを作成して指定されたMACアドレスあてに送る処理を担当する。

 では,何がMACアドレスを調べる仕事をこなすのか。実は,MACアドレスを調べる仕事は,IPスタックが中心になって処理する。ただし,IPスタックが管理しているアドレスはあくまでもIPアドレスである。MACアドレスは範ちゅう外だ。そこでIPスタックは,ARPというプロトコルを使ってMACアドレスを調べる。つまり,IPスタックは指示を出すだけで,実際にMACアドレスを調べる仕事はARPが担当する。

 IPスタックはARPにMACアドレスの調査を依頼するときに,MACアドレスのヒントとなる情報を教える。それは,LAN内のあて先になる機器のIPアドレスだ。IPスタックはMACアドレスは知らないが,IPアドレスなら知っているからだ。

 するとARPは,この指示通りにMACアドレスを調べる。ARPのしくみは単純だ。ARP要求とARP応答という,たった一往復のやりとりで成り立っている。まず,LAN全体にARP要求と呼ばれるパケットを流す。このARP要求パケットには,調べたい機器のIPアドレスを入れる。つまり,「○○○というIPアドレスを持っている機器がいたらMACアドレスを教えて」というメッセージをLAN内にあるすべての機器に送るのである。

 ARP要求を受け取った機器は,そのARP要求が自分のIPアドレスあてかどうかを判断する。ARP要求のIPアドレスが自分に割り当てられているIPアドレスと一致したら,そのARP要求は自分に向けたものだとわかる。すると,ARP要求を受け取った機器は,ARP要求を出したパソコンに「私がIPアドレス○○○です。私のMACアドレスは×××です」というメッセージを返すのだ。

 これでARPはIPから指示されたMACアドレス情報を得る。そして,その情報をIPに伝える。こうしてあて先のMACアドレスがわかったら,処理をイーサネット機能に引き継ぐ。あて先のMACアドレスを伝え,MACフレームに入れるIPパケットを引き渡すのである。

半沢 智

<日経NETWORK2004年4月号では,わたしたちが日ごろ使っているTCP/IPとイーサネットがパソコン内部でどのように処理されているのかを見ることで,通信の基本的なしくみをやさしく解説した特集記事「TCP,IP,イーサの役割と関係を押さえる」を掲載しています。ぜひ,ご覧ください>