14

DHCP Discover and Requestの送信元IPで使用されている0.0.0.0の宛先IPアドレスをサーバーが使用できないのはなぜですか?DHCP Discover and Requestから学習したクライアントのMACアドレスを使用して、フレームを適切なクライアントマシンに転送できます。

4

2 に答える 2

17

ユニキャストまたはブロードキャストの選択は、DHCP RFC 2131で指定されています。

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

ciaddrgiaddrは次のとおりです。

ciaddr        4  Client IP address; only filled in if client is in BOUND, RENEW or REBINDING state and can respond to ARP requests.
giaddr        4  Relay agent IP address, used in booting via a relay agent.

したがって、DHCP サーバーは、クライアントの現在の状態 (主に既に IP アドレスを持っているかどうか) に応じてブロードキャストするかどうかを選択し、メッセージの送信者がリレー エージェントであるか単なるクライアントであるかを決定します。

ユニキャスト DHCPOFFER

この場合、マシンにはすでに IP アドレスがあり、LAN にリレー エージェントがないため、DCHP サーバーは DHCPOFFER のユニキャストを選択しました。

編集:

また、宛先アドレスとして IP アドレス 0.0.0.0 を使用することはできません。IPv4 RFC 5735で指定されているとおり:

0.0.0.0/8 - このブロック内のアドレスは、「この」ネットワーク上の ソース ホストを参照します。アドレス 0.0.0.0/32 は、このネットワーク上のこのホストの送信元アドレスとして使用できます。0.0.0.0/8 内の他のアドレスを使用して、このネットワーク上の指定されたホストを参照できます ([RFC1122]、セクション 3.2.1.3)。

于 2012-05-25T16:08:10.287 に答える
0

RFC 2131の 24 ページから:

通常、DHCP サーバーと BOOTP リレー エージェントは、uicast 配信を使用して、DHCPOFFER、DHCPACK、および DHCPNAK メッセージをクライアントに直接配信しようとします。IP 宛先アドレス (IP ヘッダー内) は DHCP 'yiaddr' アドレスに設定され、リンク層宛先アドレスは DHCP 'chaddr' アドレスに設定されます。残念ながら、一部のクライアント実装では、実装が有効な IP アドレスで構成されるまで、そのようなユニキャスト IP データグラムを受信できません (クライアントが IP アドレスで構成されるまで、クライアントの IP アドレスを配信できないというデッドロックにつながります)。

プロトコル ソフトウェアが IP アドレスで構成されるまでユニキャスト IP データグラムを受信できないクライアントは、クライアントが送信する DHCPDISCOVER または DHCPREQUEST メッセージで、「フラグ」フィールドの BROADCAST ビットを 1 に設定する必要があります。BROADCAST ビットは、クライアントのサブネット上のクライアントにメッセージをブロードキャストするためのヒントを DHCP サーバーと BOOTP リレー エージェントに提供します。

プロトコル ソフトウェアが設定される前にユニキャスト IP データグラムを受信できるクライアントは、BROADCAST ビットを 0 にクリアする必要があります。

于 2015-04-28T07:22:36.643 に答える