DHCP协议及工作流
概述
DHCP
(动态主机配置协议 Dynamic Host Configuration Protocol
)是一个局域网的网络协议。指的是由服务器控制一段lP地址范围,客户机登录服务器时就可以自动获得服务器分配的lP
地址和子网掩码
工作流
- 发现阶段,即
DHCP
客户机寻找DHCP
服务器的阶段。DHCP
客户机以广播方式(因为DHCP
服务器的IP
地址对于客户机来说是未知的)发送DHCP discover
信息来寻找DHCP
服务器,即向地址255.255.255.255
发送特定的广播信息。网络上每一台安装了TCP/IP
协议的主机都会接收到这种广播信息,但只有DHCP
服务器才会做出响应。 - 提供阶段,即
DHCP
服务器提供IP
地址的阶段。在网络中接收到DHCP discover
信息的DHCP
服务器都会做出响应,它从尚未出租的IP
地址中挑选一个分配给DHCP
客户机,向DHCP
客户机发送一个包含出租的IP
地址和其他设置的DHCP offer
信息。 - 选择阶段,即
DHCP
客户机选择某台DHCP
服务器提供的IP
地址的阶段。如果有多台DHCP
服务器向DHCP
客户机发来的DHCP offer
信息,则DHCP
客户机只接受第一个收到的DHCP offer
信息,然后它就以广播方式回答一个DHCP request
信息,该信息中包含向它所选定的DHCP
服务器请求IP
地址的内容。之所以要以广播方式回答,是为了通知所有的DHCP
服务器,他将选择某台DHCP
服务器所提供的IP
地址。 - 确认阶段,即
DHCP
服务器确认所提供的IP
地址的阶段。当DHCP
服务器收到DHCP
客户机回答的DHCP request
信息之后,它便向DHCP
客户机发送一个包含它所提供的IP
地址和其他设置的DHCP ack
确认信息,告诉DHCP
客户机可以使用它所提供的IP
地址。然后DHCP
客户机便将其TCP/IP
协议与网卡绑定,另外,除DHCP
客户机选中的服务器外,其他的DHCP
服务器都将收回曾提供的IP
地址。 - 重新登录。以后
DHCP
客户机每次重新登录网络时,就不需要再发送DHCP discover
信息了,而是直接发送包含前一次所分配的IP
地址的DHCP request
信息。当DHCP
服务器收到这一信息后,它会尝试让DHCP
客户机继续使用原来的IP
地址,并回答一个DHCP ack
信息。如果此IP
地址已无法再分配给原来的DHCP
客户机使用时(比如此IP
地址已分配给其它DHCP
客户机使用),则DHCP
服务器给DHCP
客户机回答一个DHCP nack
否认信息。当原来的DHCP
客户机收到此DHCP nack
否认信息后,它就必须重新发送DHCP discover
发现信息来请求新的IP
地址。 - 更新租约。
DHCP
服务器向DHCP
客户机出租的IP
地址一般都有一个租借期限,期满后DHCP
服务器便会收回出租的IP
地址。如果DHCP
客户机要延长其IP
租约,则必须更新其IP租约。DHCP
客户机启动时和IP
租约期限过一半时,DHCP
客户机都会自动向DHCP
服务器发送更新其IP
租约的信息。
比喻
为了方便理解,列举一个小例子(可能不太恰当)
我们把DHCP
客户机比做餐馆里的客人,DHCP
服务器比做服务员(一个餐馆里也可以有多个服务员),IP
地址比做客户需要的食物。
那么可以这样描述整个过程:
客人走进餐馆,问:“有没有服务员啊?”(DHCP discover)
,
多个服务员同时回答:“有,我这有汉堡” “有,我这有鸡翅”(DHCP offer)
。
客人说:“好吧,我要一份汉堡”(DHCP request)
(这个客人比较死板,总是选择第一次听到的食物)
端着汉堡的服务员回应了一声:“来啦”(DHCP ack)
,并把食物端到客人面前,供其享用(将网卡和IP地址绑定)。
客人下次来的时候,就直接找上次那个服务员点自己喜欢的汉堡了(DHCP request)
,如果还有汉堡,服务员会再次确认并上菜(DHCP ack)
,而如果已经卖完了,服务员则会告诉客人:“不好意思,已经卖完了”(DHCP nack)
。
当然,服务员隔一段时间会来收拾一次桌子,除非客人特别说明这菜还要继续吃的,服务员会将剩菜端走。
相关推荐
82550698 2020-11-09
mnm0 2020-11-08
柳木木的IT 2020-11-04
YLIMHHMILY 2020-10-20
bingdata 2020-10-15
koko0c 2020-09-26
whutjiajiao 2020-09-20
Cheetahcubs 2020-09-13
Cheetahcubs 2020-09-07
MrIronHand 2020-09-01
anaction 2020-08-17
luckyxl0 2020-08-16
summerZBH 2020-08-11
Dullonjiang 2020-08-09
Cheetahcubs 2020-08-07
chenyanyan 2020-08-06