A little bit of everything

元・情報系大学院生の備忘録

DHCP のしくみ

DHCP (Dynamic Host Configuration Protocol)

1. DHCPDISCOVER
2. DHCPOFFER
3. DHCPREQUEST
4. DHCPACK

f:id:yuukiyg:20160116180901p:plain

DHCPクライアントAが起動するとDHCPサーバを探し出すためにDHCPDISCOVERをブロードキャストする。(なぜブロードキャストするかというと、最初の時点でDHCPクライアントはIPアドレスを持っていないうえに、DHCPサーバのIPアドレスを知らないため。) 「ブロードキャストでDHCPDISCOVERを出せば、DHCPサーバが受け取ってくれるだろう!」という考え。単純。 通信したい相手のアドレスがよくわからない状況で利用されるのがブロードキャスト。

DHCPサーバがDHCPDISCOVERを受け取ると、アドレスプールの中からアドレスを選択して、クライアントにDHCPOFFERを返す。クライアントに対して「このIPアドレスなんかいかが??」っていうかんじ。

クライアントがDHCPOFFERを受け取ると、DHCPREQUESTをブロードキャストしてIPアドレスを要求する。このときにブロードキャストする理由は、1つのサブネット上に複数のDHCPサーバが存在する可能性を考慮しているため。そのため、 DHCPREQUESTの中には、「どのDHCPサーバのオファーを選択したのか」が記述されている。(選択されたDHCPサーバ以外のサーバは、アドレスプールからリクエストされたIPアドレスを配布不可とする。)

クライアントからDHCPREQUESTを受け取ったDHCPサーバはDHCPACKによって、クライアントに対してIPアドレスとその他のオプションを配布する。DHCPACKを受け取ったクライアントは、受け取ったIPアドレスが利用されていないことをチェックする。

DHCPサーバによって配布されるIPアドレスはリースなので、リース期間が過ぎると無効になる。そこで、クライアントはリース期間の半分が過ぎると、DHCPREQUESTを送信してIPアドレスのリース期間を延長することが可能。これは自動的に行われるので、ユーザは特に意識する必要はない。 また、クライアントがもうIPアドレスを必要としなくなった場合(シャットダウン時など)は、DHCPRELEASEをDHCPサーバへ送信することで、リースされたIPアドレスを解放する。DHCPRELEASEを送信した時点でそのクライアントにはIPアドレスが無くなることになるため、このDHCPRELEASEメッセージに対しDHCPサーバーは応答をしない(できない)。