ネットワーク(6)


ARPとRARP

[Ethernet Frame]
                     1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 (32bits width)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|       Ethernet destination address (first 32 bits)            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Ethernet dest (last 1 6bits   |Ethernet source (first 16 bits)|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|       Ethernet source address (last 32 bits)                  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        Type code              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
|    IP header, then TCP (or UDP) header, then your data ...    |
                  ...
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              Ethernet Checksum                                |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Frame Type は Ethernet Broadcast では、Ethernet Address は 0xffffffffffff (48bit all 1) となる。ARP では Ethernet Broadcastを使う。

ARP (Address Resolution Protocol)

IP Addressから Ethernet Addressへの変換を行なうのが ARP (RFC 826)である。
[ARP/RARPパケットのフォーマット]
                     1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 (32bits width)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      Hardware type            |      Protocol type            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  H Length     |  P Length     |        Operation              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            Ethernet source address (first 32 bits)            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Ethernet source (last 32 bits)| Source address (first 16 bits)|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source address (last 16 bits) | Ethernet dest (first 16 bits) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        Ethernet destination address (last 32 bits)            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                   Destination address                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
ARP要求では Ethernet Destination Address が記入されていないので ARP応答では記入して(さらにOperationを2に書き換えて)、 Ethernet Source Addressへ送り返す。

ARP キャッシュ

renoir.tsuda.ac.jp# arp -a
karel1.tsuda.ac.jp (133.99.10.1) at (incomplete)
vermeer.tsuda.ac.jp (133.99.10.3) at 8:0:20:7a:1b:d3
renoir.tsuda.ac.jp (133.99.10.7) at 0:20:af:17:eb:a9 permanent

renoir.tsuda.ac.jp# ping karel1
PING karel1.tsuda.ac.jp (133.99.10.1): 56 data bytes
64 bytes from 133.99.10.1: icmp_seq=0 ttl=255 time=1.583 ms

renoir.tsuda.ac.jp# arp -a
karel1.tsuda.ac.jp (133.99.10.1) at 8:0:20:19:e7:b1
vermeer.tsuda.ac.jp (133.99.10.3) at 8:0:20:7a:1b:d3
renoir.tsuda.ac.jp (133.99.10.7) at 0:20:af:17:eb:a9 permanent

ARP 要求と ARP 応答の実際の通信の様子は 教科書の Fig4.4参照(p.64)。 一般に、ARPエントリのキャッシュ・タイムアウトは 20分(ただし完全な場合。 不完全な場合は3分)。 存在しないホストへの ARP 要求は、送信間隔を延しながら繰り返し 送出される(TCPコネクション要求の完了までのタイムアウトが75秒なので、 それが上限となる)。

Proxy ARP

同じEthernet上に存在しない他のマシンへのARP に、別のマシンが ARP応答を返すことがある(= Proxy ARP、代理ARP)。 サブネットを組む場合や、PPP接続の場合に利用される(Fig4.6参照)。

根拠のないARP

ネットワークインターフェイスがUP になったとき、自分自身への ARPをネットワークにブロードキャストする(Fig.4.7)。

[利点]


RARP

disklessマシンなどが、boot時にネットワーク経由で自分のIP Address を手に入れるのに使う(Fig5.1, Fig.5.2参照)。

RARP要求/応答のパケットは、ARP要求/応答と同じ形式をもち、 Operation フィールドの値が異なるだけである。