いちりんのアウトプットブログ

インフラエンジニアです。まだまだ勉強中の身。わからないこと、気になる事を随時調べてアウトプットします。

DHCP is なに?

DHCP(Dynamic Host Configuration Protocol)とは、LANなどの閉じたネットワーク内で、自動的にコンピューターにIPを割り当てる仕組みのこと。

 

DHCPサーバーを構築すれば新規端末を追加した際にIPアドレスを設定しなくても、ネットワークに接続すれば通信ができるようになる。

 

DHCPは、TCP/IPのあプリケーション層のプロトコルであり、トランスポート層UDPを用いる。

ポート番号として、DHCPサーバーに67,クライアント用に68を利用する。

 

実際にどのような動作をするのかを以下にまとめる

 

①DHCPDISCOVER

クライアントは、ネットワークに接続した時点でIPアドレスを要求するDHCPDISCOVERパケットをDHCPサーバーに送る。

この時点ではDHCPサーバーのIPアドレスも知らないので、IPヘッダの送信元のIPアドレスを0.0.0.0,宛先IPアドレスを255.255.255.255(ブロードキャストアドレス)とする。

フレームの宛先MACアドレスもブロードキャストアドレスで送信する。

 

②DHCPOFFER

ブロードキャストでパケットを受信したDHCPサーバーはそのPCが属するサブネットの中で未使用のIPアドレスを選択し、DHCPOFFERを返送する。

この時、複数のDHCPサーバがネットワーク上にある場合、OFFERを複数受信することになる。

 

③DHCPREQUEST

クライアントはこれを受け取るとDHCPREQUESTをブロードキャストする。

これで複数のDHCPサーバからOFFERを受信した場合にも、全てのサーバに"応答が届く。なお、DHCPREQUESTにはどのサーバーからのDHCPOFFERを選択したのかが設定される。

 

④DHCPACK

DHCPサーバーはDHCPREQUESTを受け取ったら、自身が選択されたことを同じユーザーIPアドレスが返送されたことで確認する。そして割り当てるIPアドレスデフォルトゲートウェイIPアドレスなどをDHCPACKにより返送する。DHCPREQUESTが正しくなければPANKを返送する。

PACKを正常に受信したクライアントは、指定されたユーザIPアドレスを自分のIPアドレスとして保存し、以降はこのIPアドレスで通信を行うように設定するPNAKが返信された時は、再度DISCOVERの送信からやり直される。

 

なお、クライアントはIPアドレスが不要になった時点で、IPアドレス開放パケットをDHCPサーバに送ることでIPアドレスを返却する。

DHCPサーバーは自分で構築したことはなく、通常の業務ではあまり使用しない知識なのですが理解が曖昧だったので調べてかいてみました。