DHCP概要
この記事の説明
この記事ではDHCPに関する様々な情報をまとめたメモになります
DHCPv6は範囲外です
学習のために執筆しているためAIは使用しません
この記事で登場する主要なRFC
| RFC | 説明 |
|---|---|
| RFC 903 | RARP |
| RFC 951 | BOOTP |
| RFC 2131 | DHCP |
DHCPと歴史的に関係のあるプロトコル
DHCPはBOOTPを拡張したプロトコルです
BOOTPはRARPを改良したプロトコルです
そのため、まずはBOOTPとRARPについて説明します
RARP
RARPはMACアドレスに対応するIPアドレスを配布するためのリンク層のプロトコルです
ホストはMACアドレスをブロードキャストし、サーバは対応するIPアドレスを応答します

RARPにはいくつかの問題点が指摘されています
・異なるネットワークにいるホストに対してRARPでIPアドレスを配布することができない
RARPはリンク層のアルゴリズムであるため一つのネットワークに一つのRARPサーバが必要になります
当然、異なるネットワークに対してもIP配布できる方が経済的です
・RARPをサーバ上で実装することが困難
RARPを実装するためにはMACアドレスを参照する必要があります
MACアドレスはイーサネットフレームヘッダに記載されており、これを操作するのは多くの場合ドライバになります
これはサーバでのプロトコルの実装を困難にしていました
これらの課題を解決したプロトコルがBOOTPです
BOOTP
BOOTPはUDPで動作するプロトコルです
クライアントはBOOTREQUESTパケットをブロードキャストし、サーバは67番ポートで受信します
サーバはBOOTREPLYパケットを送信し、クライアントは68番ポートで受信します

このとき、サーバからクライアントへのBOOTREPLYパケットの送信方法は以下の方法を採ることができます
・BOOTREQUESTにクライアントのIPアドレスが含まれている場合、そのIPアドレスに送信する
・BOOTREQUESTにクライアントのIPアドレスが含まれていない場合、候補は以下
・ARPキャッシュを更新できる場合、ARPキャッシュを更新してユニキャストで送信
・ARPキャッシュを更新できない場合、ブロードキャストで送信
また、BOOTPにはいわゆるリレーエージェントと呼ばれる転送機能がオプションとして定められています
リレーエージェントとして動作するサーバはゲートウェイと呼ばれます
クライアントはBOOTREQUESTパケットをブロードキャストし、ゲートウェイは67番ポートで受信します
ゲートウェイはBOOTREQUESTを受信するとそれをサーバへ転送します
サーバはBOOTREPLYパケットをゲートウェイに送信し、ゲートウェイは68番ポートで受信します
ゲートウェイは受信したパケットをクライアントに送信します
この転送機能により異なるネットワークに対してIPアドレスを配布することができます
運用上はネットワーク機器がBOOTPゲートウェイの機能を持っており、それらを使うことが多いと思います
BOOTPのパケットフォーマット
DHCPはBOOTPパケットを拡張したフォーマットで通信するのでBOOTPのパケットフォーマットを以下に記載しておきます
| 種類 | バイト数 | 説明 | 補足 |
|---|---|---|---|
| op | 1 | op code | BOOTREQUEST: 1、BOOTREPLY: 2 |
| htype | 1 | ハードウェアタイプ | イーサネットは1 |
| hlen | 1 | ハードウェアアドレスの長さ | イーサネットは6 |
| hops | 1 | ホップ数 | ゲートウェイは+1する |
| xid | 4 | ID | クライアントが乱数で埋める |
| secs | 2 | ブートまでの時間 | クライアントが埋める |
| unused | 2 | 使用しない | |
| ciaddr | 4 | クライアントのIPアドレス | クライアントが埋める |
| yiaddr | 4 | クライアントに付与するIPアドレス | サーバが埋める |
| siaddr | 4 | サーバのIPアドレス | サーバが埋める |
| giaddr | 4 | ゲートウェイのIPアドレス | ゲートウェイが埋める |
| chaddr | 16 | クライアントのハードウェアアドレス | クライアントが埋める |
| sname | 64 | サーバのホスト名 | オプション |
| file | 128 | ブートファイル名 | null許容 |
| vend | 64 | ベンダ拡張用 | オプション |
ハードウェアタイプについては定期的にAssigned NumbersというRFCで定義されていましたが、現在はRFC 3232により廃止されています
DHCP
DHCPはBOOTPを拡張してIPアドレスやブート用のファイル以外にも様々な設定を動的に配布することができるプロトコルです
クライアントはDHCPDISCOVERをブロードキャストで送信します
DHCPDISCOVERを受信したサーバはDHCPOFFERをクライアントに送信します
DHCPOFFERを受信したクライアントはDHCPREQUESTをブロードキャストで送信します
DHCPREQUESTを受信したサーバはDHCPACKをクライアントに送信します

BOOTPと比較してDHCPREQUEST以降の通信が追加されています
これにより同一セグメント上に複数のDHCPサーバが存在する場合でも設定の配布が可能になり、サーバの冗長化などが可能になります
その他にも多数の機能が存在しますが、必要になったら説明を追加します
DHCPはBOOTPサーバとしても正しく動作しなければいけません
また、BOOTPでゲートウェイと呼ばれていた機能はDHCPではリレーエージェントと呼びます
DHCPパケットフォーマット
DHCPパケットのフォーマットは以下です
| 種類 | バイト数 | 説明 | 補足 |
|---|---|---|---|
| op | 1 | op code | BOOTREQUEST: 1、BOOTREPLY: 2 |
| htype | 1 | ハードウェアタイプ | イーサネットは1 |
| hlen | 1 | ハードウェアアドレスの長さ | イーサネットは6 |
| hops | 1 | ホップ数 | リレーエージェントは+1する |
| xid | 4 | ID | クライアントが乱数で埋める |
| secs | 2 | IPアドレス取得までの時間 | クライアントが埋める |
| flags | 2 | ユニキャスト通信可能かのフラグ | ユニキャスト通信可能:0、不可能:1 |
| ciaddr | 4 | クライアントのIPアドレス | BOUND、RENEW、REBINDING状態のクライアントが埋める |
| yiaddr | 4 | クライアントに付与するIPアドレス | サーバが埋める |
| siaddr | 4 | 以降の工程でアクセスするべきIPアドレス | サーバが埋める |
| giaddr | 4 | リレーエージェントのIPアドレス | ゲートウェイが埋める |
| chaddr | 16 | クライアントのハードウェアアドレス | クライアントが埋める |
| sname | 64 | サーバのホスト名 | オプション |
| file | 128 | ブートファイル名 | null許容 |
| options | 可変 | オプションパラメータ | オプションの種類は最大256個 |
BOOTPとの主な違いはflagsが定義されていることとoptionsが可変になっていることです
DHCPには未定義のものや将来のために予約されているものを含めて256個のオプションが存在します
DHCPでやり取りされる多くの情報はこのoptionsに含まれています
optionsはマジックナンバー'99 130 83 99'で開始し、optionsの終端であることを示すためのendオプション'255'で終了します
また、BOOTPとの互換性のため最小で64バイトの大きさを持ちます
DHCPオプション概要
DHCPオプションは種別、長さ、値を持つTLV形式です
ただし、一部例外的な形式のオプションもあります
DHCPではBOOTPのオプションも利用可能です
BOOTPでは種別のことをTagと呼びます
DHCPでは種別のことをCodeと呼びます
正確なオプション情報はIANAを参照してください
以下はDHCPオプションの概要です
私の手抜きでそこそこ誤情報が載っているので注意してください
| Code | Len | Value | 説明 | 定義 |
|---|---|---|---|---|
| 0 | - | - | パディング、アライメント用 | RFC 1497 |
| 1 | 4 | Subnet Mask | クライアントのサブネットマスク | RFC 1497 |
| 2 | 4 | Time Offset | UTCとの差秒、singed 32bit integer | RFC 1497 |
| 3 | n | Router | ルータのIPアドレスのリスト(デフォルトルート) | RFC 1497 |
| 4 | n | Time Server | タイムサーバのIPアドレスのリスト | RFC 1497 |
| 5 | n | IEN-116 Name Server | IEN 116ネームサーバのIPアドレスのリスト | RFC 1497 |
| 6 | n | Domain Name Server | DNSサーバのIPアドレスのリスト | RFC 1497 |
| 7 | n | Log Server | ログサーバのIPアドレスのリスト | RFC 1497 |
| 8 | n | Quotes Server | QOTDサーバのIPアドレスのリスト | RFC 1497 |
| 9 | n | LPR Server | line printerサーバのIPアドレスのリスト | RFC 1497 |
| 10 | n | Impress Server | Impress imageサーバのIPアドレスのリスト | RFC 1497 |
| 11 | n | Resource Location Server | Resource LoacationサーバのIPアドレスのリスト | RFC 1497 |
| 12 | n | Host Name | ホスト名 | RFC 1497 |
| 13 | 2 | Boot File Size | ブートファイルサイズのバイト数、16bit integer | RFC 1497 |
| 14 | n | Merit Dump File | クラッシュ時にダンプするファイルのパス | RFC 1497 |
| 15 | n | Domain Name | ドメイン名 | RFC 1497 |
| 16 | 4 | Swap Server | スワップサーバのIPアドレス | RFC 1497 |
| 17 | n | Root path | ルートディスクのパス | RFC 1497 |
| 18 | n | Extensions path | TFTPで取得するファイル名 | RFC 1497 |
| 19 | 1 | IP Forwarding | IP Forwardingの有効化 | RFC 2132 |
| 20 | 1 | Non-Local Source Routing | Non-local source routingによるIP Forwardingの有効化 | RFC 2132 |
| 21 | n | Policy Filter | Non-local source routingのpolicy filterのリスト | RFC 2132 |
| 22 | 2 | Maximum Datagram Reassembly Size | 最大リアセンブルサイズ | RFC 2132 |
| 23 | 1 | TTL | IPデータグラムのTTL | RFC 2132 |
| 24 | 4 | Timeout | Path MTUを使用している場合のタイムアウト秒 | RFC 2132 |
| 25 | n | MTU size | Path MTUサイズ | RFC 2132 |
| 26 | 2 | MTU | インタフェースのMTU | RFC 2132 |
| 27 | 1 | All subnets are local | サブネット内でMTUが同一か | RFC 2132 |
| 28 | 4 | Broadcast Address | サブネットのブロードキャストアドレス | RFC 2132 |
| 29 | 1 | Perform Mask Discovery | クライアントがICMPでサブネットマスクを要求する | RFC 2132 |
| 30 | 1 | Mask Supplier | クライアントがICMPでサブネットマスクに応答する | RFC 2132 |
| 31 | 1 | Perform Router Discovery | クライアントがICMP Router Discoveryを使用する | RFC 2132 |
| 32 | 4 | Router Solicitation Address | ルータ探索のためのアドレス | RFC 2132 |
| 33 | n | Static Route | スタティックルートのリスト | RFC 2132 |
| 34 | 1 | Trailer Encapsulation | Trailerカプセル化を行う | RFC 2132 |
| 35 | 4 | ARP Cache Timeout | ARP Cacheのタイムアウト | RFC 2132 |
| 36 | 1 | Ethernet Encapsulation | RFC894かIEEE 802.3のどちらでカプセル化するか | RFC 2132 |
| 37 | 1 | TCP Default TTL | デフォルトTTL | RFC 2132 |
| 38 | 4 | TCP Keepalive Interval | Keepalive(秒) | RFC 2132 |
| 39 | 1 | TCP Keepalive Garbage | KeepaliveにGarbage octetを含めるか | RFC 2132 |
| 40 | n | NIS Domain Name | Network Information Serviceのドメイン名 | RFC 2132 |
| 41 | n | NIS Address | Network Information ServiceのIPアドレス | RFC 2132 |
| 42 | n | NTP Servers | NTPサーバのアドレスのリスト | RFC 2132 |
| 43 | n | Vendor-specific information | サーバのベンダ固有情報 | RFC 2132 |
| 44 | n | NetBIOS name server | NBNSのIPアドレスのリスト | RFC 2132 |
| 45 | n | NetBIOS distribution server | NBDDのIPアドレスのリスト | RFC 2132 |
| 46 | 1 | NetBIOS Node Type | NetBIOSクライアントのノードタイプ | RFC 2132 |
| 47 | n | NetBIOS Scope | NetBIOSのスコープ | RFC 2132 |
| 48 | n | X Window System Font Server | XのフォントサーバのIPアドレスのリスト | RFC 2132 |
| 49 | n | X Window System Display Manager | XのディスプレイマネージャのIPアドレスのリスト | RFC 2132 |
| 50 | 4 | Requested IP Address | クライアントが要求する特定のIPアドレス | RFC 2132 |
| 51 | 4 | IP Address Lease Time | IPアドレスのリースタイム | RFC 2132 |
| 52 | 1 | Option Overload | 'sname'、'file'を上書きしているか | RFC 2132 |
| 53 | 1 | DHCP Message Type | DHCPメッセージの種類 | RFC 2132 |
| 54 | 4 | Sever Identifier | DHCPサーバのIPアドレス | RFC 2132 |
| 55 | n | Parameter Request List | クライアントの要求するオプションのリスト | RFC 2132 |
| 56 | n | Message | エラーメッセージ | RFC 2132 |
| 57 | 2 | Maximum DHCP Message Size | DHCPメッセージの最大長(最小値 576 octet) | RFC 2132 |
| 58 | 4 | Renewal Time | RENEWING状態になるまでの時間(秒) | RFC 2132 |
| 59 | 4 | Rebinding Time | REBINDING状態になるまでの時間(秒) | RFC 2132 |
| 60 | n | Vendor class identifier | クライアントのベンダ情報 | RFC 2132 |
| 61 | n | Client-identifier | クライアントの識別情報 | RFC 2132 |
| 62 | n | NetWare/IP Domain Name | NetWare/IPのドメイン名 | RFC 2242 |
| 63 | n | NetWare/IP Information | NetWare/IPの情報 | RFC 2242 |
| 64 | n | NIS+ Domain | NIS+のドメイン名 | RFC 2132 |
| 65 | n | NIS+ Servers | NIS+のサーバのIPアドレスのリスト | RFC 2132 |
| 66 | n | TFTP server name | TFTPサーバのホスト名 | RFC 2132 |
| 67 | n | Bootfile name | ブートファイル名 | RFC 2132 |
| 68 | n | Mobile IP Home Agent | ホームエージェントのIPアドレスのリスト | RFC 2132 |
| 69 | n | SMTP Server | SMTPサーバのIPアドレスのリスト | RFC 2132 |
| 70 | n | POP3 Server | POP3サーバのIPアドレスのリスト | RFC 2132 |
| 71 | n | NNTP Server | NNTPサーバのIPアドレスのリスト | RFC 2132 |
| 72 | n | WWW Server | WWWサーバのIPアドレスのリスト | RFC 2132 |
| 73 | n | Finger Server | Finger ServerのIPアドレスのリスト | RFC 2132 |
| 74 | n | IRC Server | IRCサーバのIPアドレスのリスト | RFC 2132 |
| 75 | n | StreetTalk Server | StreetTalkのサーバのIPアドレスのリスト | RFC 2132 |
| 76 | n | StreetTalk Directory Assistance Server | STDAサーバのIPアドレスのリスト | RFC 2132 |
| 77 | n | User Class | ユーザの組織・部門などの情報 | RFC 3004 |
| 78 | n | SLP Directory Agent | サービスロケーションプロトコルにおけるディレクトリエージェントのIPアドレスのリスト | RFC 2610 |
| 79 | n | SLP Service Scope | サービスロケーションプロトコルにおけるスコープ | RFC 2610 |
| 80 | 0 | - | メッセージ往復1回によるIPアドレス割り当ての使用 | RFC 4039 |
| 81 | n | FQDN | クライアントのFQDN | RFC 4702 |
| 82 | n | DHCP Relay Agent Information | リレーエージェントの情報 | RFC 3046 |
| 83 | n | iSNS | Internet Storage Name Service | RFC 4174 |
| 84 | - | - | 未定義 | RFC 3679 |
| 85 | n | NDS Servers | Novell社のディレクトリサーバのIPアドレスのリスト | RFC 2241 |
| 86 | n | NDS Tree Name | Novell社のディレクトリサーバのツリー名 | RFC 2241 |
| 87 | n | NDS Context | Novell社のディレクトリサーバの初期コンテキスト | RFC 2241 |
| 88 | n | BCMCS Controller Domain Name list | モバイル用途 | RFC 4280 |
| 89 | n | BCMCS Controller IPv4 address option | モバイル用途 | RFC 4280 |
| 90 | n | Authentication | 認証情報 | RFC 3118 |
| 91 | 4 | Seconds | 最後の通信からの経過時間 | RFC 4388 |
| 92 | n | Address | リースした全てのアドレスのリスト | RFC 4388 |
| 93 | 2 | Client system architecture | CPUのアーキテクチャ | RFC 4578 |
| 94 | 3 | Client network interface identifier | UNDIのバージョン | RFC 4578 |
| 95 | n | LDAP Servers | LDAPサーバのIPアドレスのリスト | RFC 3679 |
| 96 | - | - | 未定義 | RFC 3679 |
| 97 | Client machine identifier | 17 | クライアントのUUID | RFC 4578 |
| 98 | n | User Athentication | BASIC認証 | RFC 2485 |
| 99 | n | Civic Location | 位置情報 | RFC 4776 |
| 100 | n | TZ-POSIX | タイムゾーン | RFC 4833 |
| 101 | n | TZ-Database | タイムゾーン | RFC 4833 |
| 102 | - | - | 未定義 | RFC 3679 |
| 103 | - | - | 未定義 | RFC 3679 |
| 104 | - | - | 未定義 | RFC 3679 |
| 105 | - | - | 未定義 | RFC 3679 |
| 106 | - | - | 未定義 | RFC 3679 |
| 107 | - | - | 未定義 | RFC 3679 |
| 108 | n | Seconds | IPv6のみ使用する | RFC 8925 |
| 109 | 16 | IPv6 Address | クライアントのIPv6アドレス | RFC 8539 |
| 110 | - | - | 未定義 | RFC 3679 |
| 111 | - | - | 未定義 | RFC 3679 |
| 112 | n | Netinfo Address | NetinfoのIPアドレスのリスト | RFC 3679 |
| 113 | n | Netinfo Tag | Netinfoのタグ | RFC 3679 |
| 114 | n | URL | URL | RFC 3679 |
| 115 | - | - | 未定義 | RFC 3679 |
| 116 | 1 | Auto-Configure | ステートレス自動構成の抑制 | RFC 2563 |
| 117 | n | Name services | ネームサーバの優先順位 | RFC 2937 |
| 118 | 4 | Subnet Selection | サブネットアドレス | RFC 3011 |
| 119 | n | Domain Search | サーチリスト | RFC 3397 |
| 120 | n | SIP server | SIPサーバのドメイン名またはIPアドレス | RFC 3361 |
| 121 | n | Router | スタティックルート | RFC 3442 |
| 122 | n | CableLabs | ケーブルテレビ関連の設定 | RFC 3495 |
| 123 | n | GenConf | 地理情報 | RFC 6225 |
| 124 | n | Vendor-Identifying Vendor Class | ベンダ識別情報 | RFC 3925 |
| 125 | n | Vendor-Identifying Vendor-Specific Information | ベンダ固有オプション | RFC 3925 |
| 126 | - | - | 未定義 | RFC 3679 |
| 127 | - | - | 未定義 | RFC 3679 |
| 128-254 | - | - | 色々定義されているが省略 | RFC 1497 |
| 255 | - | - | optionsの終端 | RFC 1497 |
DHCPメッセージの種類
DHCPでやり取りされるメッセージはoption 53の値によって分類できます
2025年4月現在では18種類のメッセージタイプが存在します
RFC 2132では以下の8種類のメッセージタイプが定義されています
| 送信者 | Message Type | Value | 説明 |
|---|---|---|---|
| Client | DHCPDISCOVER | 1 | DHCPサーバに自信をブロードキャストで知らせる |
| Server | DHCPOFFER | 2 | DHCPDISCOVERに対する応答 |
| Client | DHCPREQUEST | 3 | パラメータの要求 |
| Clinet | DHCPDECLINE | 4 | アドレスがすでに利用されていることの通知 |
| Server | DHCPACK | 5 | パラメータの設定 |
| Server | DHCPNAK | 6 | クライアントのアドレスが無効であることの通知 |
| Client | DHCPRELEASE | 7 | リースの終了 |
| Client | DHCPINFORM | 8 | クライアントがすでにアドレスを設定済みであることの通知 |
optionの50番から61番はDHCPメッセージ用のオプションです
そのため、各メッセージタイプに対して設定の要否、可否、値などが定められています
各メッセージタイプにおいてRFC 2131で定められている値とオプションは以下です
・DHCPDISCOVER
| 種類 | 値 |
|---|---|
| op | 1 (BOOTREQUEST) |
| htype | 1 (ethernet) |
| hlen | 6 (ethernet) |
| hops | 0 |
| xid | 乱数 |
| secs | 0またはDHCP処理開始までの時間(秒) |
| flags | サーバにブロードキャストで応答を要求する場合は最上位ビットに1、それ以外0 |
| ciaddr | 0 |
| yiaddr | 0 |
| siaddr | 0 |
| giaddr | 0 |
| chaddr | MACアドレス |
| sname | オプション |
| file | オプション |
| option | code | 要否、可否、値 |
|---|---|---|
| Requested IP address | 50 | MAY |
| IP address lease time | 51 | MAY |
| Use 'file'/'sname' fields | 52 | MAY |
| DHCP message type | 53 | 1 (DHCPDISCOVER) |
| Server identifier | 54 | MUST NOT |
| Parameter request list | 55 | MAY |
| Message | 56 | SHOULD NOT |
| Maximum message size | 57 | MAY |
| Renewal Time | 58 | MAY |
| Rebinding Time | 59 | MAY |
| Vendor class identifier | 60 | MAY |
| Client identifier | 61 | MAY |
| Site-specific | - | MAY |
| All others | - | MAY |
・DHCPOFFER
| 種類 | 値 |
|---|---|
| op | 2 (BOOTREPLY) |
| htype | 1 (ethernet) |
| hlen | 6 (ethernet) |
| hops | 0 |
| xid | DHCPDISCOVERと同じ値に設定 |
| secs | 0 |
| flags | DHCPDISCOVERと同じ値に設定 |
| ciaddr | 0 |
| yiaddr | クライアントに付与するIPアドレス |
| siaddr | 次のブートストラップサーバのIPアドレス |
| giaddr | DHCPDISCOVERと同じ値に設定 |
| chaddr | DHCPDISCOVERと同じ値に設定 |
| sname | オプション |
| file | オプション |
| option | code | 要否、可否、値 |
|---|---|---|
| Requested IP address | 50 | MUST NOT |
| IP address lease time | 51 | MUST |
| Use 'file'/'sname' fields | 52 | MAY |
| DHCP message type | 53 | 2 (DHCPOFFER) |
| Server identifier | 54 | MUST |
| Parameter request list | 55 | MUST NOT |
| Message | 56 | SHOULD |
| Maximum message size | 57 | MUST NOT |
| Renewal Time | 58 | MAY |
| Rebinding Time | 59 | MAY |
| Vendor class identifier | 60 | MAY |
| Client identifier | 61 | MUST NOT |
| Site-specific | - | MAY |
| All others | - | MAY |
・DHCPREQUEST
| 種類 | 値 |
|---|---|
| op | 1 (BOOTREQUEST) |
| htype | 1 (ethernet) |
| hlen | 6 (ethernet) |
| hops | 0 |
| xid | DHCPOFFERと同じ値にセット |
| secs | 0またはDHCP処理開始までの時間(秒) |
| flags | サーバにブロードキャストで応答を要求する場合は最上位ビットに1、それ以外0 |
| ciaddr | 0またはクライアントのネットワークアドレス |
| yiaddr | 0 |
| siaddr | 0 |
| giaddr | 0 |
| chaddr | MACアドレス |
| sname | オプション |
| file | オプション |
| option | code | 要否、可否、値 |
|---|---|---|
| Requested IP address | 50 | MUST (SELECTING, INIT-REBOOT) MUST NOT (BOUND, RENEWING) |
| IP address lease time | 51 | MAY |
| Use 'file'/'sname' fields | 52 | MAY |
| DHCP message type | 53 | 3 (DHCPREQUEST) |
| Server identifier | 54 | MUST (after SELECTING) MUST NOT(after INIT-REBOT, BOUNT, RENEWING, REBINDING) |
| Parameter request list | 55 | MAY |
| Message | 56 | SHOULD NOT |
| Maximum message size | 57 | MAY |
| Renewal Time | 58 | MAY |
| Rebinding Time | 59 | MAY |
| Vendor class identifier | 60 | MAY |
| Client identifier | 61 | MAY |
| Site-specific | - | MAY |
| All others | - | MAY |
・DHCPDECLINE
| 種類 | 値 |
|---|---|
| op | 1 (BOOTREQUEST) |
| htype | 1 (ethernet) |
| hlen | 6 (ethernet) |
| hops | 0 |
| xid | 乱数 |
| secs | 0 |
| flags | 0 |
| ciaddr | 0 |
| yiaddr | 0 |
| siaddr | 0 |
| giaddr | 0 |
| chaddr | MACアドレス |
| sname | 不使用 |
| file | 不使用 |
| option | code | 要否、可否、値 |
|---|---|---|
| Requested IP address | 50 | MUST |
| IP address lease time | 51 | MUST NOT |
| Use 'file'/'sname' fields | 52 | MAY |
| DHCP message type | 53 | 4 (DHCPDECLINE) |
| Server identifier | 54 | MUST |
| Parameter request list | 55 | MUST NOT |
| Message | 56 | SHOULD |
| Maximum message size | 57 | MUST NOT |
| Renewal Time | 58 | MUST NOT |
| Rebinding Time | 59 | MUST NOT |
| Vendor class identifier | 60 | MUST NOT |
| Client identifier | 61 | MAY |
| Site-specific | - | MUST NOT |
| All others | - | MUST NOT |
・DHCPACK
| 種類 | 値 |
|---|---|
| op | 2 (BOOTREPLY) |
| htype | 1 (ethernet) |
| hlen | 6 (ethernet) |
| hops | 0 |
| xid | DHCPREQUESTと同じ値にセット |
| secs | 0 |
| flags | DHCPREQUESTと同じ値にセット |
| ciaddr | 0またはDHCPREQUESTと同じ値にセット |
| yiaddr | クライアントに付与するIPアドレス |
| siaddr | 次のブートストラップサーバのIPアドレス |
| giaddr | DHCPREQUESTと同じ値にセット |
| chaddr | DHCPREQUESTと同じ値にセット |
| sname | オプション |
| file | オプション |
| option | code | 要否、可否、値 |
|---|---|---|
| Requested IP address | 50 | MUST NOT |
| IP address lease time | 51 | MUST |
| Use 'file'/'sname' fields | 52 | MAY |
| DHCP message type | 53 | 5 (DHCPACK) |
| Server identifier | 54 | MUST |
| Parameter request list | 55 | MUST NOT |
| Message | 56 | SHOULD |
| Maximum message size | 57 | MUST NOT |
| Renewal Time | 58 | MAY |
| Rebinding Time | 59 | MAY |
| Vendor class identifier | 60 | MAY |
| Client identifier | 61 | MUST NOT |
| Site-specific | - | MAY |
| All others | - | MAY |
・DHCPNAK
| 種類 | 値 |
|---|---|
| op | 2 (BOOTREPLY) |
| htype | 1 (ethernet) |
| hlen | 6 (ethernet) |
| hops | 0 |
| xid | DHCPREQUESTと同じ値にセット |
| secs | 0 |
| flags | DHCPREQUESTと同じ値にセット |
| ciaddr | 0 |
| yiaddr | 0 |
| siaddr | 0 |
| giaddr | DHCPREQUESTと同じ値にセット |
| chaddr | DHCPREQUESTと同じ値にセット |
| sname | 不使用 |
| file | 不使用 |
| option | code | 要否、可否、値 |
|---|---|---|
| Requested IP address | 50 | MUST NOT |
| IP address lease time | 51 | MUST NOT |
| Use 'file'/'sname' fields | 52 | MUST NOT |
| DHCP message type | 53 | 6 (DHCPNAK) |
| Server identifier | 54 | MUST |
| Parameter request list | 55 | MUST NOT |
| Message | 56 | SHOULD |
| Maximum message size | 57 | MUST NOT |
| Renewal Time | 58 | MUST NOT |
| Rebinding Time | 59 | MUST NOT |
| Vendor class identifier | 60 | MAY |
| Client identifier | 61 | MAY |
| Site-specific | - | MUST NOT |
| All others | - | MUST NOT |
・DHCPRELEASE
| 種類 | 値 |
|---|---|
| op | 1 (BOOTREQUEST) |
| htype | 1 (ethernet) |
| hlen | 6 (ethernet) |
| hops | 0 |
| xid | 乱数 |
| secs | 0 |
| flags | 0 |
| ciaddr | クライアントのアドレス |
| yiaddr | 0 |
| siaddr | 0 |
| giaddr | 0 |
| chaddr | MACアドレス |
| sname | 不使用 |
| file | 不使用 |
| option | code | 要否、可否、値 |
|---|---|---|
| Requested IP address | 50 | MUST NOT |
| IP address lease time | 51 | MUST NOT |
| Use 'file'/'sname' fields | 52 | MAY |
| DHCP message type | 53 | 7 (DHCPRELEASE) |
| Server identifier | 54 | MUST |
| Parameter request list | 55 | MUST NOT |
| Message | 56 | SHOULD |
| Maximum message size | 57 | MUST NOT |
| Renewal Time | 58 | MUST NOT |
| Rebinding Time | 59 | MUST NOT |
| Vendor class identifier | 60 | MUST NOT |
| Client identifier | 61 | MAY |
| Site-specific | - | MUST NOT |
| All others | - | MUST NOT |
・DHCPINFORM
| 種類 | 値 |
|---|---|
| op | 1 (BOOTREQUEST) |
| htype | 1 (ethernet) |
| hlen | 6 (ethernet) |
| hops | 0 |
| xid | 乱数 |
| secs | 0またはDHCP処理開始までの時間(秒) |
| flags | サーバにブロードキャストで応答を要求する場合は最上位ビットに1、それ以外0 |
| ciaddr | クライアントのアドレス |
| yiaddr | 0 |
| siaddr | 0 |
| giaddr | 0 |
| chaddr | MACアドレス |
| sname | オプション |
| file | オプション |
| option | code | 要否、可否、値 |
|---|---|---|
| Requested IP address | 50 | MUST NOT |
| IP address lease time | 51 | MUST NOT |
| Use 'file'/'sname' fields | 52 | MAY |
| DHCP message type | 53 | 8 (DHCPINFORM) |
| Server identifier | 54 | MUST NOT |
| Parameter request list | 55 | MAY |
| Message | 56 | SHOULD NOT |
| Maximum message size | 57 | MAY |
| Renewal Time | 58 | MAY |
| Rebinding Time | 59 | MAY |
| Vendor class identifier | 60 | MAY |
| Client identifier | 61 | MAY |
| Site-specific | - | MAY |
| All others | - | MAY |
Discussion