DHCP基础
DHCP概述 DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),用于集中对用户IP地址进行动态管理和配置的协议。 DHCP采用C/S通信模式,协议报文基于UDP方式进行交互,采用67(DHCP服务器)和68(DHCP客户端)两个端口号 网络中的终端设备,如主机、打印机、笔记本电脑、手机等,作为DHCP客户端,向DHCP服务器请求分配相关网络参数。DHCP服务器响应DHCP客户端请求动态分配。 DHCP实现过程 客户端首次接入网络 发现阶段: DHCP客户端发送DHCP Discover 报文来发现DHCP服务器。DHCP Discover报文中携带了客户端的MAC地址、需要请求的参数列表选项、广播标志位等信息 提供阶段: 服务器收到DHCP Discover报文后,选择跟接收该报文接口的IP地址处于同一网段的地址池,从中选择一个可用的IP地址,然后通过DHCP Offer报文发送给客户端 选择阶段: 如果有多个DHCP服务器回应了Offer报文,则客户端一般只接收第一个收到的Offer报文,然后以广播的方式发送Request报文,其中包含了客户端想选择的DHCP服务器标识符和客户端IP地址。 确认阶段 服务器确认所分配的IP地址。 该阶段可能会发生冲突: 服务器收到Discover报文后,会先Ping一下该地址,如果能Ping通,则说明该地址不可用,选择其他IP分配给客户端 客户端收到ACK报文,发送免费ARP报文,探测本网段是否有其他终端使用服务器分配的IP地址,如果收到响应,客户端发送Decline通知服务器该IP地址冲突,服务器标识该地址不可用,客户端重新进入发现阶段 DHCP报文格式 字段含义: Op:报文的类型,取值为1或2,1代表客户端请求报文,2代表服务器响应报文 Htype:硬件地址的类型,取值1代表常见的以太网MAC地址类型 Hlen:硬件地址的长度,单位为字节,常见的以太网MAC地址长度取值为6 Hops:当前DHCP报文经过的[DHCP Relay](# DHCP Relay) 数目。该字段由客户端设置为0,每经过一个DHCP Relay,字段值加一。字段作用是限制DHCP报文经过的DHCP Relay数目 Xid:客户端选取的随机数,使服务器的回复于客户端的报文相关联。用来标识一次地址请求过程。在一次请求中所有报文的 xid 都是一样的 Secs:客户端填充,标识从客户端开始获得IP地址或IP地址续借所使用的秒数,未获得IP地址前,该值为0。 Flags:客户端请求服务器发送响应报文的形式,只有最高位有含义,最高位为1请求发送广播响应,为0请求发送单播响应,其余15位为0 Ciaddr:客户端的IP地址,只有在ACK报文中有取值,其他均为0,因此还未分配到IP地址 Yiaddr:服务器分配给客户端的IP地址 Siaddr:服务器的IP地址 Giaddr:转发代理(网关)IP 地址,DHCP 客户端发出请求报文后经过的第一个 DHCP 中继的 IP 地址。如果没有经过 DHCP 中继,则显示为 0 Chaddr:客户端的Mac地址 Sname:服务器名字(DNS域名格式),由服务器填写,可选值,如果填写,必须是以0结尾的字符串 File:客户端启动DHCP相关配置的文件名,仅在Offer报文中显示,其余报文中为空。字段由DHCP服务器填写,随着IP地址的分配下发给客户端。可选值,如果填写,必须是以0结尾的字符串 Option:服务器分配给终端的配置信息,其中通过Type=53来表示DHCP报文类型,具体见下框 Option字段 Option字段为可变长度,最多为312Byte,字段由Type、Length和Value三部分组成,常见的Option如下:...