本編 Routing System

Ethernet

 物理ネットワークの一例としてイーサネットについて説明する。特に、イーサネットアドレスをIPアドレスに変換する手法であるARP(Address Resolution Protocol)、またARPとは逆にイーサネットアドレスからIPアドレスに変換するためのプロトコルRARP(Reverse ARP)について解説する。

Ethernetによるネットワーク接続の基本

 イーサネットは、同軸ケーブルを用いたパケット交換用ネットワーク技術のひとつである。1978年にIEEE802.3として標準化された。
 イーサンネットにコンピュータを接続するには同軸ケーブルにトランシーバを、コンピュータのI/Oバスにはネットワークインタフェースを取り付ける。これらはトランシーバケーブルによって接続される。同軸ケーブル中のアナログ信号は、トランシーバによってディジタル信号に変換され、ネットワークインタフェースへと伝わる。逆に、コンピュータがイーサネットへパケットを伝達するとき、ネットワークインタフェースで作成されたディジタル信号はトランシーバによってアナログ信号に変換され、同軸ケーブルに送出される。
Ethernet Connection
fig. Ethernet

 信号の伝送路である同軸ケーブルは、上の図と同様の構成によって接続され、すべてのホストコンピュータと共有されている。イーサネットでは特別な資源管理装置によっては9板的な同軸ケーブルの利用するのでなく、分散制御によって送受信を実現する。

CSMA/CD(Carrier Sense Multiple Access with Collision Detection)

 送信すべき信号をもつネットワークインタフェースが同軸ケーブル上の信号を監視し、多のネットワークインタフェースから送信されていないことを確認する。すでに他のネットワークインタフェースが同軸ケーブルを使用しているのであれば、それが信号を送信し終えるまで待機する。
 送信が利用されていないことを確認できたら、信号を送信する。ケーブルの監視、待機、信号の送信は、それぞれのネットワークインタフェースが独立して行われるため、複数のインターフェースが同時に信号の送信を開始してしまうことがある。したがって、信号を送信したネットワークインターフェースは、同軸ケーブル上で信号の衝突が発生していないか監視する。衝突が発生した場合、ジャム信号を同軸ケーブルに送信することで、すべてのネットワークインタフェースに受信した信号を破棄させることができる。ネットワークインタフェースは乱数を用いた待機時間だけ経過してから再送信する。


 ひとつのネットワークインタフェースがケーブルを独占するのを防止するために、信号の最大長は1518 bit、2つの信号送信の間には少なくとも9.6 μsの間隔が必要である。  イーサネットはブロードキャストを基本の送信手段とし、ネットワークインタフェースが取捨選択する。このとき、ネットワークインタフェースが受信する信号は、以下の3つである。
  • このネットワークインタフェースを宛先とする信号
  • ブロードキャスト
  • このネットワークインタフェースが宛先のひとつであるマルチキャスト

Ethernet Address

 イーサネットでは、イーサネットアドレスという48 bitの識別子が使用される。イーサネットアドレスはネットワークインタフェースハードウェアに固定されているため、ネットワークインタフェースが接続されたコンピュータをどのイーサネットに接続しても不変である。  2進数で表現された48 bitのイーサネットアドレスは、人間の可読性を高めるために8 bitずつにくぎり、16進数で表現したものを":"で分ける。
eg) 00001000 00000000 00100000 00011001 00101001 10101011 --> 08:00:20:19:29:ab

ブロードキャスト ff:ff:ff:ff:ff:ff

 ff:ff:ff:ff:ff:ffは、ブロードキャストアドレスとして予約されている。イーサネットに接続されたすべてのネットワークインタフェースによって受理される。

マルチキャストアドレス 01:00:5e:xx:xx:xx

 01:00:5e:xx:xx:xxは、マルチキャストアドレスとして予約されている。ネットワークインタフェースには、固有のイーサネットアドレスとは別にマルチキャストアドレスを設定することでこのアドレスが宛先として指定されている信号を受信できる。送信側の視点では、同一のイーサネットに接続し、あるマルチキャストアドレスが設定されたすべてのネットワークインタフェースに対して同時に信号を送信できる。

 イーサネットにで伝送される信号にはイーサネットフレームと呼ばれる情報パケットを単位とする。これには、いくつかフィールドがあり、それぞれのフィールドについて以下で説明する。

イーサネットフレーム

Preamble Destination
Address
Source
Address
Frame Type DATA CRC

ヘッダ ロール
プリアンブル
(64 bit)
0 bitと1 bitの繰り返し。イーサネットフレームの先頭を表す目印。
送信先アドレス
(48 bit)
イーサネットフレームの送信先ネットワークインタフェースに割り当てられたイーサネットアドレスを格納する。
送信元アドレス
(48 bit)
イーサネットフレームの送信元ネットワークインタフェースに割り当てられたイーサネットアドレスを格納する。
フレームタイプ
(16 bit)
上位プロトコルのIDを格納する。このフィールドに格納した値によって、データフィールドをどのプロトコルモジュールへデータを伝達するのかを指定できる。フレームタイプが0800(16進数)であれば、データフィールドの内容はIPデータグラムである。同様に、0806ならばARP、8035ならばRARPのプロトコルモジュールにそれぞれデータグラムの内容を伝達するよう指定している。
データ
(64-1500 bit)
データを格納する。上位プロトコルがIPであるならば、IPデータグラムが格納される。
CRC (Cyclic Redundancy Check)
(32 bit)
エラー検出のためのコードを格納する。受信したネットワークインタフェースがこのフィールドを確認することによって、フレームが伝送中に改ざんされていないか検査することができる。

ARP (Address Resolution Protocol)

 IPアドレスと物理アドレスとの変換をアドレス解決(Address Resolution)と呼ばれるが、アドレス解決を実現するプロトコルのことを指す。

 インターネットで相互通信される情報は、IPデータグラムと呼ばれるパケットに格納される。IPデータグラムの配送にはIP(Internet Protocol)が必要である。IPアドレスを利用するためには、IPデータグラムを送受信する際のネットワークインタフェースに一意のアドレスが与えられてなければならない。これをIPアドレスというが、IPデータグラムには宛先と送信先のIPアドレスが格納されている。これを用いてルータがデータグラムの配送ルートを決定する。
 IPデータグラムは、イーサネット、トークンリング、FDDI、ATMとさまざまな物理ネットワークを介して転送される。物理ネットワークでは、先のイーサネットフレームと同様に、IPデータグラムを物理フレームという情報パケットに格納することで配送を実現する。物理フレームはそれぞれ異なったフォーマットをもつことから、同一の物理フレームを配送できるのは、同一の物理ネットワークに接続したネットワークインタフェース間のみである。


 イーサネットにおけるアドレス解決を実現するARP(RFC 826)について説明する。
 まず、イーサネットアドレスは48 bitの整数であり、ネットワークインタフェースハードウェアに付与された固有の値であるため、不変である。一方、ネットワークインタフェースに与えられたIPアドレスは、接続されるネットワークによって変化する。
 イーサネットにおけるアドレス解決の概要としては、同一の物理ネットワークに接続されたホスト、またはルータへIPデータグラムを送信する度に、送信相手に物理アドレスを問い合わせる方法である。これは、イーサネットがブロードキャストに適したネットワークであることから可能となっている。 ARP
 上の図より、同一のイーサネットに4つのホストが接続されているとする。また、H1からH3にデータを送信することを想定する。H1は自身のイーサネットアドレスE1および自身と送信先のIPアドレスI1とI3を知っている。このとき、送信元のネットワークインタフェースからI2に対応するイーサネットアドレスの問い合わせのためのフレームをブロードキャストする。このフレームはこのイーサネットに接続しているすべてのネットワークインタフェースにて受信されるが、送信先のネットワークインタフェースに割り当てられたIPアドレスがI3でなければ、フレームを破棄する。一方で、IPアドレスがI3とである場合、自身のネットワークインタフェースのイーサネットアドレスE3をH1に通知する。H1から送信される問い合わせのフレームにE3を格納しておくことで、E3の情報をH1に送信することができる。
 以下にARPの手順をまとめる。
  1. 送信元のIPアドレスを格納したARP要求メッセージを作成する。ARP要求メッセージには、応答先(送信元)であるネットワークインタフェースのイーサネットアドレスを含めばならない。送信元は送信先のイーサネットアドレスをff:ff:ff:ff:ff:ffとして、ARP要求メッセージを含んだイーサネットフレームをブロードキャストする。
  2. ブロードキャストされたイーサネットフレームは、すべてのホストで受信されるが、それぞれのホスト内では、受信したイーサネットフレームからARP要求メッセージが取り出される。
  3. ARP要求メッセージに格納されたIPアドレスと自身がもつIPアドレスを参照し、一致しなかったら破棄する。
  4. ARP要求メッセージに格納されたIPアドレスと自身がもつIPアドレスが一致したとき、自身のイーサネットアドレスを格納したARP応答メッセージを作成する。そして作成したイーサネットフレームを応答先(送信元)に送信する。
  5. 応答先のネットワークインタフェースがARP応答メッセージを含んだイーサネットフレームワークを受信し、ARP応答メッセージを取り出す。ARP応答メッセージにはIPアドレスI2に対応したイーサネットアドレスが格納されている。
このようにして、アドレス解決を実現することができる。

ARPメッセージフォーマット

 ARP要求メッセージとそのフォーマットについて解説する。
ar$hrd ar$pro
ar$hln ar$pln ar$op
ar$sha
ar$spa
ar$tha
ar$tpa
 それぞれのフィールドについて説明する。

ar$hrd
(16 bit)
物理ネットワークの種類を表す。イーサネットでは1である。
ar$pro
(16 bit)
物理ネットワークのアドレスに変換されるべき上位プロトコルアドレスの種類を表す。
ar$hln
(8 bit)
物理ネットワークアドレスの長さ(byte)を表す。
ar$pln
(8 bit)
上位プロトコルアドレスの長さ(byte)を表す。
ar$op
(16 bit)
メッセージの機能を表す。ARP requestであれば1、ARP replyであれば2である。
ar$sha このメッセージの送信元ネットワークインタフェースの物理ネットワークアドレスを格納する領域である。ar$hlnバイト長である。
ar$spa このメッセージの送信元ネットワークインタフェースの上位プロトコルアドレスを格納する領域である。ar$plnバイト長である。
ar$tha このメッセージの送信元ネットワークインタフェースの上位プロトコルアドレスを格納する領域である。
ar$tpa このメッセージにの送信先のネットワークインタフェースの上位プロトコルアドレスを格納する領域である。ar$plnバイト長である。