DHCP,动态主机配置协议,前身是BOOTP协议,是一个局域网的网络协议,使用UDP协议事件,常用的2个端口:67(DHCP server),68(DHCP client)。DHCP往往一般被用来局域网环境,主要作用是研究的管理、分配IP地址,使client动态的获取IP地址、Gateway地址、DNS服务器地址等消息,并能够提高地址的使用率。无脑来说,DHCP只是一个不需要账号密码登录的、全自动给内网机器分配IP地址等消息的协议。
DHCP DISCOVER :软件开始DHCP过程发送的包,是DHCP协议的开始
DHCP OFFER :服务器接收到DHCP DISCOVER之后做出的响应,它包括了给予软件的IP(yiaddr)、软件的MAC地址、租约过期时间、服务器的查看符以及很多的消息
DHCP REQUEST :软件对于服务器发出的DHCP OFFER所做出的响应。在续约租期的时候一样会使用。
DHCP ACK :服务器在接收到软件发来的DHCP REQUEST之后发出的成功确认的报文。在建立连接的时候,软件在接收到这种报文之后才会确认分配给它的IP和很多的消息应该被允许使用。
DHCP NAK :DHCP ACK的相反的报文,表示服务器拒绝了软件的请求。
DHCP RELEASE :往往一般出现在软件关机、下线等状况。这种报文将会使DHCP服务器释放发出此报文的软件的IP地址
DHCP INFORM :软件发出的向服务器请求一些消息的报文
DHCP DECLINE :当软件发现服务器分配的IP地址无法使用(如IP地址冲突时),将发出此报文,通知服务器禁止
使用该IP地址。
DHCP 的 事件流程:
Xid :随机生成的一段字符串,两个资料包坐拥相同的xid说明他们属于同一次会话
Ciaddr :软件会在发送请求时将自己的ip地址放在此处
Yiaddr :服务器会将想要分配给软件的ip地址放在此处
Siaddr :往往一般来说是服务器的ip地址.但是小心!根据openwrt源码给出的注释,当报文的源地址、siaddr、option->server_id字段不一致(有经历过跨子网转发)时,往往一般认为option->srever_id字段为真正的服务器ip,siaddr有可能是多次路由跳转中的某一个路由的ip (下图中wireshark抓包中也有标明siaddr为nextserver ip address)
Chaddr :软件的mac地址
Giaddr :如果需要跨子网进行DHCP地址发放,则在此处填入经历过的wifi网络路由器的ip地址
Sname :服务器主域名
Options :应该自由添加的部分,用来存放软件向服务器请求消息和服务器的应答消息