动态主机设置协议

动态主机設定協定（，缩写：DHCP），又称动态主机组态协定，是一個用于IP网络的网络协议，位于OSI模型的应用层，使用UDP协议工作，主要有兩個用途：
 用于內部網路或網絡服務供應商自動分配IP地址給用戶
 用于內部網路管理員對所有電腦作中央管理

适用性 

DHCP用一台或一组DHCP服务器来管理网络参数的分配，这种方案具有容错性。即使在一个仅拥有少量机器的网络中，DHCP仍然是有用的，因为一台机器可以几乎不造成任何影响地被增加到本地网络中。

甚至对于那些很少改变地址的伺服器來說，DHCP仍然被建议用来设置它们的地址。如果服务器需要被重新分配地址（RFC 2071）的时候，就盡可能不去做更改。对于一些设备，如路由器和防火墙，则不應使用DHCP。

DHCP也可用于直接为服务器和桌面计算机分配地址，並且透過一個PPP代理，也可为撥接及寬頻的主机，以及住宅NAT网关和路由器分配地址。DHCP一般不适用于使用在无边际路由器和DNS服务器上。

歷史 

DHCP於1993年10月成為標準協議，其前身是BOOTP協議。當前的DHCP定義可以在 RFC 2131 中找到，而基於IPv6的DHCPv6可以在 RFC 3315 中找到。

原理 

动态主机設定協定（DHCP）是一种使网络管理员能够集中管理和自动分配IP网络地址的通信协议。在IP网络中，每个连接Internet的设备都需要分配唯一的IP地址。DHCP使网络管理员能从中心结点监控和分配IP地址。当某台计算机移到网络中的其它位置时，能自动收到新的IP地址。

DHCP使用了租约的概念，或称为计算机IP地址的有效期。租用时间是不定的，主要取决于用户在某地连接Internet需要多久，这对于教育行业和其它用户频繁改变的环境是很实用的。透过较短的租期，DHCP能够在一个计算机比可用IP地址多的环境中动态地重新配置网络。DHCP支持为计算机分配静态地址，如需要永久性IP地址的Web服务器。

DHCP和另一个网络IP管理协议BOOTP类似。目前两种配置管理协议都得到了普遍使用，其中DHCP更为先进。某些操作系统，如Windows Server，带有DHCP服务器。

协议结构 

 Op：消息操作代码，既可以是引导请求（BOOTREQUEST）也可以是引导答复（BOOTREPLY）
 Htype：硬件地址类型
 Hlen：硬件地址长度
 Xid：处理ID
 Secs：从获取到IP地址或者续约过程开始到现在所消耗的时间
 Flags：标记
 Ciaddr：客户机IP地址
 Yiaddr：“你的”（客户机）IP地址
 Siaddr：在bootstrap中使用的下一台服务器的IP地址
 Giaddr：用于导入的接替代理IP地址
 Chaddr：客户机硬件
 Sname：任意服务器主机名称，空终止符
 File：DHCP发现协议中的引导文件名、空终止符、属名或者空，DHCP供应协议中的受限目录路径名
 Options：可选参数字段。参考定义选择列表中的选择文件

技术细节 

DHCP统一使用两个IANA分配的端口作为BOOTP：服务器端使用67/udp，客户端使用68/udp。

DHCP运行分为四个基本过程，分别为请求IP租约、提供IP租约、选择IP租约和确认IP租约。

客户在获得了一个IP地址以后，就可以发送一个ARP请求来避免由于DHCP服务器地址池重叠而引发的IP冲突。

DHCP释放（RELEASE）
客户端向DHCP服务器发送一个请求以释放DHCP资源，并注销其IP地址。鉴于客户端更多的时候并不清楚何时用户会将其从网络中移除，此协议不会託管“DHCP释放的发送”。

DHCP NAK
服务器回复客户，客户要求的IP不能被分配。

客户端配置参数 

DHCP伺服器會提供一些選擇性的配置項目供DHCP客戶端設定。在RFC 2132文件裡面有提到這個詳細的內容。。

設定選項 
DHCP Option 60可以被DHCP客戶端用來做為辨識供應商及DHCP客戶端這邊的相容性識別。DHCP的協定裡頭有提供預設路由的選項，Option 60則是供應商的識別ID。基於這個選項，可在CPE方提供給STB方一些特定的選擇。這樣做最大的好處是在使用Option 60的時候，不用去定義橋接或路由的埠號。橋接是基於Option 60的MAC位址，如此一來switch可以連到STB上面，如同在PC及STB上面擁有同一個介面。

Option 60這個訊息會是一個長度會變動的字串也有可能依供應商提供的八進位數字的一個集合。DHCP客戶端通常會用來溝通的一個方式是在送出DHCP要求的時候按硬體或韌體的型別來設定這個資訊，這個資訊會被稱之為供應商Class識別（VCI Vendor Class Identifier）／（Option 60）。這個方式可能因DHCP Server之間的不同而會在兩種 CMs或兩種 modems之間進行DHCP request時造成差異。有些set-top的Boxes也會設定VCI去通知DHCP Server有關硬體和裝置的功能性資訊。所以結論是，這個選項的資訊會給予DHCP Server在做DHCP回應時必要附加訊息上面的提示。

參考資料

相關
PPPoE
DHCPv6

外部連結
 DHCP协议详细资料 
 DHCP option清單 

网络协议
网际协议
应用层协议