DHCPでIPアドレスを自動取得する際、クライアントとDHCPサーバーの間では決まった手順でメッセージのやりとりが行われています。
この一連のメッセージのやりとりを「DHCPシーケンス」と呼びます。
DHCPシーケンスを理解することで、IPアドレスがどのように割り当てられるか、またトラブルが発生した際にどのステップで問題が起きているかを把握しやすくなるでしょう。
本記事では、DHCPシーケンスの基本的な仕組みから、Discover・Offer・Request・ACKの4つのメッセージの役割、さらにNAKや更新・解放の流れまでをわかりやすく解説します。
ネットワークの仕組みを深く理解したい方や、トラブルシューティングに役立てたい方にも参考になる内容です。
DHCPシーケンスとはIPアドレス取得のための4段階のメッセージのやりとりのこと
それではまず、DHCPシーケンスの基本的な概念と全体像について解説していきます。
DHCPシーケンスとは、クライアント端末がDHCPサーバーからIPアドレスを取得するまでの一連の通信手順のことです。
この手順はDHCP Discover・DHCP Offer・DHCP Request・DHCP ACKという4つのメッセージで構成されており、頭文字をとって「DORA(ドーラ)」と呼ばれることもあります。
4つのメッセージはすべてUDP(User Datagram Protocol)を使い、ポート67番・68番を介してやりとりされます。
このシーケンスはネットワークに接続するたびに自動的に実行されるため、ユーザーが意識することなくIPアドレスの取得が完了するのです。
DHCPシーケンスの4ステップ(DORA):
・D(Discover):クライアントがDHCPサーバーを探す
・O(Offer):DHCPサーバーがIPアドレスを提案する
・R(Request):クライアントがIPアドレスの使用を申請する
・A(ACK):DHCPサーバーが正式に割り当てを確定する
DHCPシーケンスが使用するプロトコルとポート番号
DHCPシーケンスはUDPプロトコルを使用し、サーバー側はポート67番・クライアント側はポート68番を利用します。
クライアントがまだIPアドレスを持っていない状態でも通信できるよう、ブロードキャスト(255.255.255.255)を宛先としたパケットを送信します。
UDPはコネクションレス型のプロトコルであるため、事前の接続確立なしにブロードキャスト通信を開始できる点がDHCPに適しています。
DHCPシーケンスが実行されるタイミング
DHCPシーケンスが実行されるのは、新たにネットワークへ接続したときだけではありません。
リース期間の更新時・ネットワークアダプターの再起動時・OSの再起動時など、さまざまなタイミングでDHCPシーケンスが発生します。
また、リース期間が切れた場合も再度シーケンスが実行され、新たなIPアドレスの取得が行われます。
DHCPシーケンスとMACアドレスの関係
DHCPシーケンスでは、クライアントのMACアドレスがパケット内のchaddrフィールドに格納されて送信されます。
DHCPサーバーはこのMACアドレスをもとにクライアントを識別し、予約(リザベーション)設定がある場合は特定のIPアドレスを優先的に割り当てます。
MACアドレスはネットワーク機器に固有の識別情報であるため、DHCPの管理において重要な役割を担っています。
4つのメッセージの詳細:Discover・Offer・Request・ACKを深掘りする
続いては、DHCPシーケンスを構成する4つのメッセージそれぞれの役割と詳細について確認していきます。
各メッセージの内容を理解することで、DHCPの通信の流れをより具体的にイメージできるようになるでしょう。
DHCP Discover:DHCPサーバーの探索メッセージ
DHCP Discoverは、クライアントがネットワーク内のDHCPサーバーを探すために送信する最初のメッセージです。
この時点でクライアントはまだIPアドレスを持っていないため、送信元IPアドレスは「0.0.0.0」、宛先IPアドレスはブロードキャストアドレス「255.255.255.255」となります。
DHCP Discoverパケットの主な内容:
・送信元IPアドレス:0.0.0.0(未取得のため)
・宛先IPアドレス:255.255.255.255(ブロードキャスト)
・送信元ポート:68番(クライアント)
・宛先ポート:67番(サーバー)
・クライアントのMACアドレス(chaddr)
・トランザクションID(xid):応答の照合に使用
ブロードキャストで送信されるため、同じセグメント内にあるすべてのDHCPサーバーがDiscoverを受信できます。
複数のDHCPサーバーが存在する環境では、すべてのサーバーがOfferを返す可能性があります。
DHCP Offer:IPアドレスの提案メッセージ
DHCP Offerは、DHCPサーバーがクライアントへIPアドレスを提案するメッセージです。
サーバーはDiscoverを受け取ると、スコープ内で利用可能なIPアドレスを選択し、クライアントへOfferを送信します。
DHCP Offerパケットの主な内容:
・提案するIPアドレス(yiaddr)
・サブネットマスク
・デフォルトゲートウェイ
・DNSサーバーアドレス
・リース期間
・DHCPサーバーのIPアドレス(siaddr)
Offerは通常ブロードキャストまたはユニキャストで送信され、クライアントはトランザクションID(xid)を照合して自分宛てのOfferを識別します。
複数のDHCPサーバーからOfferが届いた場合、クライアントは最初に受け取ったOfferを採用するのが一般的です。
DHCP Request:IPアドレス使用申請メッセージ
DHCP Requestは、クライアントが特定のDHCPサーバーのOfferを選択し、そのIPアドレスの使用を正式に申請するメッセージです。
Requestもブロードキャストで送信されるため、採用されなかった他のDHCPサーバーにも「別のサーバーを選択した」という情報が伝わります。
| 項目 | 内容 |
|---|---|
| 宛先 | ブロードキャスト(255.255.255.255) |
| 選択したサーバー情報 | optionsフィールドに選択したDHCPサーバーのIPを格納 |
| 要求するIPアドレス | Offerで提案されたIPアドレスを指定 |
Requestをブロードキャストで送ることで、採用されなかったDHCPサーバーが確保していたIPアドレスを解放でき、アドレスの無駄を防げます。
NAKと更新・解放のシーケンス:DHCPの応用的な通信の流れ
続いては、NAK(否定応答)やリース更新・解放といった、DHCPの応用的なシーケンスについて確認していきます。
基本の4ステップ以外にも、DHCPにはさまざまな状況に対応した通信の流れが存在します。
NAK・更新・解放の仕組みを理解することで、DHCPの全体像がより明確になるでしょう。
DHCP NAK:割り当てを拒否する否定応答メッセージ
DHCP NAK(Negative Acknowledgement)は、DHCPサーバーがクライアントのRequestを拒否する際に送信するメッセージです。
NAKが送信される主なケースは以下の通りです。
| NAKが発生する状況 | 内容 |
|---|---|
| 要求されたIPアドレスが使用中 | 他の端末がすでに同じIPを使用している |
| スコープ外のIPアドレスを要求 | クライアントが異なるセグメントへ移動した場合など |
| リース情報の不一致 | サーバーに記録されたリース情報とRequestの内容が合わない |
NAKを受け取ったクライアントは、使用中のIPアドレスを破棄し、再度DHCP Discoverからシーケンスをやり直します。
NAKはトラブルシューティングの際に重要な手がかりとなるため、パケットキャプチャで確認できるようにしておくと役立ちます。
DHCPリース更新のシーケンス
リース期間の50%(T1タイマー)が経過すると、クライアントは自動的にリース更新のシーケンスを開始します。
更新時は最初のDiscoverからやり直すのではなく、DHCP RequestとDHCP ACKの2メッセージだけで更新が完了します。
リース更新のシーケンス:
①クライアントがDHCP Requestをユニキャストで送信(T1タイマー経過時)
②DHCPサーバーがDHCP ACKでリース期間をリセットして応答
③更新完了・同じIPアドレスで引き続き通信が可能
※T1で失敗した場合はT2タイマー(87.5%経過)でブロードキャストによる再試行が行われます
更新は通常バックグラウンドで自動実行されるため、ユーザーが接続断を経験することはほとんどありません。
DHCP Release:IPアドレスを返却する解放メッセージ
DHCP Releaseは、クライアントが使用中のIPアドレスをDHCPサーバーへ返却するメッセージです。
Windowsでは「ipconfig /release」コマンドを実行することで、手動でDHCP Releaseを送信してIPアドレスを解放できます。
DHCP Releaseが送信されると、サーバーはそのIPアドレスをプールに戻し、他の端末への再割り当てが可能な状態に戻ります。
ただし、クライアントが突然ネットワークから切断された場合はReleaseが送信されないため、サーバーはリース期間が切れるまでそのIPアドレスを確保し続けます。
DHCPシーケンスのトラブルシューティングへの活用
続いては、DHCPシーケンスの知識をトラブルシューティングに活かす方法について確認していきます。
DHCPに関連するトラブルが発生した際、シーケンスのどのステップで問題が起きているかを特定することが迅速な解決につながります。
パケットキャプチャによるシーケンス確認
Wiresharkなどのパケットキャプチャツールを使い、DHCPのシーケンスを実際に観察することが有効です。
フィルターに「dhcp」または「bootp」と入力することで、Discover・Offer・Request・ACKの各メッセージを確認できます。
たとえばDiscoverは送信されているがOfferが返ってこない場合は、DHCPサーバー側またはネットワーク経路に問題があると判断できます。
シーケンス別のトラブル原因と対処法
| 問題のあるステップ | 想定される原因 | 対処法 |
|---|---|---|
| Discoverが届かない | ネットワーク接続の問題・ポートのブロック | ケーブル・スイッチポートの確認 |
| Offerが返ってこない | DHCPサーバーの停止・スコープの枯渇 | サーバー再起動・スコープ拡張 |
| NAKが返ってくる | IPアドレスの競合・セグメント移動 | 端末のネットワーク設定リセット |
| ACKが届かない | ネットワーク経路の問題 | ルーター・スイッチの設定確認 |
このように、シーケンスのどのステップで止まっているかを確認するだけで、原因の絞り込みが大幅に効率化されます。
DHCPシーケンスを理解することの重要性
DHCPシーケンスの知識は、ネットワーク管理者やエンジニアにとって基礎的かつ重要なスキルです。
トラブル発生時の原因特定だけでなく、ネットワーク設計や構成変更の際にも正確な判断を下せるようになります。
パケットキャプチャと組み合わせることで、理論だけでなく実際の動作を目で確認しながら理解を深められるでしょう。
まとめ
本記事では、DHCPシーケンスの仕組み・4つのメッセージの詳細・NAKや更新・解放の流れ・トラブルシューティングへの活用について解説しました。
DHCPシーケンスはDiscover・Offer・Request・ACKの4ステップ(DORA)で構成され、クライアントがネットワークに接続するたびに自動的に実行されます。
NAKはRequestが拒否された際の否定応答であり、リース更新はRequestとACKの2メッセージだけで完結します。
シーケンスのどのステップで問題が発生しているかを把握することが、DHCPトラブルの迅速な解決につながります。
パケットキャプチャツールを活用しながら、実際の通信の流れを観察することで理解がより深まるでしょう。