質問

クライアントが68ポートで聞いていないと仮定すると、DHCPサーバーがリクエストを受信した場合、リクエストを受け取った場所からアドレスに送信できます(送信時にクライアントが選択したはかないポートを使用)ポート68で聞いていますか?

役に立ちましたか?

解決

DHCPの動作方法を指定するのはRFC(コメントのリクエスト)にあるからです。 RFC 2131は、DHCPクライアントとサーバーの動作方法を指定するドキュメントです。

見る ここ DHCPの詳細(特にセクション4.1)。見る ここ RFCSとは何かについて。

他のヒント

主な理由は、DHCPサーバーがMacレベルで「DHCPオファー」をブロードキャストする可能性があることです。これは、リクエストを受け取ったMacアドレスにユニキャストを送信する代わりに、Macレベルで送信することです。ポートが一定でなかった場合、この同じランダムポートを偶然聞いているホストの一部は、パケットをレイヤー5(アプリケーションレイヤー)に受け入れます。言い換えれば、アプリケーションは、健全な状況ではなく、まったく異なるアプリケーションからメッセージを受け取ります。

私は自分で同じ質問に直面しなければなりませんでした、そしていくつかの研究の後、私は次のことを見つけました RFC 2131, 、セクション1.6の設計目標に基づいて、DHCPプロトコルについて説明します。

  • DHCPは、既存のBOOTPクライアントにサービスを提供する必要があります

また RFC 951, 、BOOTPプロトコルを説明すると、以下を見つけることができます。

UDPヘッダーには、ソースポート番号と宛先ポート番号が含まれています。 BOOTPプロトコルでは、予約された2つのポート番号「BOOTPクライアント」(68)と「BOOTPサーバー」(67)を使用します。クライアントは、宛先ポートとして「bootpサーバー」を使用してリクエストを送信します。これは通常、放送です。サーバーは、宛先ポートとして「BOOTPクライアント」を使用して返信を送信します。サーバー内のカーネルまたはドライバー施設に応じて、これは放送である場合とそうでない場合があります(これは、以下の「鶏/卵の問題」というタイトルのセクションでさらに説明されています)。予約された2つのポートが使用される理由は、ブートレプリーをクライアントにブロードキャストする必要があるときに、「目を覚まして」、BOOTPサーバーのデーモンをスケジュールすることを避けることです。サーバーと他のホストは「BOOTPクライアント」ポートでリスニングされないため、そのような着信放送はカーネルレベルで除外されます。クライアントがUDPソースポートフィールドの「ランダム」ポート番号を選択できるようにすることはできませんでした。サーバーの返信は放送される可能性があるため、ランダムに選択されたポート番号は、たまたまそのポートで聞いていた他のホストを混乱させる可能性があります。

したがって、質問に対する答えは上記から来ています。 DHCPクライアントは、DHCPがBOOTPプロトコルと互換性を持つためにUDPポート68を使用し、BOOTPプロトコルはクライアントに特定のポートを必要とする必要があります。 、同じポートで聞いている他のホストが混乱する可能性があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top