DHCP全称为动态主机配置协议(Dynamic Host Configure Protocol)。从名字我们就可以看出来,这是一个动态的配置主机的协议。DHCP是用来实现给主机自动分配IP地址,从而来减轻网络管理员手动配置IP地址的繁琐。当我们面临几十台的主机还无法体现出这个“繁琐”,但当我们面临一个企业几百台或者是IDC机房上千台主机的时候,你就感受到痛苦了。
DHCP是一个C/S(C:客户端,S:服务器端)架构的协议,所以需要提供一个DHCP服务器,在Linux中,DHCP的服务器端软件是DHCPD。DHCP协议的监听端口与其他协议有所不同,分为两个:服务端为67,客户端为68。服务器端和客户端都使用相应的端口监听/发送DHCP协议消息。
客户机从DHCP获取IP地址的过程我们称为DHCP租约过程,分为四个步骤:
接下来我们通过抓包的方式详细谈一谈这四个步骤:
1.客户端请求IP地址:
客户机发起一个DHCP Discover包,用来请求IP地址:
继续进一步分析这个Discover包,可以看到:
1)目标MAC地址为广播地址(Destination:ff:ff:ff:ff:ff:ff),源MAC地址为客户机MAC地址(Source:00:0c:29:97:15:cb)。
2)目标IP地址为广播地址(Destination:255.255.255.255),源IP地址为0.0.0.0。
3)目标端口为67,源端口为68
2.服务器响应:
服务器发送一个DHCP Offer包,响应客户机的请求:
继续进一步分析DHCP Offer包,可以看到:
1)源MAC地址为DHCP服务器的地址(08:10:78:20:99:20),目标MAC地址为广播地址(ff:ff:ff:ff:ff:ff)
2)源IP地址为DHCP服务器的地址(172.16.100.1),目标IP地址为广播地址(255.255.255.255)
3)源端口号为服务器端端口号(67),目标端口号为客户端端口号(68)
3.客户端回应(选择IP地址)
明天补上