1.DHCP协议是什么?
DHCP (Dynamic Host Configuration Protocol),可以向终端提供IP地址、网关、DNS服务器地址等参数。
在DHCP出现之前,还曾使用过RARP和BOOTP协议为主机分配IP地址。其中,RARP由于只能分配IP地址,而BOOTP协议只能做到类似DHCP静态分配IP地址的功能,需要事先将需要分配IP地址的终端MAC地址与所分配的IP地址绑定后,终端才能获取相应IP地址,这两个协议随着DHCP协议的诞生已经逐渐消失。
DHCP协议是以客户及服务器模型构建的,DHCP服务器使用UDP67号端口,DHCP客户端使用UDP68号端口。
2.DHCP报文格式
Op:操作码位,长度1字节,用于定义DHCP报文的类型,当该值为1时,报文为请求报文(即客户端发往服务端报文);当该值为2时,报文为响应报文(即服务器发往客户端报文)。
Htype位:硬件类型位,长度1字节,用于定义物理网络的类型,常用的数值为1,物理网络类型为以太网。
Hlen位:硬件长度位,长度1字节,用于定义相应物理网络中的地址长度,例如以太网的硬件长度位为6,因为以太网使用的物理地址为MAC地址,MAC地址长度为6个字节。
Hops位:跳数位,长度1字节,定义报文最大跳数,常见基本为0。
Xid位:事务标识位,长度4字节,用于标识客户端,由于DHCP客户端均使用UDP68号端口请求地址信息,若无标识位则无法区分是否响应该报文可能造成相同客户端的请求响应多次的情况。
Secs位,秒数位,长度2字节,定义从客户端开始引导共经历了多少秒。
Flags为,标志位,长度2字节,标志位仅使用了最左侧的1位,其余15位均为0。该位为0时,要求服务器端使用单播报文响应请求;该位为1时,要求服务器端使用广播报文响应请求。
Client IP address位:客户端IP地址位,长度4字节,此字段包含客户端的IP地址,若客户端没有IP地址,则该位为0。
Your IP address位:你的IP地址位,长度4字节,包含服务端告知客户端的IP地址。
Server IP address位:服务器IP地址位,长度4字节,包含服务器端的IP地址。
Gateway IP address位:网关IP地址位,长度4字节,包含网关路由器的IP地址。
Client hardware address:客户端硬件地址位,长度16字节,若使用场景为以太网,则包含客户端的MAC地址(6字节),未用位使用0填充。
Server Name位:服务器名称位,长度64字节,可选填充服务器的域名,未填充域名时使用全0补位。
File位:引导文件位,长度128字节,可选填充引导文件路径,未填充引导文件路径时使用全0补位。
Options:选项位,长度可变,可以携带附加信息,例如option1指定客户端子网掩码、option3指定客户端下一跳网关、option43指定无线控制器的IP地址等等。
得知了DHCP报文格式后我们通过分析各个DHCP报文的内容来对应上述的DHCP报文格式。
3. DHCP报文的交互过程
如上图所示,最常规的DHCP报文交互过程为4个报文,分别为:DISCOVER报文、OFFER报文、REQUEST报文和ACK报文。
1、 客户端向网络中广播寻找DHCP服务器的DISCOVER报文,并在报文中要求DHCP服务器以广播或单播方式响应。
2、 DHCP服务器接收到客户端的请求后根据客户端的要求单播或广播发送OFFER报文,告知客户端我可以向你提供IP地址"192.168.1.160"。
3、 客户端收到来自DHCP服务器的OFFER报文后得知网络中有DHCP服务器,便在网络中发送DHCP REQUEST报文广播告知DHCP 服务器我将选择使用"192.168.1.160"这个地址,并DHCP报文中的option 54选项通告我选择由"192.168.1.253"这台DHCP服务器分配地址,如果网络中有多台DHCP服务器,通过option 54选项可以告知未被选中的DHCP服务器不需要再发送DHCP ACK报文响应。
4、被客户端选中的DHCP server收到来自客户端的DHCP REQUEST报文后,单播向客户端发送DHCP ACK报文,确认同意使用"192.168.1.160"这个地址。
至此,报文交互结束。
4. windows常用DHCP命令
以下命令均在windows的命令提示符中输入。
Ipconfig /release
使用以上命令后,操作系统会通过无线或有线网卡向网络中的DHCP服务器发送一个单播的
DHCP release报文,告知DHCP服务器我不需要此IP地址,请释放此IP地址用于其他客户端的租用,而后将本地网卡获取的IP地址也进行释放。
Ipconfig /renew
使用以上命令后,操作系统会通过无线或有线网卡向网络中的DHCP服务器发送重新获取IP地址的请求。
注意,与之前初次获取IP地址请求报文不同的是,通过ipconfig /renew获取的报文中会增加一个option 50选项,此选项的作用在于向DHCP服务器申请希望能够分配之前所用过的IP地址。若此IP地址未被分配,则DHCP服务器会满足DHCP客户端要求,为其分配之前所用过的IP地址。
初次获取IP地址请求报文与再次获取IP地址请求报文不同如下图所示:
以上内容均为本人对所掌握知识总结归纳所创作的原创文章,希望能给大家的学习过程带来帮助,如有技术理解错误希望能够得到大家的指正,大家共同学习,共同进步。
欢迎关注我的头条号,私信交流,学习更多网络技术!