DHCPプロトコルワークフローの分析

1はじめに

DHCP、動的ホスト構成プロトコル、動的ホスト構成プロトコルは、簡単に言えば、ホストがアプリケーション層プロトコルであるIPアドレスを取得するプロセスです。DHCPは、通信68(クライアントポート67(サーバー)ポートのUDP使用します

2.DHCP作業プロセス

有効なIPアドレスを動的に取得して使用するには、次の段階を経る必要があります。

  1. 検出フェーズ DHCPクライアントがDHCPサーバーを検索するフェーズ
  2. プロビジョニング段階 DHCPサーバーがIPアドレスを提供する段階
  3. 選択フェーズ DHCPクライアントがDHCPサーバーによって提供されIPアドレスを選択するフェーズ
  4. 確認段階 DHCPサーバーが提供されIPアドレスを確認する段階

IPアドレスの動的取得プロセスを図2に示します。各ステージの作業プロセスについては、以下で詳しく説明します。

2.1発見フェーズ

検出フェーズでは、DHCPクライアントはDHCP-DISCOVERメッセージを送信してDHCPサーバーを検出します。DHCPサーバーのIPアドレスはクライアントに不明であるため、DHCPクライアントはDHCP-DISCOVERメッセージをブロードキャストします。DHCP-DISCOVERメッセージを受信するすべてのDHCPサーバーは応答メッセージを送信するため、DHCPクライアントはネットワーク内に存在するDHCPサーバーの場所を知ることができます。

2.2オファー段階

DHCP-DISCOVERメッセージを受信するネットワーク内のDHCPサーバーは、適切なIPアドレスを選択し、IPアドレスのリース期間やその他の構成情報(ゲートウェイアドレス、ドメイン名など)とともにDHCP-OFFERメッセージを介してDHCPに送信します。サーバーアドレスなど)クライアント。

DHCPサーバーは、使用可能なIPアドレスおよびその他の構成情報をアドレスプールを介して保存します。DHCPサーバーはDHCP要求メッセージを受信すると、IPアドレスプールから空きIPアドレスとその他のパラメーターを取得し、DHCPクライアントに送信します。

クライアントにIPアドレスを割り当てるためのDHCPサーバーの優先順位は次のとおりです。

  1. クライアントのMACアドレスまたはクライアントIDに静的にバインドされたIPアドレス。
  2. DHCPサーバーによって記録されたクライアントに割り当てられたIPアドレス。
  3. クライアントから送信されたDHCP-DISCOVERメッセージのオプション50フィールドで指定されたIPアドレス。
  4. DHCPアドレスプールで、使用可能なIPアドレスを順番に検索します。IPアドレスが最初に見つかります。
  5. 使用可能なIPアドレスが見つからない場合は、リースの有効期限が切れて過去に競合したIPアドレスが順番に照会されます。見つかった場合は割り当てられ、それ以外の場合は処理されません。

DHCPサーバーがクライアントにIPアドレスを割り当てるとき、サーバーは最初に、割り当てられたIPがネットワーク上の他のデバイスによって使用されていないことを確認する必要があります。DHCPサーバーは、ICMPエコー要求(ping)メッセージを送信することにより、割り当てられたIPを検出します。指定された時間内に応答がない場合、サーバーはpingメッセージを再度送信します。指定された回数が経過しても応答がない場合は、割り当てられたIPアドレスを使用できます。それ以外の場合は、検出されたIPアドレスを競合アドレスとして記録し、割り当てるIPアドレスを再選択します。

2.3選択フェーズ

複数のDHCPサーバーがDHCPクライアントへのDHCP-OFFERメッセージに応答する場合、DHCPクライアントは最初に受信したDHCP-OFFERメッセージのみを受け入れます。次に、オプション54(サーバー識別オプション)、つまり選択したDHCPサーバーのIPアドレス情報を含むDHCP-REQUEST要求メッセージをブロードキャストで送信します。

ブロードキャストモードでDHCP-REQUEST要求メッセージを送信する目的は、オプション54で識別されたDHCPサーバーによって提供されるIPアドレスを選択することをすべてのDHCPサーバーに通知することであり、他のDHCPサーバーは提供されたIPアドレスを再利用できます。

2.4確認段階

DHCPクライアントから送信されたDHCP-REQUEST要求メッセージを受信した後、DHCPサーバーは、DHCP-REQUESTメッセージで伝送されたMACアドレスに従って、対応するリースレコードを検索します。存在する場合は、割り当てられたIPアドレスを使用できることをDHCPクライアントに通知する応答としてDHCP-ACKメッセージが送信されます。

DHCPクライアントは、DHCPサーバーから返されたDHCP-ACK確認メッセージを受信した後、ブロードキャスト方式でGratuitous ARPメッセージを送信して、ホストがサーバーによって割り当てられたIPアドレスを使用しているかどうかを検出します。指定された時間、クライアントはこのアドレスを使用します。それ以外の場合、クライアントはDHCP-DECLINEメッセージをDHCPサーバーに送信して、アドレスが使用できないことをDHCPサーバーに通知し、IPアドレスを再度申請します。

DHCPサーバーがDHCP-REQUESTメッセージを受信した後、対応するリースレコードを見つけられない場合、または何らかの理由でIPアドレスを正常に割り当てることができない場合、DHCPサーバーはDHCPクライアントに割り当てることができないことを通知する応答としてDHCP-NAKメッセージを送信します。適切なIPアドレス。DHCPクライアントは、新しいIPアドレスを要求するために、DHCP-DISCOVERメッセージを再送信する必要があります。

3.DHCPメッセージ形式

DHCPメッセージの形式を次の図に示します。

DHCPメッセージの各フィールドの具体的な説明は次のとおりです。
  • op:メッセージの操作タイプ。要求メッセージと応答メッセージに分けられます。1は要求メッセージ、2は応答メッセージです。特定のメッセージタイプは、オプションフィールドで識別されます。
  • htype:ハードウェアアドレスタイプ。
  • hlen:ハードウェアアドレスの長さ。現在、システムはイーサネットのみをサポートしており、ハードウェアアドレスの長さは6に固定されています。
  • ホップ:DHCPメッセージが通過するDHCPリレーの数。DHCP要求メッセージがDHCPリレーを通過するたびに、このフィールドは1ずつ増加します。
  • xid:クライアントソフトウェアによって生成され、要求メッセージと応答メッセージを照合するために使用される乱数。
  • :クライアントがIPアドレス申請プロセスに入る時間またはIPアドレスが更新される時間。状況に応じてクライアントソフトウェアによって設定されます。現在は使用されておらず、0に固定されています。
  • flags:フラグフィールド。最初のビットはブロードキャスト応答フラグであり、DHCPサーバー応答メッセージがユニキャストモードとブロードキャストモードのどちらで送信されるかを識別するために使用されます。0はユニキャストモードを意味し、1はブロードキャストモードを意味します。残りのビットは予約されています。
  • ciaddr:DHCPクライアントのIPアドレス。
  • yiaddr:DHCPサーバーによってクライアントに割り当てられたIPアドレス。
  • siaddr:DHCPクライアントがIPアドレスなどの情報を取得するサーバーのIPアドレス。
  • giaddr:要求メッセージの送信後にDHCPクライアントによって渡された最初のDHCPリレーのIPアドレス。
  • chaddr:DHCPクライアントのハードウェアアドレス。
  • sname:DHCPクライアントがIPアドレスなどの情報を取得するサーバーの名前。
  • file:DHCPクライアントのDHCPサーバーによって指定されたスタートアップコンフィギュレーションファイルの名前とパス情報。
  • options:オプションの可変長オプションフィールド。メッセージのタイプ、有効なリース期間、DNSサーバーのIPアドレス、WINSサーバーのIPアドレスなどの構成情報が含まれます。

4.Wiresharkを使用してパケットをキャプチャおよび分析します

DHCPからIPを取得するプロセスで、Wiresharkを使用してデータパケットをキャプチャします。

  1. Wiresharkを開いてパケットをキャプチャします
  2. PCには現在IPがあり、cmdコマンドを使用してIPを解放し(ipconfig /release)、IPを再取得します(ipconfig /renew
3.パケットキャプチャを停止し、bootpを使用してパケットをフィルタリングします。
4. DHCPメッセージ形式に従って、キャプチャされたメッセージを分析します。DHCPオファーメッセージの分析例を次に示します。

5.参考資料

  1. DHCPテクニカルホワイトペーパー:http
    //www.h3c.com/cn/d_200802/333443_30003_0.htm#download

  2. DHCPプロトコルの原則とその実装プロセス:https
    //blog.csdn.net/wuruixn/article/details/8282554

  3. DHCP完了プロセスとWiresharkパケットキャプチャ分析の詳細な説明:https
    //bbs.huaweicloud.com/blogs/158906

  4. DHCPプロトコルの原則とパケットキャプチャ分析:https
    //blog.csdn.net/andy_93/article/details/78238931

おすすめ

転載: blog.csdn.net/ZHONGCAI0901/article/details/109137853