DHCP

読み:ディーエイチスィーピー
外語:DHCP: Dynamic Host Configuration Protocol 英語
品詞:名詞

IPネットワークにおいて、IPv4アドレスの動的割り当てを含む各種のネットワークに関する設定を自動で行なうための通信プロトコル

目次

IPv4用がRFC 2131RFC 2132で定義される。ポート番号は、クライアントには67/udp、サーバーには68/udpが用いられる。IPv6用のDHCPv6は異なるプロトコルである。

このDHCP以前にも、動的にホストの設定(IPアドレスを含む)を解決するためのプロトコルが存在した。

IPアドレスと追加の情報を得られる関連するプロトコルに、次のようなものがある。

例えば、RARPを用いると、MACアドレスからIPアドレスを得ることができる。ICMPでも、IPアドレスこそ得られないものの「Redirect」(type=5)メッセージでルーターの存在を、「Address Mask Request/Reply」(type=17/18)メッセージでネットワークマスクを、「Information Request/Reply」(type=15/16)メッセージでその他の情報を、それぞれ通知可能である。

そしてBOOTPはコンフィグレーション情報の転送機構を提供した。IPアドレスに加え、様々な情報を通知できる。

そしてDHCPは、このうち拡張性が高いBOOTPの拡張として作られたものの一つである。

利点

DHCPサーバーに、クライアントに割り当てるIPアドレスの範囲などを設定しておくことで、その中から空いているアドレスを動的にクライアントへ割り当てることができる。

また、DNSサーバーデフォルトルートなどの情報をクライアントに与えることも出来る。

MACアドレスでホストを識別することができるので、あるホストに常に決まったIPアドレスを設定することも可能である。そのため、サーバーに対してDHCPでネットワーク設定を行なうこともできる。

限界

ブロードキャストで通信するため、DHCPサーバーとDHCPクライアントは同一ネットワークになければならない。ただし、ルーターにDHCPリレーの機能を設定すると、別ネットワークのクライアントに対してIPアドレスを与えることができる。

複数のDHCPサーバーを置くことはできるが、それぞれのサーバーがリースするIPアドレスの範囲が重なってはならない。そのため、DHCPサーバーの冗長化は困難である。ただ、市販のソフトでは、冗長化を実現しているものもある。

BOOTPのとの差異

BOOTPとDHCPには二つの大きな相違がある。

BOOTPは電子計算機の起動時にのみネットワーク設定を行なうため、その電子計算機を停止するまでそのIPアドレスを使い続けるのに対し、DHCPでは一定時間(リース期間と呼ばれる)アドレスを付与し、それ以降は別のクライアントに対し同じアドレスを再割り当てすることができることである。

もう一つは、DHCPはIPネットワークに必要な全てのパラメーターを提供する機能を有することである。

VLAN

VLANトランキングの状態でDHCPサーバーに接続すると、物理的には1台のDHCPサーバーで、複数のVLANでDHCP運用が可能である。

パケット構造

DHCPはBOOTPの拡張であり、メッセージフォーマット等はほぼそのままである。BOOTPクライアントは、一切の変更無くDHCPサーバーと相互運用が可能である。

DHCPメッセージの構造
DHCPメッセージの構造

先頭より順番に、次の情報が格納される。

  • op (オペコード) (8ビット)
  • htype (ハードタイプ) (8ビット)
  • hlen (ハードウェアアドレス長) (8ビット)
  • hops (ホップ数) (8ビット)
  • xid (トランザクションID) (32ビット)
  • secs (経過秒数) (16ビット)
  • flags (フラグ) (16ビット)
  • ciaddr (クライアントIPv4アドレス) (32ビット)
  • yiaddr (ユーザーIPv4アドレス) (32ビット)
  • siaddr (サーバーIPv4アドレス) (32ビット)
  • giaddr (ルーターIPv4アドレス) (32ビット)
  • chaddr (クライアントハードウェアアドレス) (16バイト)
  • sname (サーバー名) (64バイト)
  • file (ファイル名) (128バイト)
  • options (オプション) (可変長)

DHCPにおいては、snameやfileなどの巨大なフィールドは殆ど意味を成さない。しかしBOOTPの拡張という立場を取っているため、DHCPはパケットが大きい。

options

DHCPはBOOTPとの互換のため、必要な情報は全てオプションによって渡される。

BOOTPではベンダー拡張という扱いで、オプションは補足程度の扱いでしかないためオプション番号欄は8ビットしかない。DHCPで多用したために使える番号の残りも少なくなっている。これを教訓に、DHCPv6はオプション番号欄を16ビットとした。従ってDHCPとDHCPv6ではオプション番号に互換性がない。

オプション番号の浪費を防ぐため、オプション番号を一つだけ確保してオプション内をサブオプションで区切る実装もあるが、データ長も8ビットしかないので多くのデータをまとめることはできない。

以下は、BOOTP用のものも含めて全て記載する。RFC番号の記載がないものは全てRFC 2132で規定されている。

  • 0 ‐ Pad ‐ なし
  • 1 ‐ Subnet Mask ‐ サブネットマスク
  • 2 ‐ Time Offset ‐ UTCからのオフセット秒 (100と101で非推奨になった)
  • 3 ‐ Router ‐ ルーターのアドレス
  • 4 ‐ Time Server ‐ タイムサーバーのアドレス
  • 5 ‐ Name Server ‐ IEN-116サーバーのアドレス
  • 6 ‐ Domain Server ‐ DNSサーバーのアドレス
  • 7 ‐ Log Server ‐ ロギングサーバーのアドレス
  • 8 ‐ Quotes Server ‐ 引用サーバーのアドレス
  • 9 ‐ LPR Server ‐ プリントサーバーのアドレス
  • 10 ‐ Impress Server ‐ インプレスサーバーのアドレス
  • 11 ‐ RLP Server ‐ RLPサーバーのアドレス
  • 12 ‐ Hostname ‐ ホスト名の文字列
  • 13 ‐ Boot File Size ‐ 512オクテットブロックでのブートファイルのサイズ
  • 14 ‐ Merit Dump File ‐ クライアントクラッシュ時のコアファイルのパス名
  • 15 ‐ Domain Name ‐ クライアントのDNSドメイン名
  • 16 ‐ Swap Server ‐ スワップサーバーのアドレス
  • 17 ‐ Root Path ‐ ルートディスクのパス名
  • 18 ‐ Extension File ‐ 追加のBOOTP情報のパス名
  • 19 ‐ Forward On/Off ‐ IPフォワーディングの有効/無効
  • 20 ‐ SrcRte On/Off ‐ ソースルーティングの有効/無効
  • 21 ‐ Policy Filter ‐ ルーティングポリシーフィルター
  • 22 ‐ Max DG Assembly ‐ データグラム再アセンブリの最大サイズ
  • 23 ‐ Default IP TTL ‐ IP TTLのデフォルト
  • 24 ‐ MTU Timeout ‐ MTUエージングタイムアウトのパス
  • 25 ‐ MTU Plateau ‐ MTU Plateau テーブルのパス
  • 26 ‐ MTU Interface ‐ インターフェイスのMTUサイズ
  • 27 ‐ MTU Subnet ‐ すべてのサブネットがローカル
  • 28 ‐ Broadcast Address ‐ ブロードキャストアドレス
  • 29 ‐ Mask Discovery ‐ マスクディスカバリーの実行
  • 30 ‐ Mask Supplier ‐ Provide Mask to Others
  • 31 ‐ Router Discovery ‐ ルーターディスカバリーの実行
  • 32 ‐ Router Request ‐ ルーター要請アドレス
  • 33 ‐ Static Route ‐ スタティックルーティングテーブル
  • 34 ‐ Trailers ‐ トレーラーのカプセル化
  • 35 ‐ ARP Timeout ‐ ARPキャッシュのタイムアウト
  • 36 ‐ Ethernet ‐ Ethernetのカプセル化
  • 37 ‐ Default TCP TTL ‐ TCP TTLのデフォルト
  • 38 ‐ Keepalive Time ‐ TCPキープアライブ間隔
  • 39 ‐ Keepalive Data ‐ TCPキープアライブ・ガーベッジ
  • 40 ‐ NIS Domain ‐ NISドメイン名
  • 41 ‐ NIS Servers ‐ NISサーバーアドレス
  • 42 ‐ NTP Servers ‐ NTPサーバーアドレス
  • 43 ‐ Vendor Specific ‐ ベンダー固有情報
  • 44 ‐ NETBIOS Name Srv ‐ NetBIOSネームサーバー
  • 45 ‐ NETBIOS Dist Srv ‐ NetBIOSデータグラムサーバー
  • 46 ‐ NETBIOS Node Type ‐ NetBIOSノードタイプ
  • 47 ‐ NETBIOS Scope ‐ NetBIOSスコープ
  • 48 ‐ X Window Font ‐ X Window Font Server
  • 49 ‐ X Window Manager ‐ X Window ディスプレイマネージャー
  • 50 ‐ Address Request ‐ 要求されたIPアドレス
  • 51 ‐ Address Time ‐ IPアドレスのリース時間
  • 52 ‐ Overload ‐ オーバーロード "sname" または "file"
  • 53 ‐ DHCP Msg Type ‐ DHCPメッセージタイプ
  • 54 ‐ DHCP Server Id ‐ DHCPサーバーのID
  • 55 ‐ Parameter List ‐ パラメーター要求リスト
  • 56 ‐ DHCP Message ‐ DHCPエラーメッセージ
  • 57 ‐ DHCP Max Msg Size ‐ DHCP最大メッセージサイズ
  • 58 ‐ Renewal Time ‐ DHCPリニューアル(T1)時間
  • 59 ‐ Rebinding Time ‐ DHCPリバインド(T2)時間
  • 60 ‐ Class Id ‐ クラスID
  • 61 ‐ Client Id ‐ クライアントID
  • 62 ‐ NetWare/IP Domain ‐ NetWare/IP ドメイン名 (RFC 2242)
  • 63 ‐ NetWare/IP Option ‐ NetWare/IP サブオプション (RFC 2242)
  • 64 ‐ NIS-Domain-Name ‐ NIS+ v3 クライアントドメイン名
  • 65 ‐ NIS-Server-Addr ‐ NIS+ v3 サーバーアドレス
  • 66 ‐ Server-Name ‐ TFTPサーバー名
  • 67 ‐ Bootfile-Name ‐ ブートファイル名
  • 68 ‐ Home-Agent-Addrs ‐ ホームエージェントアドレス
  • 69 ‐ SMTP-Server ‐ SMTPサーバーアドレス
  • 70 ‐ POP3-Server ‐ POP3サーバーアドレス
  • 71 ‐ NNTP-Server ‐ NNTPサーバーアドレス
  • 72 ‐ WWW-Server ‐ WWWサーバーアドレス
  • 73 ‐ Finger-Server ‐ Fingerサーバーアドレス
  • 74 ‐ IRC-Server ‐ IRCサーバーアドレス
  • 75 ‐ StreetTalk-Server ‐ StreetTalkサーバーアドレス
  • 76 ‐ STDA-Server ‐ STDAサーバーアドレス
  • 77 ‐ User-Class ‐ ユーザークラス情報 (RFC 3004)
  • 78 ‐ Directory Agent ‐ ディレクトリエージェント情報 (RFC 2610)
  • 79 ‐ Service Scope ‐ サービスロケーションエージェントスコープ (RFC 2610)
  • 80 ‐ Rapid Commit ‐ ラピッドコミット (RFC 4039)
  • 81 ‐ Client FQDN ‐ 完全修飾ドメイン名 (RFC 4702)
  • 82 ‐ Relay Agent Information ‐ リレーエージェント Information (RFC 3046)
  • 83 ‐ iSNS ‐ インターネットストレージネームサービス (RFC 4174)
  • 84 ‐ REMOVED/未割り当て (RFC 3679)
  • 85 ‐ NDS Servers ‐ Novellディレクトリサービス (RFC 2241)
  • 86 ‐ NDS Tree Name ‐ Novellディレクトリサービス (RFC 2241)
  • 87 ‐ NDS Context ‐ Novellディレクトリサービス (RFC 2241)
  • 88 ‐ BCMCSコントローラー ドメイン名リスト (RFC 4280)
  • 89 ‐ BCMCSコントローラー IPv4アドレスオプション (RFC 4280)
  • 90 ‐ Authentication ‐ 認証 (RFC 3118)
  • 91 ‐ クライアントの最新アクセス時刻 (RFC 4388)
  • 92 ‐ 関連するIPアドレス (RFC 4388)
  • 93 ‐ Client System ‐ クライアントシステムアーキテクチャー (RFC 4578)
  • 94 ‐ Client NDI ‐ クライアントネットワークデバイスインターフェイス (RFC 4578)
  • 95 ‐ LDAP ‐ Lightweight Directory Access Protocol (RFC 3679)
  • 96 ‐ REMOVED/未割り当て (RFC 3679)
  • 97 ‐ UUID/GUID ‐ UUID/ GUIDベースのクライアント識別子 (RFC 4578)
  • 98 ‐ User-Auth ‐ Open Groupのユーザー認証 (RFC 2485)
  • 99 ‐ GEOCONF_CIVIC (RFC 4776)
  • 100 ‐ PCode ‐ IEEE 1003.1 TZ 文字列 (RFC 4833)
  • 101 ‐ TCode ‐ TZデータベースへの参照 (RFC 4833)
  • 102-107 ‐ REMOVED/未割り当て (RFC 3679)
  • 108 ‐ REMOVED/未割り当て (RFC 3679)
  • 109 ‐ 未割り当て (RFC 3679)
  • 110 ‐ REMOVED/未割り当て (RFC 3679)
  • 111 ‐ 未割り当て (RFC 3679)
  • 112 ‐ Netinfo Address ‐ NetInfo親サーバーアドレス (RFC 3679)
  • 113 ‐ Netinfo Tag ‐ NetInfo親サーバータグ (RFC 3679)
  • 114 ‐ URL ‐ URL (RFC 3679)
  • 115 ‐ REMOVED/未割り当て (RFC 3679)
  • 116 ‐ Auto-Config ‐ DHCP自動設定 (RFC 2563)
  • 117 ‐ Name Service Search ‐ ネームサービス検索 (RFC 2937)
  • 118 ‐ Subnet Selection Option ‐ サブネット選択オプション (RFC 3011)
  • 119 ‐ Domain Search ‐ DNSドメインサーチリスト (RFC 3397)
  • 120 ‐ SIP Servers DHCP Option ‐ SIPサーバーのDHCPオプション (RFC 3361)
  • 121 ‐ Classless Static Route Option ‐ クラスレス スタティックルートのオプション (RFC 3442)
  • 122 ‐ CCC ‐ CableLabsのクライアント設定 (RFC 3495)
  • 123 ‐ GeoConf Option ‐ GeoConfオプション (RFC 6225)
  • 124 ‐ V-I Vendor Class ‐ ベンダー識別ベンダークラス (RFC 3925)
  • 125 ‐ V-I Vendor-Specific Information ‐ ベンダー識別ベンダー固有情報 (RFC 3925)
  • 126 ‐ REMOVED/未割り当て (RFC 3679)
  • 127 ‐ REMOVED/未割り当て (RFC 3679)
  • 128
    • PXE - 未定義(ベンダー固有) (RFC 4578)
    • Etherbootの署名 6バイト: E4:45:74:68:00:00
    • DOCSIS「フルセキュリティ」サーバーIPアドレス
    • TFTPサーバーIPアドレス (IP Phoneのソフトウェアのロード用)
  • 129
    • PXE - 未定義(ベンダー固有) (RFC 4578)
    • カーネルオプション 可変長文字列
    • コールサーバー IPアドレス
  • 130
    • PXE - 未定義(ベンダー固有) (RFC 4578)
    • Ethernetインターフェイス 可変長文字列
    • 判別文字列 (ベンダー識別用)
  • 131
    • PXE - 未定義(ベンダー固有) (RFC 4578)
    • リモート統計サーバーのIPアドレス
  • 132
    • PXE - 未定義(ベンダー固有) (RFC 4578)
    • IEEE 802.1Q VLAN ID
  • 133
    • PXE - 未定義(ベンダー固有) (RFC 4578)
    • IEEE 802.1D/p Layer 2 プライオリティ
  • 134
    • PXE - 未定義(ベンダー固有) (RFC 4578)
    • VoIPシグナリングとメディアストリーム用Diffservコードポイント(DSCP)
  • 135
    • PXE - 未定義(ベンダー固有) (RFC 4578)
    • HTTP Proxy for phone-specific applications
  • 136 ‐ OPTION_PANA_AGENT (RFC 5192)
  • 137 ‐ OPTION_V4_LOST (RFC 5223)
  • 138 ‐ OPTION_CAPWAP_AC_V4 ‐ CAPWAPアクセスコントローラーアドレス (RFC 5417)
  • 139 ‐ OPTION-IPv4_Address-MoS ‐ サブオプションのシリーズ (RFC 5678)
  • 140 ‐ OPTION-IPv4_FQDN-MoS ‐ サブオプションのシリーズ (RFC 5678)
  • 141 ‐ SIP UA Configuration Service Domains ‐ SIPユーザーエージェント設定用のドメイン名リスト (RFC 6011)
  • 142 ‐ OPTION-IPv4_Address-ANDSF ‐ DHCPv4用のANDSF IPv4アドレスオプション (RFC 6153)
  • 143 ‐ 未割り当て
  • 144 ‐ GeoLoc ‐ 不確実性を伴う位置情報 (RFC 6225)
  • 145 ‐ FORCERENEW_NONCE_CAPABLE (RFC 6704)
  • 146 ‐ RDNSS Selection ‐ RDNSSを選択するための情報 (RFC 6731)
  • 147-149 ‐ 未割り当て (RFC 3942)
  • 150
    • FTPサーバーアドレス (RFC 5859)
    • Etherboot
    • GRUBの設定パス名
  • 151 ‐ status-code ‐ ステータスコードと、ステータスを記述するオプションのNバイトのテクストメッセージ (RFC 6926)
  • 152 ‐ base-time ‐ メッセージが送信された絶対時間(1970(昭和45)年1月1日から) (RFC 6926)
  • 153 ‐ start-time-of-state ‐ クライアントが現在の状態に入ってからの秒数 (RFC 6926)
  • 154 ‐ query-start-time ‐ クエリー開始の絶対時間(1970(昭和45)年1月1日から) (RFC 6926)
  • 155 ‐ query-end-time ‐ クエリー完了の絶対時間(1970(昭和45)年1月1日から) (RFC 6926)
  • 156 ‐ dhcp-state ‐ IPアドレスの状態 (RFC 6926)
  • 157 ‐ data-source ‐ ローカル由来かリモートサーバー由来かの識別情報 (RFC 6926)
  • 158 ‐ OPTION_V4_PCP_SERVER ‐ PCPサーバーのIPアドレスリスト (RFC 7291)
  • 159-174 ‐ 未割り当て (RFC 3942)
  • 175 ‐ Etherboot (暫定的な割り当て - 2005-06-23)
  • 176 ‐ IP電話 (暫定的な割り当て - 2005-06-23)
  • 177
    • Etherboot (暫定的な割り当て - 2005-06-23)
    • PacketCable と CableHome (replaced by 122)
  • 178-207 ‐ 未割り当て (RFC 3942)
  • 208 ‐ PXELINUX Magic ‐ マジック文字列 = F1:00:74:7E (RFC 5071][Deprecated)
  • 209 ‐ Configuration File ‐ 設定ファイル (RFC 5071)
  • 210 ‐ Path Prefix ‐ パスプレフィックスオプション (RFC 5071)
  • 211 ‐ Reboot Time ‐ 再起動時間 (RFC 5071)
  • 212 ‐ OPTION_6RD ‐ N/4 6rd BRアドレスとOPTION_6RD (RFC 5969)
  • 213 ‐ OPTION_V4_ACCESS_DOMAIN ‐ アクセスネットワークドメイン名 (RFC 5986)
  • 214-219 ‐ 未割り当て
  • 220 ‐ Subnet Allocation Option ‐ サブネット割り当てオプション (RFC 6656)
  • 221 ‐ 仮想サブネットの選択(VSS)オプション (RFC 6607)
  • 222-223 ‐ 未割り当て (RFC 3942)
  • 224-254 ‐ 予約 (私的使用)
  • 255 ‐ End ‐ なし

IPアドレスの取得

手順

まず、コンフィギュレーション設定要求を開始し、DHCPサーバーより返信を待つ。

情報が届いたら、コンフィグレーション送付を開始し、DHCPサーバーよりACKを待つ。

DHCPサーバーよりACKが届いたら手順終了である。

DHCP情報の要求(DISCOVER)

まず、IPアドレスを要求するDHCPDISCOVERメッセージをブロードキャストで送信することから始める。

DHCPDISCOVERメッセージには、クライアント固有の識別情報、通常はMACアドレスを入れて送信する。IPv4であれば、ブロードキャストは255.255.255.255、クライアントの送信IPアドレスは0.0.0.0とする。

このメッセージでは、IPアドレス以外に各種のパラメーター、例えばネットマスク、DHCPサーバーのIPアドレス、DNSサーバーのIPアドレス、デフォルトルートのIPアドレス、ドメイン名、といったものをオプションで要求することができる。

DHCP情報の提供(OFFER)

DHCPDISCOVERメッセージを受け取ったDHCPサーバーは、応答に対してDHCPOFFERメッセージを返信する。

そしてクライアントは、応答したDHCPサーバーからDHCPOFFERメッセージを受け取る。DHCPOFFERメッセージには、DHCPサーバーからの「提案」が書かれている。まだ提案の段階であり、決定ではない。

DHCPOFFERメッセージには、使用可能なIPアドレスに加え、要求した様々な情報がオプションとして含まれる。

DHCP情報の受け入れ(REQUEST)

ネットワーク内には複数のDHCPサーバーがあって良い。

複数のDHCPサーバーが存在する場合、DHCPクライアントは幾つかのサーバーからDHCPOFFERメッセージを受けとる可能性があり、DHCPクライアントは受信したDHCPOFFERの中から一つを選ぶことになる。

サーバーを選択した場合、クライアントはその提案を受け入れ、選んだものをDHCPREQUESTメッセージで公知し、どのDHCPサーバーからの提案を選択したのかを通知する。

DHCPREQUESTは、受け入れたIPアドレス→DHCPサーバーのIPアドレスの通信とする。

DHCP情報の貸し出し(ACK)

DHCPREQUESTメッセージを受け取ったDHCPサーバーのうち、選択されたDHCPサーバーは、そのIPアドレスをクライアントへリース(貸し出し)する。選択されなかったDHCPサーバーは、提案したアドレスを、元のように使用可能に戻す。

選択されたDHCPサーバーは、クライアントに対して肯定応答(DHCPACK)を返信する。この応答には、要求した内容やリリース時間など追加の構成情報も含まれている。クライアントは、このACKメッセージの内容を使うことになる。

この手順をもって、クライアントはIPアドレスと構成パラメーターを有効期限が切れるまで使用できるようになる。

IPアドレスの更新

クライアントは、リース期間の半分を経過した時点で、必要に応じてリース期間の更新を始める。

クライアントはDHCPREQUESTメッセージをDHCPサーバーに送信し、更新の要求を行なう。

DHCPサーバーは、この要求を受け入れた場合はクライアントにDHCPACKメッセージを返信する。要求に応じられない場合は無視をする。

DHCPサーバーが要求に応答しない場合、クライアントは一定期間ごとにDHCPREQUESTを送信する。それでも応答がなく、リースの有効期限が切れてしまった場合、クライアントは使用していたIPアドレスを放棄しなければならない。更に通信したい場合には、DHCPDISCOVERの送信からやり直しとなる。

IPアドレスの破棄

クライアントは、リース期間中においてIPアドレスが不要になった場合、DHCPRELEASEメッセージをDHCPサーバーに送信することで、リースを終了する。

サーバーは、そのクライアントのIPアドレスを再び使用可能なアドレスとして管理下に置き、次回の要求にそなえる。

なお、DHCPRELEASEを送信した時点でそのクライアントにはIPアドレスが無くなることになるため、このDHCPRELEASEメッセージに対しDHCPサーバーは応答をしない(できない)。

コメントなどを投稿するフォームは、日本語対応時のみ表示されます


KisoDic通信用語の基礎知識検索システム WDIC Explorer Version 7.04a (27-May-2022)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club