3 Minutes NetWorking
No.25

3Minutes NetWorking

第25回レイヤ7 DHCP

■ 4つのアドレス・おさらい

ネット助手

…。あの〜、博士?

インター博士

何かね、ネット君。

ネット助手

上に「レイヤ7 DHCP」と書いてあるような気がするんですけど。

インター博士

書いてあるな。

ネット助手

…。前回までレイヤ3をやってた記憶があるんですけど…。
いつの間にレイヤが4つも飛んだんです?

インター博士

うむ。
本来ならDHCPはもっと先でやるつもりだったのだが、IPアドレスの割り当てという話がでたのでな。ここらでやっておいた方がいいだろうと、そういう判断だ。

ネット助手

ははぁ。

インター博士

まずは前回の復習からいこう。
データの転送には、4つのアドレスが必須である、という話だったな。

ネット助手

えぇ。
宛先のMACアドレスとIPアドレス。送信元のMACアドレスとIPアドレスですよね。

インター博士

まずは、送信元アドレス、つまり自分自身のアドレスをどうやって知るか、どうやって手に入れるかという話をしたと思う。

ネット助手

MACアドレスはNICを取り付けた段階でわかるんでしたよね。

インター博士

そうだ。問題は自分自身のIPアドレスをどうやって知るか、だ。
1つは静的に決定される方法。

ネット助手

ネットワーク管理者が、IPアドレスはいくつですよ、と教えてくれた値をそのまま手動でパソコンに入力する方法でしたよね。

インター博士

うむ。
もう1つが、サーバからと通信を行い、自動的に設定する方法だ。こちらを動的という。

ネット助手

自動的に決定されるなら、便利ですよねぇ。

インター博士

この動的なIPアドレスの割り当て、割り当ててもらう方からすればIPアドレスの取得の方法として、現在主流な方式が、DHCPだ。▼ link

ネット助手

はい、前回でそこまでは聞きました。

■ DHCP・概論

インター博士

DHCPは、割り当てるIPアドレスを管理し、実際に割り当て作業を行うサーバと、割り当ててもらうクライアントから成り立つ。

ネット助手

「さーば」と「くらいあんと」ですか。

インター博士

DHCPを行うサーバのことを、DHCPサーバというが、DHCPサーバソフトを実行しているホストのことだ。一方、クライアントはDHCPクライアントと呼ばれ、DHCPクライアントソフトを実行する。

TCP/IPのプロパティ

[Figure25-01:TCP/IPのプロパティ]

インター博士

前回もでてきた、インターネットプロトコル(TCP/IP)のプロパティで、自動的に取得にしておけば、DHCPクライアントソフトは自動的に実行されている。

DHCP Clientサービス

[Figure25-02:DHCP Clientサービス] 

ネット助手

ホントだ。自動でスタートアップになってる。

インター博士

うむ。
サーバとクライアントの関係を図で簡略に表すと、こんな感じかな。

DHCP動作・簡略

[Figure25-03:DHCP動作・簡略]

ネット助手

ははぁ、要求して、割り当ててもらうんですね。

インター博士

簡潔な説明ならば、以上、終了

ネット助手

はやっ!!

■ DHCP・承前

インター博士

せっかくだから、もうすこし細かくやろう。
いくら自動的に割り当てるとはいっても、すべてを自動的にやってくれるわけではない。
事前に管理者が割り当てるアドレスの範囲を決めておく必要がある。

ネット助手

割り当てるアドレスの範囲?

インター博士

いくらなんでも、自動でこのネットワークのホストに割り振るアドレスはこれこれ、とは決めてくれん。
この範囲内のアドレスをホストに割り振ってよいと決めておく必要がある。

ネット助手

ん〜っと。例えば。
このネットワークは、192.168.1.0だから、192.168.1.1〜192.168.1.254までのアドレスを割り振ってよい、と決めるんですか?

インター博士

いいぞ、ネット君。その通りだ。
この範囲のことをIPアドレスのプールという。

ネット助手

ぷーる。

インター博士

これは範囲だけでなく、192.168.1.1〜192.168.1.254を割り振りなさい、だが192.168.1.200と192.168.1.201はルータが使うので割り振ってはいけない、という設定も可能だ。

ネット助手

ははぁ。

インター博士

サーバは設定されたプールの中から、要求してきたクライアントに対して、それぞれがユニークになるようアドレスを割り当てる

IPアドレスプール

[Figure25-04:IPアドレスプール]

ネット助手

なるほど。
管理者は範囲だけ決めておけば、あとは自動的に割り振ってくれることになるわけですね。

インター博士

うむ。
もう1つネットワーク管理者は、事前にIPアドレスのリース期限を決定しておく必要がある。

ネット助手

りーす…。
貸し出し期限ですか?

インター博士

うむ。割り当てるといっていたが、実際はサーバがもつプールから、IPアドレスを貸し出す、という表現が一番近いかもしれん。

ネット助手

ははぁ。クライアントは貸し出してもらって、使うという形ですか。
サーバがIPアドレスを持っていて、それを貸し出す、と。

インター博士

うむ。それでなぜ期限をもうけるかというと、例えばIPアドレスを割り当てたはいいが、その後そのホストが移動してしまった場合どうなる?
サーバはIPアドレスを割り当てたので、そのIPアドレスは使われていると思っているぞ。

ネット助手

IPアドレスを持ち逃げされた形になってしまいますね。

インター博士

そうだ。
なので、IPアドレスには貸し出し期限を設けておく。クライアント側は、継続して使いたければ、期間延長を申し出るという形になる。

リース期限

[Figure25-05:リース期限] 

インター博士

上の画像の赤い枠内が、リースの状態だ。
「Lease Obtained」がIPアドレスの貸し出し日。「Lease Expires」が貸し出し期限になる。この場合、2日間ということだ。

ネット助手

必ず2日間なんですか?

インター博士

いや、そういうわけではない。
ホストの移動が多いネットワークでは、持ち逃げが多くなるからもっと短くするし、ほとんどないのならもっと長くてもよい。状況次第だな。

ネット助手

だから管理者が状況に応じて事前に決めておく必要がある、ということですね。

■ DHCP・メッセージ

インター博士

さて、実際にDHCPがどのように動作するか、という話をしよう。
まずは、DHCPメッセージを見てもらおう。

ネット助手

DHCPめっせーじ?

インター博士

うむ。つまりカプセル化される前のデータのことだ。
サーバとクライアントがやりとりするデータそのものだ。

バイト数名前説明
1オペレーションコードクライアント→サーバ…1
サーバ→クライアント…2
1ハードウェアタイプ10Mイーサネット…1
1ハードウェアアドレスタイプ10Mイーサネット…6
1リレーエージェントhop数リレーエージェントの経由数
4トランザクションID一連の通信で使用される識別番号
2経過時間クライアイントの初期化後の時間
1フラグブロードキャスト・フラグ
4クライアントIPアドレス現在のクライアントのアドレス
(再リース時のみ)
4割り当てIPアドレスサーバが割り当てたアドレス
4サーバIPアドレスサーバのアドレス
4DHCPリレーエージェントアドレスリレーエージェントのアドレス
16クライアントハードウェアアドレスクライアントのMACアドレス
64サーバ名サーバのホスト名
128ブートファイル名ブートファイルの名前
可変オプションクライアントのその他設定

[Table25-01:DHCPメッセージ]

ネット助手

うわ、ずいぶん長いですね。

インター博士

まぁ全部覚える必要はないのだが、一応な。ポイントは、赤色で表示されている部分だ。
再割り当てしてもらう場合は、既に割り当てられているアドレスをサーバに伝える。
そしてもちろん、割り当てアドレスがメッセージの中に入っていること。

ネット助手

表でいうところのクライアントIPアドレスと、割り当てIPアドレスですね。

インター博士

そして、オプションだ。
このオプションこそが、DHCPが主流になった理由だ。

ネット助手

インター博士

実をいうと、オプションを抜いた部分は、DHCPの前身であるBOOTPと対して変わらない。
では、DHCPとBOOTP最大の違いは、オプションにIPアドレス以外の情報を付けて送ることができるという点だ。

ネット助手

BOOTPが、DHCPの前の形だった、と。
オプションにIPアドレス以外の情報を付けて送ることができる、ということはBOOTPはIPアドレスしか送らないってことですか?

インター博士

そうだ。DHCPはその他のネットワークの設定情報を送ることができる。
なので、動的ホスト設定プロトコル、と呼ばれるのだよ。

ネット助手

ははぁ。
サブネットマスクやリース期限はわかりますけど、その他の設定は何に必要なんです?

インター博士

それについては、先々ででてくるものばかりだ。その時説明しよう。
さて、次はDHCPの実際の動作だ。

■ DHCP・割り当て動作

インター博士

先ほどは、簡略して「要求」「割り当て」という図を描いたが、実際のDHCPの動作はもう少し細かい。いくつかの種類のメッセージをやりとりする。

ネット助手

いくつかの種類?

インター博士

うむ。よく使われるメッセージ・タイプは以下の6つだ。

Noメッセージ名意味
1DHCPDISCOVERDHCPサーバを見つけるためのメッセージ
2DHCPOFFERサーバからクライアントへ候補を伝えるメッセージ
3DHCPREQUEST候補から決定したアドレスを伝えるメッセージ
5DHCPACKサーバからクライアントへ取得を認めるメッセージ
6DHCPNAKサーバからクライアントへ取得エラーメッセージ
7DHCPRELEASEクライアントからサーバへリリース要求メッセージ

[Table25-02:DHCPメッセージタイプ]

ネット助手

4が空いてますけど?

インター博士

あくまでよく使われるものだ。
これらのメッセージをサーバとクライアントで相互に応答して、IPアドレスの割り当てを決定する。

ネット助手

ははぁ。

インター博士

まず、簡単に動作を説明しよう。

  1. クライアントがサーバを発見するためDHCPDISCOVERを送信
  2. DHCPDISCOVERを受け取ったDHCPサーバは、割り振る候補のアドレスをDHCPOFFERで送信
  3. DHCPOFFERを受け取ったクライアントは要求するIPアドレスをDHCPREQUESTで送信
  4. DHCPREQUESTを受け取ったDHCPサーバは、要求を認めるならDHCPACKを送信。駄目ならばDHCPNAKを送信。
  5. DHCPACKを受け取ったクライアントは、そのIPアドレスを設定する。DHCPNAKなら再度DHCPREQUESTを送信。
ネット助手

あう?
DHCPなんとかばっかりでごちゃごちゃしてますね。

インター博士

そうか。
なら動きのある説明を。

[Figure25-06:DHCP・動作]

ネット助手

は〜。
最初は自分のアドレスがわからないので、0.0.0.0を使うんですね。

インター博士

そうだ。さらにDHCPのメッセージのポイントは、ブロードキャスト送信を使うという点だ。
クライアントは誰にメッセージを送ればいいかわからないからな。

ネット助手

そうですよね。
何番ネットワークに所属しているかもわからないんですしね。

インター博士

さらに、サーバの方もクライアントはIPアドレスがないので、必ず受け取ってもらうためにブロードキャストを使う。

ネット助手

ブロードキャストは全員宛だから、なにがなんだろうが受信するってことですか。

インター博士

そうだ。
なかなか上手くできているだろう?

ネット助手

はは〜。

■ DHCP・リース期間

インター博士

もうひとつ、DHCPについて話しておこう。
DHCPにはIPアドレスのリース期間があるという話をしたな。

ネット助手

ええ。

インター博士

リース期限をすぎた場合、リースの延長を申し立てることができる。
その場合、以下のようなフレームを送信する。

DHCPREQUEST・リース延長

[Figure25-07:DHCPREQUEST・リース延長]

インター博士

受け取ったサーバは、そのIPアドレスを継続して使ってよいならば、DHCPACKを返す。
実際、同じIPアドレスを使い続けることが多いのも事実だ。

ネット助手

ふむふむ。

インター博士

さらに、リース期限をまたなくても、IPアドレスを返したり、もう1度REQUESTしたりすることも可能だ。
以下のように行う。

(1)Windows95,98,ME

winipcfg.exe

[Figure25-08:winipcfg.exe リースの返却・再取得]

(2)WindowsNT,2000,XP

ipconfig リースの返却・再取得

[Figure25-09:ipconfig リースの返却・再取得] 

ネット助手

再取得や、返却ってつかうんですか?

インター博士

そうだな、例えばリース期限前にクライアントを他のネットワークに移動させたとする。
この場合、クライアントは、IPアドレスのリース期間内だからまだそのIPアドレスが使えると思っているのだよ。

ネット助手

ん〜。
そうすると、本当は違うネットワークだから前のネットワークのIPアドレスではいけないのに、それをリース期限まで使い続けるってことになるわけですか。

インター博士

そうだ。
リース期限がくれば、リースの延長要求の返事が前のDHCPサーバから返ってこないことにより、再度DISCOVERからやり直すことになる。

ネット助手

DISCOVERからやり直すってことは、新しく移ったネットワークのDHCPサーバから返答が帰ってきて、新しいIPアドレスがもらえる、と。

インター博士

うむ。
リース期限がくればの話だ。それまでは違うIPアドレスのままだから、ネットワークに繋ぐことができない。なのでアドレスの再取得を行う必要があるのだよ。

ネット助手

ははぁ。結局手動で再取得をやらなきゃ駄目なんですね。

インター博士

さきほども言ったが、そういう場合はリース期間を短くしておけば問題ない。
めったに移動がないからとリース期間を長く設定しておいた時に、たまに移動があるとそういうことがおきる、という話だ。

ネット助手

なるほど。

インター博士

さて、どうやって送信元IPアドレスを知るかという話はわかってもらえたかな?

ネット助手

えぇ、まぁ、たぶん。

インター博士

うむ。
その自信なさ気な所がネット君らしくて非常によろしい

ネット助手

余計なお世話です。

インター博士

次回は、宛先MACアドレスをどうやって知るかの話をする。

ネット助手

了解。
3分間ネットワーキングでした〜♪

DHCP
[Dynamic Host Configuration Protocol]
動的ホスト設定プロトコル。
RFC2131と、RFC2132で規定。
サーバ
[server]
仕える人・給仕人。
サービスを提供する側。
クライアント
[client]
依頼人・お客。
サービスを要求、受ける側。
画像
Windows2000Proffesionalのサービス一覧。
プール
[pool]
水溜り、貯蓄。
本当は2000Serverの実際のDHCP設定画面をお見せしたかったのですが…。
機会があれば、いずれ。
左画像
「>ipconfig /all」での表示。
リレーエージェント
[Relay Agent]
異なるネットワークのDHCPサーバへIPアドレスを要求する際に使う、中継するルータのこと。
ホスト設定
[Host Configuration]
DHCPが設定できるものは、
  • サブネットマスク
  • デフォルトゲートウェイ
  • DNSサーバ
  • クライアントのホスト名
  • DNSドメイン名
  • リース期限
  • 再リース期限
などがあります。
メッセージ・タイプ
[message type]
メッセージのオプションに、タイプを表示する項目があります。
画像
>ipconfig /release
で、IPアドレスの返却。
>ipconfig /renew
が、IPアドレスの再取得。
ネット助手ネット君の今日のポイント
  • IPアドレスを自動的に割り振る方法がDHCPである。
  • 各クライアントはDHCPサーバが持つアドレスプールから、IPアドレスを割り振ってもらう。
  • IPアドレスを割り振る際には、リース期間を設定する。
  • DHCPはIPアドレスを割り振るだけでなく、詳細な設定も同時に送信することができる。
  • DHCPの動作は、以下のように行われる。
    • クライアントがサーバを見つける(DISCOVER)
    • サーバは候補のアドレスを送る(OFFER)
    • クライアントは正式な要求を送る(REQUEST)
    • サーバがそれを認める(ACK)
  • DHCPのメッセージのやりとりはブロードキャストを使用する。
  • リース期間前にも返却や再取得要求が行える。

3 Minutes NetWorking No.25

管理人:aji-ssz(at)selene.is.dream.jp