1
Linux服务器配置与应用
1.8.3.1 5.3.1 DHCP介绍
5.3.1 DHCP介绍

DHCP(动态主机配置协议)是一个局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。默认情况下,DHCP作为Windows Server的一个服务组件不会被系统自动安装,还需要管理员手动安装并进行必要的配置。

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)通常被应用在大型的局域网络环境中,主要作用是集中管理、分配IP地址,使网络环境中的主机动态地获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。

DHCP协议采用客户端/服务器模型,主机地址的动态分配任务由网络主机驱动。当DHCP服务器接收到来自网络主机申请地址的信息时,才会向网络主机发送相关的地址配置等信息,以实现网络主机地址信息的动态配置。DHCP具有以下功能:保证任何IP地址在同一时刻只能由一台DHCP客户机所使用;DHCP应当可以给用户分配合法的IP地址;DHCP应当可以同用其他方法合法获得IP地址的主机共存(如手工配置IP地址的主机);DHCP服务器应当向现有的BOOTP客户端提供服务。

DHCP有三种机制分配IP地址:自动分配方式(Automatic Allocation),DHCP服务器为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后,就可以永久性地使用该地址;动态分配方式(Dynamic Allocation),DHCP服务器给主机指定一个具有时间限制的IP地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用;手工分配方式(Manual Allocation),客户端的IP地址是由网络管理员指定的,DHCP服务器只是将指定的IP地址告诉客户端主机。三种地址分配方式中,只有动态分配可以重复使用客户端不再需要的地址。DHCP消息的格式是基于BOOTP(Bootstrap Protocol)消息格式的,这就要求设备具有BOOTP中继代理的功能,并能够与BOOTP客户端和DHCP服务器实现交互。BOOTP中继代理的功能,使得没有必要在每个物理网络都部署一个DHCP服务器。RFC 951和RFC 1542对BOOTP协议进行了详细描述。

DHCP封包在传输层( Transport Layer)是采用UDP协议,而当 Client传送封包给Server时,采用的是UDP 68 Port,从 Server传送给 Client则是使用UDP 67 Port。

DHCP的封包格式如图5.15所示,各字段定义如下:

OP: 若是 client 送给 server 的封包,设为 1 ,反向为 2。

HTYPE:硬件类别,Ethernet 为 1。

HLEN:硬件地址长度,Ethernet 为 6。

HOPS:若封包需经过 router 传送,每站加 1 ,若在同一网内,为 0。

TRANSACTION ID:DHCP REQUEST 时产生的数值,以作 DHCPREPLY 时的依据。SECONDS:Client 端启动时间(秒)。

FLAGS:从 0 到 15 共 16 bits ,最左一 bit 为 1 时表示 server 将以广播方式传送封包给 client ,其余尚未使用。

ciaddr:要是 client 端想继续使用之前取得的 IP 地址,则列于这里。

yiaddr:从 server 送回 client 之 DHCP OFFER 与 DHCPACK封包中,此栏填写分配给 client 的 IP 地址。

siaddr:若 client 需要透过网络开机,从 server 送出DHCP OFFER、DHCPACK、DHCPNACK封包中,此栏填写开机程序代码所在 server 之地址。

giaddr:若需跨网域进行 DHCP 发放,此栏为 relay agent 的地址,否则为 0。

chaddr:Client硬件地址。

sname:Server 名称字符串,以 0x00 结尾。

file:若 client 需要透过网络开机,此栏将指出开机程序名称,稍后以 TFTP 传送。

图5.15 DHCP报文格式

DHCP协议采用UDP作为传输协议,主机发送请求消息到DHCP服务器的67号端口,DHCP服务器回应应答消息给主机的68号端口。DHCP通信交互如图5.16所示。

图5.16 DHCP通信详细过程