DHCP 是 Dynamic Host Configuration Protocol 之缩写,它的前身是 BOOTP。BOOTP 原本是用于无磁碟主机连接的网路上面的:网路主机使用 BOOT ROM 而不是磁碟起动并连接上网路,BOOTP 则可以自动地为那些主机设定 TCP/IP 环境。但 BOOTP 有一个缺点:您在设定前须事先获得客户端的硬体位址,而且,与 IP 的对应是静态的。换而言之,BOOTP 非常缺乏 "动态性" ,若在有限的 IP 资源环境中,BOOTP 的一对一对应会造成非常可观的浪费。
DHCP 可以说是 BOOTP 的增强版本,它分为两个部份:一个是伺服器端,而另一个是客户端。所有的 IP 网路设定资料都由 DHCP 伺服器集中管理,并负责处理客户端的 DHCP 要求;而客户端则会使用从伺服器分配下来的IP环境资料。比较起 BOOTP ,DHCP 透过 "租约" 的概念,有效且动态的分配客户端的 TCP/IP 设定,而且,作为兼容考量,DHCP 也完全照顾了 BOOTP Client 的需求。
DHCP的分配形式
首先,必须至少有一台 DHCP 工作在网路上面,它会监听网路的 DHCP 请求,并与客户端搓商 TCP/IP 的设定环境。它提供两种 IP 定位方式:
Automatic Allocation 自动分配,其情形是:一旦 DHCP 客户端第一次成功的从 DHCP 伺服器端租用到 IP 位址之后,就永远使用这个位址。
Dynamic Allocation 动态分配,当 DHCP 第一次从 HDCP 伺服器端租用到 IP 位址之后,并非永久的使用该位址,只要租约到期,客户端就得释放(release)这个 IP 位址,以给其它工作站使用。当然,客户端可以比其它主机更优先的延续(renew)租约,或是租用其它的 IP 位址。
动态分配显然比自动分配更加灵活,尤其是当您的实际 IP 位址不足的时候,例如:您是一家 ISP ,只能提供 200 个IP位址用来给拨接客户,但并不意味着您的客户最多只能有 200 个。因为要知道,您的客户们不可能全部同一时间上网的,除了他们各自的行为习惯的不同,也有可能是电话线路的限制。这样,您就可以将这 200 个位址,轮流的租用给拨接上来的客户使用了。这也是为什么当您查看 IP 位址的时候,会因每次拨接而不同的原因了(除非您申请的是一个固定 IP ,通常的 ISP 都可以满足这样的要求,这或许要另外收费)。当然,ISP 不一定使用 DHCP 来分配位址,但这个概念和使用 IP Pool 的原理是一样的。
DHCP 除了能动态的设定 IP 位址之外,还可以将一些 IP 保留下来给一些特殊用途的机器使用,它可以按照硬体位址来固定的分配 IP 位址,这样可以给您更大的设计空间。同时,DHCP 还可以帮客户端指定 router﹑netmask﹑DNS Server﹑WINS Server﹑等等项目,您在客户端上面,除了将 DHCP 选项打勾之外,几乎无需做任何的 IP 环境设定。