web-dev-qa-db-ja.com

DHCPがクライアントとサーバー間の通信にUDPポート67と68を使用するのはなぜですか?

DHCPはクライアントにIPアドレスを割り当てるために使用されるため、接続を確立する唯一の可能な方法は、特定のポートをリッスンすることです。しかし、67と68を選択する背後に特別な理由はありますか?

8
valafar

DHCPは、エフェメラルポートではなく、サーバーとクライアントの両方に既知のポート番号を使用する以前のBOOTPプロトコルに基づいています。サーバーとクライアントはブロードキャストを介して通信し、サーバーは提供されたIPアドレスをUDPポート68でクライアントにブロードキャストします。このブロードキャストに関連する問題に対処するために、クライアント側の既知のポートの使用が導入されています。未満。

ホストAが一時ポート1883でBOOTPクライアントを使用しており、ホストB(同じネットワーク上にある)が同じポートでMQTTクライアントを使用していると仮定します。これで、BOOTPサーバーがブロードキャストIPアドレス255.255.255.255と宛先ポート番号を指定してブロードキャスト応答メッセージを送信します。 1883の場合、ホストAはアプリケーション層のDHCPクライアントで正しいメッセージを受け入れます。ただし、ホストBのアプリケーション層で実行されているMQTTクライアントは、誤ったメッセージを受け取ります。既知のポート(この場合は68)を使用すると、同じ2つの宛先ポート番号を使用できなくなり、他のプロトコルが他のプロトコルですでに使用されている同じポートを使用できなくなります。簡単に言うと、アプリケーションがまったく異なるプロトコルからメッセージを取得するのを防ぎます。

詳細については、 RFC 2131 を参照することをお勧めします。

10
Ankur Bhatia

DHCPは、1985年に作成された[〜#〜] bootp [〜#〜]に基づいています。

BOOTPは[〜#〜] tftp [〜#〜]をファイル転送プロトコルとして使用します。

TFTPは1981年に作成され、ポート69を使用しているため、最も近い未使用のポート(68および67)を使用するものでした。

13
jcbermu