web-dev-qa-db-ja.com

DHCPメッセージがブロードキャストされるのはなぜですか?

私はネットワーキングクラスでDHCPを学んでおり、調査の一環として、次のビデオを見ていました。

https://www.youtube.com/watch?v=0UvLRVlPx6A

したがって、上記のビデオ(3:48)のWiresharkキャプチャでは、すべてのDHCP OFFER、REQUEST、およびACKメッセージの宛先IPとしてブロードキャストアドレスがあります。

一方、次の記事では、DISCOVERメッセージを除くすべてのメッセージがユニキャストであると述べています。

https://www.grandmetric.com/2017/07/18/what-is-dhcp-and-how-does-it-work/

私の質問は次のとおりです:1。それらのどれが正しいですか?それは本当にケースバイケースに依存していますか?

  1. Youtubeビデオに記載されているすべてのDHCPメッセージがブロードキャストである場合、最初のDISCOVERメッセージの後、クライアントがDHCPサーバーIPを知ったときに、クライアントがサーバーIPを宛先IPとして使用しないのはなぜですか。つまり、ユニキャストメッセージを使用して通信しないのはなぜですか?
1
akellas

DHCPの信頼できるソースの可能性が高い RFC 2131 。これが セクション3.1 からの抜粋です

  1. クライアントは、ローカルの物理サブネットでDHCPDISCOVERメッセージをブロードキャストします。

[...]

  1. 各サーバーはDHCPOFFERメッセージで応答する場合があります

[...]

  1. クライアントは、1つ以上のサーバーから1つ以上のDHCPOFFERメッセージを受信します。クライアントは、複数の応答を待つことを選択できます。クライアントは、DHCPOFFERメッセージで提供される構成パラメーターに基づいて、構成パラメーターを要求するサーバーを1つ選択します。 クライアントはDHCPREQUESTメッセージをブロードキャストします。このメッセージには、選択したサーバーを示す「サーバー識別子」オプションを含める必要があります。

[...] 4.サーバーは、クライアントからDHCPREQUESTブロードキャストを受信します。 DHCPREQUESTメッセージで選択されていないサーバーは、クライアントがそのサーバーのオファーを拒否したことを通知するメッセージとしてメッセージを使用します。

そして説明は続く。ブロードキャストが送信されるときはいつでも、それは明示的に述べられています。

したがって、高可用性を実現するために、ネットワークブロードキャストドメインに複数のDHCPサーバーが存在する可能性があるという事実に主に関連しています。最初のDHCPREQUESTで通信がユニキャストに切り替わっていた場合、他の冗長サーバーは、クライアントが他のサーバーを選択したかどうか(提供されたIPアドレスをより速くリサイクルできるようにする)、またはそれが消えたばかりかどうかを認識しません。

セクション4.1 で説明されている使用規則は他にもあります。ほとんどの場合、クライアントが割り当てられたIPアドレス(ソース0.0.0.0ではなく)の使用を開始すると、通信はユニキャストに切り替わります。

'giaddr'フィールドがゼロで、 'ciaddr'フィールドがゼロ以外の場合、サーバーはDHCPOFFERおよびDHCPACKメッセージを 'ciaddr'のアドレスにユニキャストします。 。 'giaddr'がゼロで 'ciaddr'がゼロで、ブロードキャストビットが設定されている場合、サーバーはDHCPOFFERおよびDHCPACKメッセージを0xffffffffにブロードキャストします。ブロードキャストビットが設定されておらず、「giaddr」がゼロで「ciaddr」がゼロの場合、サーバーはDHCPOFFERおよびDHCPACKメッセージをクライアントのハードウェアアドレスと「yiaddr」アドレス。いずれの場合も、「giaddr」がゼロの場合、サーバーはDHCPNAKメッセージを0xffffffffにブロードキャストします。

注:IPアドレスへのユニキャストには最初にARP解決が必要です(したがって、クライアントはIPアドレスを構成する必要があります)。ハードウェアアドレスへのユニキャストは必要ありません(クライアントにIPがない場合の最初のDHCPOFFERに使用されます)。 )。

また、たとえば、セクション4.3.2では、DHCPREQUESTのさまざまな使用例について説明しています。SELECTION状態(最初の使用)、INIT-REBOOT(キャッシュされた情報ですが、使用しなくなった後)、またはRENEWING(リースの延長)です。 3番目のケースでは、メッセージはユニキャストを使用して送信する必要があると述べています。

3
A.B