目次
概要
DHCPはIPアドレスをはじめとするTCP/IPの設定を自動的に配布するために利用するプロトコルです。DHCPは非常によく利用されているプロトコルです。その仕組をしっかりと理解しておきましょう。
DHCPとは
DHCP(Dynamic Host Configuration Protocol)は、IPアドレスなどのTCP/IPの通信に必要な設定を自動的に行うためのプロトコルです。
TCP/IPで通信を行うためには、TCP/IPの設定が正しく行われていることが大前提です。設定が間違ってしまっていると、当然、正常な通信はできません。具体的な設定内容としては、以下が挙げられます。
- IPアドレス/サブネットマスク
- デフォルトゲートウェイのIPアドレス
- DNSサーバのIPアドレス
IT技術に慣れているユーザであれば、こうした設定を難なくできるでしょう。しかし、あまり慣れていないユーザにとっては、TCP/IPの設定をユーザ自身で行うことはハードルが高い場合があります。たとえ、慣れているユーザであっても設定ミスをしてしまうことはよくあります。設定ミスなどをなくすためには、設定の自動化が有効です。そのためのプロトコルがDHCPです。
DHCPによって、ホストをネットワークに接続すれば、自動的に必要なTCP/IPの設定を行うことができます。IT技術に慣れていないユーザでも正しい設定ができます。また、単純な設定ミスによるトラブルを防ぐこともできます。
関連記事
IT技術者として、TCP/IPの設定の意味をきちんと理解しておきましょう。以下の記事でTCP/IPの設定の意味を詳しく解説しています。
DHCPメッセージのカプセル化
DHCPは、トランスポート層にUDPを利用するアプリケーション層に位置するプロトコルです。DHCPは、アプリケーション層に位置するプロトコルですが、アプリケーションの機能やデータのフォーマットを定義しているのではなく、TCP/IPの通信を行うために必要な設定を行うことが目的であることに注意してください。
DHCPメッセージはUDPヘッダでカプセル化します。ウェルノウンポート番号67と68です。DHCPサーバは67でDHCPクライアントが68です。さらにIPヘッダでカプセル化します。そして、イーサネットヘッダや802.11(Wi-Fi)ヘッダでカプセル化して、物理的な信号を伝送媒体へ送り出します。
DHCPの動作の概要
DHCPを利用するには、あらかじめDHCPサーバを用意し、配布するIPアドレスなどのTCP/IPの設定を登録しておきます。DHCPサーバとして、Windows/Linuxサーバを利用することができます。また、ルータ/レイヤ3スイッチにもDHCPサーバ機能が備わっています。
DHCPサーバに登録していれるTCP/IP設定情報をDHCPプールと呼びます。DHCPクライアントのホストがネットワークに接続すると、DHCPサーバとの間で以下の4つのメッセージをやり取りして、自動的にTCP/IPの設定を行います。
- DHCP DISCOVER
- DHCP OFFER
- DHCP REQUEST
- DHCP ACK
以上のようなDHCPのやり取りはブロードキャストを利用します。そもそもDHCPクライアントには自分のIPアドレスがわかりません。もちろん、DHCPサーバのIPアドレスもわかりません。アドレスがわからなくても、とりあえず何らかのデータを送りたいというときにブロードキャストを利用します。ブロードキャストで同じネットワーク上のすべてに送っておけば、同じネットワーク上にDHCPサーバが存在していれば、DHCPサーバが返事を返してくれるだろうという考えです。ブロードキャストを利用するため、DHCPサーバとDHCPクライアントは原則として同じネットワーク上に接続されている必要があります。ネットワークを相互接続するルータはブロードキャストを他のネットワークに転送しないためです。
また、DHCPで設定情報を取得すると、ホストのIPアドレスがコロコロと頻繁に変わってしまう可能性があります。IPアドレスが変わってしまうと、ホストを特定するのに手間がかかることになります。DHCPでIPアドレスを自動的に設定する際、決まったIPアドレスを配布することもできます。
関連記事
以下の記事は、CiscoルータをDHCPサーバとして設定するコマンドを解説しています。
DHCPリレーエージェント
DHCPクライアントとDHCPサーバは同じネットワーク上であることが前提ですが、それが難しいこともあります。企業の社内ネットワークは、部署ごとなどで複数のネットワークに分割されています。各ネットワークにDHCPサーバを準備すると、たくさんのDHCPサーバが必要になり、サーバの管理が煩雑になってしまいます。複数のネットワーク上のDHCPクライアントに対して、1台のDHCPサーバでTCP/IPの設定情報を配布できるようにしたいと考えるのは、自然なことでしょう。
1台のDHCPサーバで複数のネットワークのDHCPクライアントにTCP/IP設定情報を配布するためには、各ネットワークのDHCPプールを設定しておきます。そして、DHCPリレーエージェント機能を利用します。
DHCPリレーエージェントとは、DHCPのブロードキャストメッセージをユニキャストに変換する機能です。DHCPリレーエージェント機能は、ルータで利用することが一般的です。DHCPクライアントが接続されているネットワーク上のルータでDHCPリレーエージェント機能を有効にします。
DHCPリレーエージェントによって、次のようにDHCPサーバはネットワークが異なるDHCPクライアントへTCP/IP設定情報を配布します。
- DHCPクライアントがDHCPDISCOVERをブロードキャストで送信します。
- DHCPリレーエージェントを有効にしているルータがDHCPクライアントからのDHCPDISCOVERのブロードキャストメッセージを受信すると、DHCPサーバのIPアドレスを宛先IPアドレスとしてユニキャストに変換して転送します。このとき、DHCPリレーエージェントのIPアドレスの情報も付加します。
- DHCPサーバは、DHCPリレーエージェントのIPアドレスの情報からクライアントに配布すべてきDHCPプールを判断します。そして、適切なDHCPプールからDHCPリレーエージェントのルータへDHCPOFFERを返します。
- ルータはDHCPOFFERをブロードキャストに変換して転送します。
以降、DHCPREQUEST、DHCPACKも同じように転送します。
関連記事
DHCPリレーエージェントについてさらに詳しく以下の記事でまとめています。
DHCPサーバの配置について、以下の記事でまとめています。
まとめ
ポイント
- DHCPによって、IPアドレスをはじめとするTCP/IP設定を自動的に行うことができます。
- DHCPの主なメッセージは以下の4つです。
- DHCPDISCOVER
- DHCPOFFER
- DHCPREQUEST
- DHCPACK
- DHCPメッセージはブロードキャストベースでやり取りします。そのため、DHCPサーバとDHCPクライアントは原則として同一ネットワーク上に接続しなければいけません。
TCP/IP
- TCP/IPの階層
- IP(Internet Protocol) ~データを送り届ける~
- ICMP ~きちんとIPで転送できますか?~
- Ping ~きちんとデータは届きますか?~
- Windows OSのPingコマンド
- トレースルート ~データはどのルータを通っていますか?~
- tracertコマンド(Windows OS)
- ICMPリダイレクト
- トラブルはどこ? ~Pingとトレースルート~
- ARP ~IPアドレスとMACアドレスを対応付け~
- ARPフォーマット
- Gratuitous ARP(GARP)
- ポート番号 ~どのアプリケーションのデータなの?
- TCPの概要
- TCPの動作
- UDPの概要
- アプリケーションのデータが届くまでのまとめ
- DNS ~宛先IPアドレスを求める~
- nslookupコマンド ~DNSの名前解決の確認~
- DHCP ~IPアドレスを自動割り当て~
- Cisco IOS DHCPサーバの設定と確認コマンド
- Ciscoルータ DHCPサーバの設定例
- DHCPリレーエージェント
- DHCPリレーエージェントの設定例[Cisco]
- DHCPサーバ配置のまとめ
- TCP/IPの設定のまとめ
- ipconfigコマンド ~Windows OSのTCP/IP設定を確認~
- Linux(Ubuntu)でのTCP/IP設定の確認コマンド
- Webサイト
- HTMLとCSS ~Webページを作る~
- URL ~Webサイト(Webページ)のアドレス~
- HTTP ~HTMLファイルを転送する~
- Webアプリケーション ~Webブラウザだけあればいい~
- HTTP Cookie
- Webアプリケーションのセッション管理
- Webプロキシサーバ ~Webアクセスを代わりに~
- Webアクセスのまとめ
- 電子メール
- SMTP ~電子メール送信用プロトコル~
- POP3 ~メール受信用プロトコル~
- IMAP4 ~メールサーバ上でメールを管理~
- 電子メールのまとめ
- FTP ~代表的なファイル転送プロトコル~
- TFTP ~簡易的なファイル転送プロトコル~
- Windows10/11のTFTPクライアント
- ネットワークのトラブルの切り分け手順