1.DHCP简介
DHCP是Dynamic Host Configuration Protocol的缩写,它的前身是BOOTP。DHCP可以说是BOOTP的增强版本,分为两个部份(C/S架构):一个是服务器端,而另一个是客户端。DHCP的主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。对比BOOTP,DHCP通过"租约"的概念,有效且动态的分配客户端的TCP/IP设定。而且为了考虑兼容性,DHCP也完全兼容了BOOTP Client的需求。
2.DHCP Server功能
- DHCP Server的基本功能,如表 2‑1所示。
表 2‑1 DHCP Server基本功能
3.DHCP Server框架即原理
3.1 软件框图
DHCP Server软件框图如图 3‑1所示。
图 3‑1 DHCP Server软件框图
3.2 DHCP原理
DHCP原理如图 3‑2所示。
图 3‑2 DHCP原理图
3.3 DHCP报文结构
DHCP协议报文如表3-2所示。
表 3‑2 DHCP协议报文结构
- op:client发送给server的封包,设为1,server发送给client的封包,设为2。
- htype:硬件类别,1表示10Mb/s的以太网(Ethernet)的硬件地址。
- hlen:硬件地址长度,Ethernet为6(字节)。
- hops:跳数,若封包需经过router传送,每站加 1,若在同一网内,为0(客户端的初始设置为0)。
- xid:TRANSACTION ID(事务ID),DHCP REQUEST 时产生的数值,服务器和客户端用来在它们之间交流请求和响应,客户端用它对请求和应答进行匹配。
- seconds:由客户端填充,表示从客户端开始获得IP地址或IP地址续借后所使用了的秒数。
- flags:从0到15共16 bits,最左1Bit为1时表示server将以广播方式传送封包给client;最左1Bit为0时表示server将以单播方式传送封包给client。
- ciaddr:客户端的IP地址,只有客户端是Bound、Renew、Rebinding状态,并且能响应ARP请求时,才能被填充。
- yiaddr:从server送回client的DHCP OFFER与DHCPACK封包中,此栏填写分配给client的IP地址。
- siaddr:表明DHCP协议流程的下一个阶段要使用的服务器的IP地址。
- giaddr:若需跨网域进行DHCP获取,此栏为 relay agent的地址,否则为0。
- chaddr:客户端硬件地址。客户端必须设置它的"chaddr"字段。
- sname:Server的名称字符串,由DHCP服务器填写,以0x00结尾。
- file:启动文件名,是一个空结尾的字符串。
- options:允许厂商定议选项(Vendor-Specific Area),以提供更多的设定信息。
数据通信模块主要完成DHCP协议报文的解析和封装,数据包的发送和接收功能。
3.4 DHCP服务流程
3.4.1 DHCP Discover数据处理流程
DHCP Discover数据处理流程如图 3‑3所示。
图 3‑3 DHCP Disocver数据处理流程图
3.4.2 DHCP Request数据处理流程
DHCP Request数据处理流程如图 3‑4所示。
图 3‑4 DHCP Reques数据处理流程图
3.4.3 DHCP Release数据处理流程
DHCP Release数据处理流程如图 3‑5所示。
图 3‑5 DHCP Release数据处理流程图
3.4.4 DHCP Decline数据处理流程
DHCP Decline数据处理流程如图 3‑6所示。
图 3‑6 DHCP Decline数据处理流程图
3.4.5 DHCP Inform数据处理流程
DHCP Inform数据处理流程如图 3 7所示。
图 3 7 DHCP Inform数据处理流程图