第5章 アプリケーション層|5-2|コース全体 19回中17本目
DHCP ― IPアドレスを自動で配るしくみ
端末をネットワークにつなぐだけで通信が始まるのはなぜか。DHCPが配る4つの設定と、DORAという4段階のやり取り、リースの更新タイミングを順に確認します。
DHCPは、IPアドレスと一緒に3つの設定も自動で配る
端末をネットワークにつなぐと、多くの場合は何も入力しなくても通信が始まります。これを実現しているのがDHCP(Dynamic Host Configuration Protocol)です。DHCPサーバは、新しく参加した端末に次の4つをまとめて配ります。
- 1
IPアドレス
この端末自身の住所。詳しくはIPアドレスの構造で解説しています。
- 2
サブネットマスク
住所のうち、どこまでがネットワークを示す部分かの境目。詳しくはサブネットマスクの計算のやり方で解説しています。
- 3
デフォルトゲートウェイ
外向けの通信を預ける相手。詳しくはデフォルトゲートウェイで解説しています。
- 4
DNSサーバ
ドメイン名をIPアドレスに変換してくれる相手のIPアドレス。詳しくはDNS ― 名前をIPアドレスに変えるで解説しています。
まだIPアドレスがない端末は、どう話しかけるのか
通常の通信は、宛先IPアドレスを指定して1対1で送るユニキャストです。ですがDHCPで最初にやり取りする端末は、 まだIPアドレスを持っていません。宛先のDHCPサーバのIPアドレスも、自分自身のIPアドレスも決まっていない状態です。
この問題を、DHCPはブロードキャストで解決します。ブロードキャストは、宛先を255.255.255.255 にして、同一ネットワーク内の全員に一斉に届ける通信方法です。 住所を持たない端末でも、「まだ住所がありません。DHCPサーバはいますか」と、宛先を名指しせずに送り出せます。
DORA ― 4段階のやり取りでIPアドレスが決まる
DHCPでIPアドレスが決まるまでの流れは、4つのメッセージの頭文字を取ってDORAと呼ばれます。DISCOVER → OFFER → REQUEST → ACK の順に進み、この4段階はすべてブロードキャストで行われます。
① DISCOVER ― 端末がDHCPサーバを探す
端末は「DHCPサーバはいませんか、IPアドレスをください」という要求をブロードキャストします。 自分のIPアドレスがまだないため、送信元は 0.0.0.0 のままです。
② OFFER ― サーバが候補を提案する
DISCOVERを受け取ったDHCPサーバは、割り当て候補のIPアドレスに加えて、サブネットマスク・デフォルトゲートウェイ・ DNSサーバ・リース期間をまとめてOFFERで返します。端末はまだIPアドレスを設定していないため、これもブロードキャストです。 同じネットワークにDHCPサーバが複数あれば、それぞれが別々のOFFERを返すことがあります。
③ REQUEST ― 端末がどれか1つを選ぶ
端末は届いたOFFERの中から1つを選び、「このIPアドレスをください」というREQUESTを送ります。このREQUESTもブロードキャストです。 選んだサーバにだけユニキャストで伝えないのは、他にOFFERを出した別のDHCPサーバにも「あなたの提案は選ばれませんでした」と伝え、 提案していたIPアドレスを他の端末のために解放してもらうためです。
④ ACK ― 選ばれたサーバが確定を返す
REQUESTで選ばれたDHCPサーバは、そのIPアドレスの割り当てを確定するACKを返します。これもブロードキャストです。 端末はACKを受け取って初めて、通知された4つの設定を自分に反映します。
リースには期限があり、定期的に更新する
DHCPで配られたIPアドレスは、永久に使えるわけではありません。「リース」(貸し出し)という形で、期限つきで割り当てられます。 期限が切れる前に、端末はサーバに更新を申し出ます。
更新を試みるタイミングは、リース期間の50%が経過した時点です。たとえばリース期間が8時間なら、4時間経過した時点で 最初の更新を試みます。更新が成功すると、そこでリース期間はリセットされ、また新しい期間として数え直します。
更新できないままリース期間が満了すると、そのIPアドレスは失効します。端末は最初のDISCOVERからやり直し、新しくIPアドレスを取得します。
DHCPはUDPを使い、ポート67と68を使い分ける
DHCPのやり取りは、コネクションを確立しないUDPの上で行われます。宛先IPアドレスがそもそも決まっていない以上、 TCPのようにコネクションを結んでから話す方式は使えません。ポート番号は役割ごとに固定です。
| 役割 | ポート番号 |
|---|---|
| DHCPサーバ | 67 |
| DHCPクライアント | 68 |
DISCOVERとREQUESTは宛先67番、OFFERとACKは宛先68番です。サーバ側が常に67番、クライアント側が常に68番を使います。
固定IPとDHCP、どちらを使うか
サーバやプリンタ、ルータ・スイッチ自身のように、他の機器から「その場所」を名指しでアクセスされる機器は、 IPアドレスが変わると困ります。こうした機器には固定IPを手動で設定します。
一方、PCやスマートフォンのように自分からアクセスする側の機器は、IPアドレスが多少変わっても困りません。 DHCPに任せたほうが、設定の手間もIPアドレスが重複する事故も防げます。
| 機器の例 | 向いている設定 |
|---|---|
| サーバ、ファイルサーバ | 固定IP |
| プリンタ、ルータ・スイッチ自身 | 固定IP |
| PC、スマートフォン、タブレット | DHCP(自動) |
つまずきやすい点
ブロードキャストはルータを越えない
DORAはすべてブロードキャストです。ブロードキャストは同一ネットワーク内にしか届かず、ルータを越えて別のネットワークには 転送されません。そのためDHCPサーバが別のネットワークにしかない場合、端末のDISCOVERはそのままでは届きません。 この場合はDHCPリレーエージェント(ルータなどがブロードキャストを代理で中継する仕組み)を使います。
DHCPサーバが見つからないとどうなるか
DISCOVERを送っても一定時間OFFERが返ってこない場合、OSは169.254.0.0/16の範囲で暫定的なアドレスを自分で割り当てます(IPアドレスの構造で扱っているAPIPAです)。 これはDHCPサーバとの通信に失敗したサインで、正常なDHCPでの割り当てではありません。
練習問題(全5問)
選んでから「採点する」を押すと、解説つきで答え合わせができます。
正解:IPアドレス・サブネットマスク・デフォルトゲートウェイ・DNSサーバ
DHCPはこの4つをまとめて配ります。MACアドレスは機器にあらかじめ焼き付けられた値で、DHCPが配るものではありません。
正解:DISCOVER → OFFER → REQUEST → ACK
端末が探し(DISCOVER)、サーバが提案し(OFFER)、端末が選び(REQUEST)、サーバが確定する(ACK)の順です。
正解:255.255.255.255
端末はまだDHCPサーバのIPアドレスを知らず、自分のIPアドレスも持っていないため、同一ネットワーク内の全員に届くブロードキャストアドレス255.255.255.255宛てに送ります。
正解:67番
DHCPサーバは67番、DHCPクライアントは68番を使います。53番はDNSのポート番号です。
正解:リース期間の50%が経過した時点で最初の更新を試みる
端末はリース期間の50%が経過した時点(T1)で自動的に更新を試みます。成功すればリース期間はそこから数え直しです。