DHCP(Dynamic Host Configuration Protocol动态主机配置协议)是为客户端动态分配IP地址的方法,服务器能够从预先设置的IP地址池里自动给主机分配IP地址。它不仅能够保证IP地址不重复分配,也能及时回收IP地址以提高IP地址的利用率。DHCP具有可伸缩性,相对容易管理。DHCP包括3种不同的地址分配机制:
手动分配:管理员为客户端指定预分配的IP地址,DHCP只将该IP地址传送给设备。
自动分配:DHCP从可用地址池中选择静态IP地址,自动将它永久性地分配给设备,不存在租期问题。
动态分配:DHCP自动动态地从地址池中分配或出租IP地址,使用期限为服务器选择的租借期限,或者直到客户 端告知DHCP服务器其不再需要该地址为止。
①发现阶段:即DHCP客户端寻找DHCP服务器的阶段。DHCP客户端以广播方式(因为DHCP服务器的IP地址对于客户端来说是未知的)发送DHCPDISCOVER信息来寻找
DHCP服务器。网络上每一台安装了TCP/IP协议的主机都会接收到这种广播信息,但只有DHCP服务器才会做出响应。因为广播的
目标端口是67。而DHCP服务器监听67这个端口。这个过程是主机发给服务器的,是一个广播包。下面会有具体的抓包截图。
②提供阶段:DHCP服务器提供IP地址的阶段。在网络中,接收到DHCPDISCOVER信息的DHCP服务器都会做出响应,它从尚未
分配的IP地址中挑选一个分配给DHCP客户端,向DHCP客户端发送一个包含分配的IP地址和其它设置的DHCPOFFER信息。那么客
户机是如何知道这个DHCPOFFER提供给他的呢???
其中的YOU IP ADDRESS :192.168.0.10 是服务器提供给客户机的。那么这个为什么会是一个单播包呢??是因为在客户机发送DHCPDISCOVER的时候,链路层会包含客户机的mac地址,这样服务器发回来就只用单播了。同时,客户机也在监听68端口。
③选择阶段:DHCP客户端选择某台DHCP服务器提供的IP地址的阶段。如果有多台DHCP服务器向DHCP客户端发送DHCPOFFER
信息,则DHCP客户端只接受第一个收到的DHCPOFFER信息,然后它以广播方式回答一个DHCPREQUEST信息,该信息中包含
它所选定的DHCP服务器请求IP地址的内容,之所以要以广播方式回答,是为了通知所有的DHCP服务器(一个公司可以有多个
DHCP服务器),它将选择某台DHCP服务器所提供的IP地址(先到先取)。
看一下这个DHCPREQUEST包,它的源地址还是0.0.0.0,这是为什么呢??,这是因为,这时主机还没有用我哪一个地址。我来打一比方吧,整个dhcp的过程就像是这样。
有一天,你去找工作,你在大街上喊,我要找工作(DHCPDISCOVER)。这时,一个人看到你,说我给你提供一个职位(DHCPOFFER),你到我公司来。你就去了他的公司,说你要应聘xx职位(DHCPREQUEST),最后公司说好。(DHCPACK),这样你就找到了工作。dhcp的整个过程也完成了。。
④确认阶段:即DHCP服务器确认所提供的IP地址的阶段。当DHCP服务器收到DHCP客户端回答的DHCPREQUEST信息之后,他便向DHCP客户端发送一个包含它所提供的
IP地址和其它设置的DHCPACK信息,告诉DHCP客户端可以使用它所提供的IP地址,然后DHCP客户端便将其TCP/IP协议与网卡
绑定。另外,除DHCP客户端选中的服务器外, 其它的DHCP服务器都将收回曾提供的IP地址。
⑤重新登录:以后DHCP客户端每次重新登录网络时,就不需要再发送DHCPDISCOVER信息了,而是直接发送包含 前一次所分配
的IP地址的DHCPREQUEST信息。当DHCP服务器收到这一信息后,它将尝试让DHCP客户端继续使用原来的IP地址,并回答一个
DHCPACK信息。如果此IP地址已无法再分配原来的DHCP客户端使用时(比如IP地址已分配给其它DHCP客户端使用),则DHCP服
务器给DHCP客户端回答一个DHCPNACK信息。当原来的DHCP客户端收到此DHCPNACK信息后,它将必须重新发送
DHCPDISCOVER信息来请求新的IP地址。
⑥更新租约:DHCP服务器向DHCP客户端出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。如果
DHCP客户端要延长其IP租约,则必须更新其IP租约。DHCP客户端启动时间为租约期限的50% 时,DHCP客户端都会自动向DHCP
服务器发送更新其IP租约的信息。如果DHCP服务器应答,则租用延期;如果DHCP服务器始终没有应答,在有效租借期的87.5%,
客户应该与任何一个其它的DHCP服务器通信,并请求更新 它的配置信息。如果客户端不能和所有的DHCP服务器取得联系,租借
时间到后,它必须放弃当前的IP地址并重 新发送一个DHCPDISCOVER信息开始上述的IP地址获得过程。当然,客户端可以主动向
服务器发出DHCPRELEASE信息,将当前的IP地址释放。
上面的是一般情况下的状态。两次广播,两次单播。
下面来看看不一般的情况。
1.全程广播???
2.dhcpdiscover 的源地址还是168.254.36.238??
3.dhcpdiscover,dhcprequest。dhcpack发两次??
下面我来一 一 解答这些疑问。1.全程广播???这个是因为,在客户机发送一个dhcpdiscover的时候,会告诉dhcp服务器自己希望的通信方式。下面抓包为证。。
其中bootp flags:0x0000(unicast),说明了客户机想以服务器单播发送回应包给自己。
其中bootp flags:0x08000,broadcast flag(broadcast),说明了客户机想以服务器广播发送回应包给自己。
2.dhcpdiscover 的源地址还是168.254.36.238??
这个地址是客户机好没有获得地址之前客户机自己给自己配了一个地址,一般整个地址会是169这个网段的。
3.dhcpdiscover,dhcprequest。dhcpack发两次??
这个是因为重传的结果。多发几次,无所谓的啦。