首页 > 代码库 > DHCP协议

DHCP协议

说明 本文是以下文献相关内容的总结

[1] 《TCP/IP详解 卷1:协议》
[2] 《TCP/IP协议族 第4版》
[3] 《计算机网络 第5版》

       DHCP(Dynamic Host Configuration Protocol),动态主机配置协议,该协议经常发挥的两大作用:一是为网络中不知道自己IP地址的主机分配IP地址,二是为网络中的无盘系统提供引导加载程序。

      使用windows操作系统的用户经常会遇到连接网络的问题,也就是说我们如何将自己的主机连接到Internet呢?我们经常会配置一些连网信息,如下图所示:


       从上图可以看出,要连上网,我们通常会包含4项基本信息:IP地址、子网掩码、默认网关DNS首选服务器的IP地址。我们可以采用手动设置或自动获取的方式来获得IP地址,手动设置的方式采用的是BOOTP协议(引导程序协议),自动获取的方式则采用的是DHCP协议。由于DHCP是对BOOTP的加强版本,在针对静态主机配置时不仅兼容BOOTP协议,同时能够动态地提供IP地址,从这个角度来说,BOOTP协议可以认为是DHCP协议的一个淘汰版本。当然,并不是说DHCP协议完全更改了BOOTP协议,而应该说DHCP协议扩展了BOOTP协议。

       MAC地址到IP地址的映射

        就时间顺序而言,提供MAC地址-->IP地址映射的协议包括:RARP协议BOOTP协议DHCP协议

       RARP协议(Reverse Address Resolution Protocal):逆地址解析协议,RARP协议利用了数据链路层的广播服务,存在两个明显的缺点:第一、只能该请求主机所在的网络的中进行广播,因而每个网络上都必须有一台RARP服务器;第二、RARP只能提供IP地址,而不能提供其他信息(如子网掩码、默认网关和DNS服务器等),所以后来就提出了BOOTP协议。

       BOOTP协议(BOOTstrap Protocol):引导程序协议,是一种C/S协议,克服了RARP协议的两个缺陷,具体表现为:(1)BOOTP协议是一个C/S程序,BOOTP服务器可以位于Internet的任何地方;(2)BOOT协议除了返回IP地址外,还提供其他配置信息(如子网掩码等),这些信息可以记录在BOOTP报文的选项部分。但是BOOTP协议的缺陷也很明显:BOOTP协议是一个静态配置协议。也就是说当客户请求自己的IP地址时,BOOTP服务器就会查找一张(MAC-->IP)的映射表,这种映射关系必须是事先设定好的。也就是说:BOOTP协议中,MAC地址和IP地址之间的绑定关系是静态的,是固定存放在一张表中,除非管理员更改这张表。所以后来就提出了现在耳熟能详的DHCP协议。

       DHCP协议(Dynamic Host Configuration Protocal):动态主机配置协议。同BOOTP协议一样,DHCP协议也是基于C/S方式的,DHCP是BOOTP的继承者,并且能够兼容BOOTP。DHCP不仅能够处理静态配置(此时等同于BOOTP协议),而且能够处理动态配置。也就是说,在客户在查找其自己的IP地址时,DHCP服务器中(MAC-->IP)地址可以事先存在,也可以临时分配。换句话说:当客户发送DHCP请求报文时,DHCP服务器服务器先在其数据库中查找该计算机的配置信息。若找到,则返回找到的信息。若找不到,则从服务器的IP地址池中取一个地址分配给该计算机

      (待后续补充)