発表手順
Address Resolution Protocol(ARP)

No.2

１．背景
２．ARP の概要

RFC:826

２．具体例
３．実装（BSD/OS arpコマンド）

情報工学専攻 修士課程１年
川崎 信介

No.3

背景

ARP ： Address Resolution Protocol

ネットワーク層は、それぞれの Protocol を持つ•CHAOS Protocol (16bit)•DOD TCP (32bit)•Xerox BSP (8bit)

ARPとは

No.4

10Mbit Ethernet (42bit)は、これらの共存を許す

Network Protocol Address を 48bit の Ethernet Address へ変換するための Protocol
DEC/Intel/Xerox 社製の 10Mbit Ethernet 用に設計

<Protocol, Address> と 10Mbit Ethernet Address の対応を動的に構築する必要がある

次第に一般化

議論の多くは、10Mbit Ethernet 向け

No.5

Packet の定義(1)<Protocol, Address> と 10Mbit Ethernet Address の対応をPacket 内に定義

Ethernet packet data

senderdestaddr
48

sender prot hard prot hard prot
opaddr type addr addr size size
16848
16 168 16

Ethernet transmission
layer

hardaddr
48

prot
addr
32

Packet の定義(2)No.6

targethardaddr48

Ethernet packet data

Ethernet transmission layer
dest addr : 送信先の Ethernet Address
sender addr : 送信元の Ethernet Address
prot type : Protocol の種類（Xerox Pup , DOD Internet , CHAOS 等）

protaddr
32

hard addr : Hardware Address (Ethernet の場合は1)prot addr : Protocol Address
hard size : Hardware Address のサイズ
prot addr : Protocol Address のサイズ
op : 要求 or 応答
hard addr (sender) : Packet の送信元の Hardware Address
prot addr (sender) : Packet の送信元の Protocol Address
hard addr (target) : Packet の送信先の Hardware Address
prot addr (target) : Packet の送信先の Protocol Address

1

No.7

Packet の生成

下位層(ハードウェアドライバ）
は、<Protocol Type , Target Protocol
Address> のペアを 48bit の Ethernet Address に変換
Address Resorution Module (Ethernet Support Module)を調査(1)ペアが見つかった場合

48bit Ethernet Address を呼出側(ハードウェアドライバ)へと送り、Packet も転送(2)ペアが見つからない場合

呼出側に、Packet の廃棄を伝え、Type Field を正しくセットした Ethernet Packet を作成
Address Resolution module が各々の値をセット

計算機
X

EA(Y)
IPA(Y)

具体例(Packet 受理)

No.10

１．Ｙが Packet を得て、ハードウェアが Ethernet であることを知る
２．<ET(IP), IPA(X)>を EA(X) へマッピングする
３．「要求」なので、フィールドを交換し、EA(Y)を sender Address にセットし、opcode を「応答」にする
４．EA(X) に向けて packet を送信する

Ethernet Type : ET(IP) 計算機
Y
接続後、直ぐに Packet 送信

１．Xは、IPA(Y)を知っていて、ハードウェアドライバ(ここでは、Ethernet ドライバ)に知らせている
２．ドライバは、<ET(IP),IPA(Y)> を 48bit Ethernet Address に変換するために、Address Resolution module を調べる
３．しかし、Xは接続直後なので、情報がない
４．Packet を捨て、新たに情報をセットした Packet を生成する

実装(1)

Hardware Address があるか？
YES - Protocol Address に対応しているか？
YES - Merge_flag := false<Protocol Type, Sender Protocol Address> のペアがすでに表にある場合は、Packet の中の情報を元にエントリを更新する。 そして、Merge_flag = true。
opcode が「要求」か？
YES - Merge_flag が false の場合、<Protocol Type,Sender Protocol Address, Sender Hardware
Address>を表に追加する
YES - Hardware とProtocol のフィールドを交換し、opcode に「応答」をセットする要求を受け取ったのと同じハードウェア上のTarget Hardware Address に Packet を送信する

No.9

具体例(Packet 生成)
Ethernet Address : EA(X)DOD Internet Address : IPA(X)

Packet の受理

No.8

No.11

BSD/OS の arp コマンド
Internet-to-Link のアドレス変換を表示・修正を行う
具体的には、hostname とmac アドレスの対応を示す% arp hostname
オプション-a : 現在における全ての ARP エントリを表示する% arp -acrest.csce.kyushu-u.ac.jp (133.5.22.3) at 8:0:20:80:71:e8
theater.csce.kyushu-u.ac.jp (133.5.22.98) at 8:0:20:86:ee:ea

X×Y

Packet の送信方法

５．Xが応答 Packet をYから受け取る
６．Packet が応答であることを知り、転送を終了する
続いて転送を行うときは、X , Y 共に情報が残っているので、転送はすぐに成功する

実装(2)No.12-d : スーパーユーザがエントリを削除する% arp -d hostname-n : オプションなしまたは -a の時に、hostname を表示せずに「?」を表示する% arp -n -a? (133.5.22.3) at 8:0:20:80:71:e8? (133.5.22.98) at 8:0:20:86:ee:ea-s : ARP エントリを作成する% arp -s hostnname link_addr2