このページではDHCP(Dynamic Host Configuration Protocol)を初心者向けにわかりやすく3分で解説します。
DHCPとは、インターネットに接続する際に必要となるIPアドレスなどの設定を自動的に割り当てるプロトコでUDP上で動作します。OSI参照モデルのアプリケーション層に該当するプロトコルです。

このページではDHCPはどんな仕組み?DHCPはなぜ必要なの?といった疑問にお答えします。
ネットワークエンジニアを目指す方であれば知らないと恥ずかしい超・基本知識の1つです。是非最後までご覧ください。
DHCPとは?わかりやすく
DHCPとは、Dynamic Host Configuration Protocolの略で、コンピュータがインターネットに接続する際に必要となるIPアドレスなどの設定を自動的に割り当てるプロトコルです。

始めに、なぜDHCPが必要になるのか?をしっかり理解できるように、まずは前提となるIPアドレスの基本知識についておさらいしておきましょう。
プロトコルとはコンピュータとコンピュータがネットワークを通して通信する際に決められた約束事・決まりのこと。

普段の日常会話でも事前にプロトコルが決まっているから会話が成り立っていると言えます。ネットワークの世界でも同じで、異なるコンピュータ同士が適切に通信を行うためにはプロトコルが必要になります。

DHCP:IPアドレスとは?
インターネットに接続しコンピュータ同士が通信を行うためには、コンピュータ1つ1つにIPアドレス(Internet Protocol Address)というインターネットの世界における住所を設定する必要があります。

現実の世界でも、誰かに手紙を送りたいときはその人の住んでいる「住所」を調べて手紙を郵便局に配達しますよね。
同じようにインターネットの世界でも「IPアドレス」を基に、メールをどこに送れば良いか?動画データを誰のスマートフォンに送れば良いか?などを判断します。そのため、インターネットに接続している全てのコンピュータには必ずIPアドレスの設定を行う必要があります。

今このページをご覧になっている(=インターネットに接続している)ということは、あなたのスマートフォン・パソコンにもこのIPアドレスが設定されていると言えます。
もしIPアドレスが設定されていなければ、インターネットに接続することはできません。

IPアドレスをさらに詳しく知りたいという方は以下の記事をご覧ください。
IPアドレスの設定は面倒・・・
IPアドレスはインターネットに接続するためには絶対に必要な設定であるにも関わらず、この設定が結構面倒なのです。
例えば、IPアドレスは現実世界における「住所」と同じ役割を果たすため、同じIPアドレスを複数のコンピュータで共有することはできません。(IPアドレスは世界でたった一つの値になります。)


したがって、ネットワーク内に存在する全てのコンピュータに割り当てるIPアドレスを一元管理する仕組みが必要となってきます。
また、IPアドレスの設定はネットワークが変わると(例・・WiFiからモバイル回線へ切り替える)その都度再設定が必要になります。家に帰るたびに手動でIPアドレスを設定するのはかなりの手間ですし、そのためのスキルも必要となってきます。


また、IPアドレスだけではなく、その他にもサブネットマスクやローカルDNSサーバの設定、デフォルトルートの設定など、インターネットに接続するために必要な設定はたくさん存在します。
このような煩雑さを解消するために生まれたのがDHCP(Dynamic Host Configuration Protocol)です。
DHCPを利用すれば、IPアドレスへの知識やネットワークの知識がなくても、スマートフォンを起動するだけで誰でも簡単にインターネット接続が可能になるのです。

DHCPの仕組み
では、どのようにDHCPが各機器にIPアドレスを割り当てるのか?その具体的な仕組みを解説します。
登場人物はDHCPクライアントとDHCPサーバの2つです。


DHCPクライアントとは、パソコンやスマートフォンなどインターネットに接続する機器のことで、IPアドレスを割り当てられる側を指します。対して、DHCPサーバはIPアドレスを割り当てる側です。
この2つが以下4ステップのやりとり(=パケットの交換)を行うことでIPアドレスなどの設定を自動的に行います。
①DHCP Discover
まず始めはDHCPクライアントがDHCPサーバを探索するところから開始します。
DHCPクライアントは、DHCPサーバがどこにあるのか分かりません。(DHCPサーバ自体のIPアドレスが分からないため直接通信することができません。)したがって、まずはネットワーク内のすべての宛先に対してDHCP Discoverというパケットを送信します。


繰り返しになりますが、DHCP Discoverを送る際にはどの機器がDHCPサーバであるかは分からないので、ネットワーク内のすべての機器に対してパケットをブロードキャストします。
②DHCP Offer
DHCP Discoverを受け取ったDHCPサーバは、対象の機器に割り当てるIPアドレスなどの情報を決定し、DHCPクライアントに対して提案するDHCP Offerというパケットを送り返します。


ただし、この時もまだDHCPクライアントのIPアドレスは設定されていないため、厳密に言えばDHCP Offerもブロードキャストで届けられる点を押さえておきましょう。
③DHCP Request
DHCP Offerを受け取ったDHCPクライアントは、その提案を受諾する旨のメッセージ(DHCP Request)をDHCPサーバに送ります。

④DHCP Ack
最後にDHCP Requestを受け取った最終確認としてDHCP Ackを返します。

これで、DHCPクライアントへのIPアドレス等必要な設定が完了します。

合計4回のパケットを使うのがDHCPのポイントです。
発展:DHCPリレーエージェント
DHCPに関連する知識の1つにDHCPリレーエージェントがあります。

DHCPリレーエージェントについてはネットワークスペシャリスト試験でも頻出の内容ですので、以下の記事も是非併せてご覧ください。
ネットワークエンジニアとして
コンピュータとコンピュータはどのように通信をしているのか?インターネットはどのような仕組みで構成されているのか?

ネットワークの基礎を1から学習したい方(=ネットワークエンジニアを目指す方)は、以下の書籍が非常におすすめです!
システムエンジニアを目指す方や、IT知識を1から身につけたい方は以下のページをご覧ください。
正直どこから学び始めればよいかわからない。どのように勉強していけば、エンジニアとしてのスキルが磨けるか?が分からない・・・という方は必見です。
システムエンジニア向けに「できるエンジニア」になる方法を1から解説しておりますので、是非ご覧ください。