2009-11-24 15 views
8

クライアントが68ポートでリッスンしないとすると、DHCPサーバが要求を受信すると、要求を受信したアドレス(送信時にクライアントによって選択された一時的なポート)に送信できます。ポート68でリスニングするのですか?DHCPクライアントがポート68でリッスンする理由

答えて

1

DHCPがどのように動作するかを指定するRFC(Request for Comments)に含まれているためです。 RFC 2131は、DHCPクライアントとサーバーがどのように動作する必要があるかを指定するドキュメントです。

DHCP(特にセクション4.1)の詳細についてはhereを参照してください。 RFCの内容については、hereを参照してください。

+5

「なぜプロトコルはクライアントがポート68でリッスンするように指定していますか」という質問は、「なぜRFCがそれを言っているのですか? –

+1

DHCPは、ポート67(サーバー)とポート68(クライアント)を使用する以前のBOOTPプロトコルに基づいています。BOOTPがこれらのポートを使用したのは、その時点で他のプロトコル(SMTPは25、FTPは21など)では使用されていなかったからでしょう。ホストは通常​​、単一のIPアドレスを持っていますが、何千ものポートを持つことができます。特定のプロトコルに特定のポート番号を割り当てることにより、複数の当事者が標準のサービスおよびクライアントを開発することが可能になりました。あなたが正しいポートで聞いていれば、あなた自身のDHCPクライアントまたはサーバを書くことができます。 – TLiebe

+1

Okは技術的な理由がないことを意味しますか? – avd

16

主な理由は、DHCPサーバが、要求を受信したMACアドレスにユニキャストで送信するのではなく、MACレベルで「DHCPオファー」をブロードキャストする可能性があることです。 ポートが一定でない場合、この同じランダムポートに対して偶然聞いているホストの中には、アプリケーションレイヤであるレイヤ5へのパケットを受け入れるものがあります。 つまり、アプリケーションは、健全な状況ではなく、全く異なるアプリケーションからメッセージを取得します。

+0

この回答は、3年以上前のものとは異なるようには見えません。何かを追加したい場合は、既存の受け入れられた答えに編集を提案することを検討してください:) –

+3

ありがとう、これは実際には正解です。 – Parzifal

+0

関連する質問:DHCPクライアントを使用してIPアドレスを取得する通常の設定で、このポートを安全にファイアウォールで保護することはできますか?私。現実の世界で*関連性がありますか? – Zero3

1

私はちょうど同じ質問を自分自身に直面しなければならなかった、といくつかの研究の後、私はセクション1.6設計目標の下で、DHCPプロトコルを記述RFC 2131、上で次を見つけた:

  • DHCPがにサービスを提供しなければなりません

    UDPヘッダ:既存のBOOTPクライアントBOOTPプロトコルを記述RFC 951にも

は、我々は次のことを見つけることができます送信元および宛先ポート番号が含まれています。 BOOTPプロトコルは、2つの予約ポート番号、 'BOOTP client'(68) と 'BOOTP server'(67)を使用します。クライアントは、「BOOTP server」を宛先ポートとして使用して要求を送信します。これは通常放送です。 サーバは、宛先ポートとして「BOOTPクライアント」を使用して応答を送信します。 サーバ内のカーネルやドライバの機能によっては、 であっても、ブロードキャストでなくてもかまいません(詳しくは、 の「Chicken/Egg issues」というタイトルのセクションで説明しています)。 TWOO予約ポートが である理由は、ブートリプライをクライアントにブロードキャストする必要があるときに、「起床」を避けてBOOTPサーバ デーモンをスケジュールすることです。 サーバと他のホストは 'BOOTPクライアント'ポートでリッスンしませんので、 そのような着信ブロードキャストはカーネル レベルで除外されます。 UDPソースポートフィールドには、クライアントに「ランダム」ポート の番号を指定させるだけでは不十分です。サーバの応答が ブロードキャストである可能性があるため、ランダムに選択されたポート番号は、そのポートでリッスンしていた他のホスト を混乱させる可能性があります。

ですから、質問に対する答えは上記のものです。 DHCPクライアントはBOOTPプロトコルと互換性があり、BOOTPプロトコルはクライアントに特定のポートを要求するためにはUDPポート68を使用する必要があります。これはBOOTPREPLIESをブロードキャストすることができ、同じポートでリッスンしている他のホストが混乱する可能性があります。

関連する問題