第4章 ARP:アドレス解決プロトコル

第4章 ARP:アドレス解決プロトコル
1
4.1 イントロダクション
同じ物理ケーブル上でもEthernetやトークンリングなど
異なるデータリンクを利用できる
どのインターフェースを使うかはもちろん
IPデータグラムではなくEthernetフレームで判断される
IPv4アドレスからデータリンクのアドレスを知るためのプロトコルがARP
(RFC826, RFC5227, RFC5494)
2
4.2 1つの例 / 4.3 ARPキャッシュ
$ ftp demmy.jp
1.  DNSや/etc/hostsでドメイン名をIPアドレスに変換
2.  FTPがTCPに対象のIPアドレスとコネクション確立を要求
3.  TCPがARPに物理アドレスを要求
4.  ARPがARP要求(宛先のIPを含む1つのEthernetフレーム)をブロードキャスト
5.  自分のIPが要求されていたホストが物理アドレスを含むARP応答を返す
6.  TCPがIPデータグラムでコネクション要求セグメントを送信 (18章で詳説)
......
※ ポイント・ツー・ポイント接続ではARPは使用しない
ARPキャッシュ
*  論理アドレスと物理アドレスの最新のマッピングを保持
*  Ciscoの機器で4時間保持されており、他もその実装が多い
3
4.2 1つの例 / 4.3 ARPキャッシュ (図)
4
4.4 ARPパケット形式
ARP : 0x0806
RARP : 0x8035
Ethernet : 0x0001
IP : 0x0800
ARP要求 : 0x0001
ARP応答 : 0x0002
RARP要求 : 0x0003
RARP応答 : 0x0004
5
4.5 ARPの例 (1)
ブロードキャスト・アドレス
Ethernet
フレーム
データ長
6
4.5 ARPの例 (2)
照会されたホストがダウンしているか存在しない場合
*  繰り返しARP要求が行われる
*  TCPコネクション要求のタイムアウトは75秒と設定されていることが多い
*  ARP要求だけでTCPセグメントは送信されないことに注意
※ TCPタイムアウトと再転送アルゴリズムについては21章で解説
ARPのタイムアウトは通常、ARPキャッシュのエントリに対して提供されている
7
4.6 代理ARP
ルータがホストの代わりにARP要求に応える
無差別ARP / ARPハック
*  旧式のTCP/IP実装を持つホスト・グループを隠すために使った
8
根拠のないARP
自分自身のIPアドレスを探すためのARP要求
*  他のホストが同じIPアドレスを使用していないか確認できる
*  インタフェース・カードを交換した場合などに他のホストへ
ARPキャッシュ・エントリの更新を促す
キャッシュに存在するIPアドレスからのARP要求を受け取ると
そのキャッシュ・エントリを送り手のハードウェア・アドレスで更新する
※ 仕様に沿っていないARPを実装したクライアントもあるため注意が必要
9
arpコマンド
$ arp
-a
キャッシュ・エントリを表示
-d
全てのキャッシュ・エントリを削除
-s
キャッシュ・エントリを追加 (タイムアウトされない)
temp
タイムアウトされるように設定
pub
ARPエージェントとして立ち上がる (代理ARPとして使用可能)
10
補足: IPv6のL2アドレス解決
Neighbor Discovery Protocol (NDP)
(RFC2461, RFC3122)
*  ブロードキャストではなくマルチキャストで要求を送信
*  ICMPv6パケットを使用してアドレス解決や様々な機能を実現
11
第5章 RARP:逆アドレス解決プロトコル
12
5.1 イントロダクション / 5.2 RARPパケット形式
Xターミナルやディスクレス・ワークステーションでは
コンフィギュレーション・ファイルでIPを設定できない
ハードウェア・アドレスから自身のIPアドレス情報を
他のシステムから返してもらうためのプロトコルがRARP
(RFC903)
コンセプトは単純だが、実装はARPよりも困難
パケット形式はARPと同様
*  RARP要求はブロードキャスト
*  RARP応答は通常ユニキャスト
13
5.3 RARPの例
TFTP
読み込み要求
(RRQ)の実行
※16章でRARP・BOOTP・TFTPを用いた起動シーケンスについて詳説
14
5.4 RARPサーバーの設計
ARPサーバはシンプルでカーネルのTCP/IPの一部として用意されている
RARPサーバの設計はシステムに依存する
*  ディスク・ファイルにハードウェア・アドレスとIPアドレスのマッピングを提供
*  ユーザー・プロセス起動される必要がある
*  特定のEthernetフレームを送受信しないといけない
*  ハードウェア・レベルのブロードキャストで送信する必要がある
*  冗長性を高める必要があるため、ネットワーク・トラフィックが増加する
*  複数のサーバからでもARP応答は1台のホストしか送信しないようにする必要がある
15