〔図6〕イーサネットアドレスとIPアドレスの関係
- TCP/IPをイーサネットを使って伝送する
- IPパケットをイーサネットを使って伝送するということは,イーサネットドライバから見て,TCP/IPソフトウェアがアプリケーションになります.TCP/IPソフトウェアとイーサネットの関係は,図6にようになります.
先ほどの「コンピュータA」というコンピュータの名前はIPアドレスに,アプリケーションのメッセージがIPパケットに対応します.つまりイーサネットは,IPパケットをイーサネットのメッセージとして,伝送することになります.ARPテーブルのコンピュータ名という列もIPアドレスになります.
先ほどは,ARPテーブルが完成しているという前提で話を進めました.しかしコンピュータが起動した直後では,ARPテーブルには情報は書いてありません.上位層からの要求に応じて,動的に作っていきます.
では,どのようにしてIPパケットが伝送されるのか,ARPテーブルの生成過程も追いながら見ていきましょう.図7はその様子を示しています.
- TCP/IPソフトウェアが,送信したいIPパケットと送り先IPアドレス 10.0.0.3 を指定して,イーサネットドライバを呼び出します.
- イーサネットドライバは,指定された送り先IPアドレス 10.0.0.3 を持つイーサネットインターフェースのイーサネットアドレスを調べます.ARPテーブルの中に情報がある場合は,そのアドレスを使い,イーサネットパケットを構成し,イーサネットに送信します.この過程は,前節の説明のとおりです.
- もしARPテーブルに指定された送り先IPアドレスに関する情報がない場合は,
「IPアドレス 10.0.0.3 に対応するイーサネットアドレスはいくつですか?」という質問パケットをイーサネットに送信します.このパケットをARP要求パケットと言います.
- 10.0.0.3というIPアドレスを割り振られているイーサネットドライバは,ARP要求パケットに答えます.「イーサネットアドレス 0:0:0:0:0:3 というイーサネットインターフェースが 10.0.0.3 というIPアドレスを持っています」という応答パケットをイーサネットに送信します.
- ARP要求パケットを送信したコンピュータは,応答パケットを受信します.応答パケットの中には,IPアドレスとそれに対応するイーサネットアドレスが書かれているので,この情報をARPテーブルに登録します.
ARP要求/応答パケットも,イーサネットを使って伝送されるため,イーサネットのパケットの形式でやりとりされます.ですから,パケットの中には,送り元イーサネットアドレス,送り先イーサネットアドレスが含まれていますので,だれからだれへ送られたパケットがわかります.
- ARPテーブルに送信先のIPアドレスとイーサネットアドレスの対応があるので,この情報を元にして,イーサネットパケットを構成し,イーサネットに送信します.
このようにして,イーサネットドライバはTCP/IPパケットを伝送します.それぞれのプロトコルには,通信の相手を特定する方法,つまり「アドレス」の定義がそれぞれあります.
今回は,IPプロトコルで定義されるIPアドレス,イーサネットプロトコルで定義されるイーサネットアドレスが出てきました.これら2つのプロトコルでアドレスの定義が異なりますので,あるコンピュータを指し示すとき,IPプロトコルでの表現と,イーサネットプロトコルでの表現が異なります.
例えば,図7のコンピュータAのイーサネットインターフェースは,IPソフトウェア内では10.0.0.1と表現されますが,イーサネットソフトウェア内では0:0:0:0:0:1 と表現されることになります.
このように同じ実体に対して表現が異なりますので,IPソフトウェアとイーサネットがうまく動くためには,アドレスの変換をする必要があります.この変換を行うのが,ARPテーブルの役割となり,ARPテーブルを人手ではなく,自動的に作るためにARP要求/返答パケットというのがあるのです.
〔図7〕IPパケットの伝送のようす
|