DHCP的基本實(shí)現(xiàn)原理
DHCP幾個(gè)概念:
DHCP Client:DHCP客戶端,通過(guò)DHCP協(xié)議請(qǐng)求IP地址的客戶端。DHCP客戶端是接口級(jí)的概念,如果一個(gè)主機(jī)有多個(gè)以太接口,則該主機(jī)上的每個(gè)接口都可以配置成一個(gè)DHCP 客戶端。交換機(jī)上每個(gè)Vlan接口也可以配置成一個(gè)DHCP客戶端。
DHCP Server:DHCP 服務(wù)端,負(fù)責(zé)為DHCP客戶端提供IP地址,并且負(fù)責(zé)管理分配的IP地址。
DHCP Relay:DHCP中繼器,DHCP客戶端跨網(wǎng)段申請(qǐng)IP地址的時(shí)候,實(shí)現(xiàn)DHCP報(bào)文的轉(zhuǎn)發(fā)功能。
DHCP Security:DHCP安全特性,實(shí)現(xiàn)合法用戶IP地址表的管理功能
DHCP Snooping:DHCP監(jiān)聽(tīng),記錄通過(guò)二層設(shè)備申請(qǐng)到IP地址的用戶信息
DHCP工作原理:
發(fā)現(xiàn)階段:
即DHCP客戶端尋找DHCP服務(wù)端的過(guò)程,對(duì)應(yīng)于客戶端發(fā)送DHCP Discovery,因?yàn)镈HCP Server對(duì)應(yīng)于DHCP客戶端是未知的,所以DHCP 客戶端發(fā)出的DHCP Discovery報(bào)文是廣播包,源地址為0.0.0.0目的地址為255.255.255.255。網(wǎng)絡(luò)上的所有支持TCP/IP的主機(jī)都會(huì)收到該DHCP Discovery報(bào)文,但是只有DHCP Server會(huì)響應(yīng)該報(bào)文。
如果網(wǎng)絡(luò)中存在多個(gè)DHCP Server,則多個(gè)DHCP Server均會(huì)回復(fù)該DHCP Discovery報(bào)文。
如果同一個(gè)vlan內(nèi)沒(méi)有DHCP Server,而該VlanIf配置了DHCP Relay功能,則該Vlanif即為DHCP中繼,DHCP中繼會(huì)將該DHCP報(bào)文的源IP地址修改為該Vlanif的IP地址,而目的地址則為DHCP Relay配置的DHCP Server的IP地址。同時(shí)修改DHCP報(bào)文中,giaddress為VlanIf的IP地址。并以單播將DHCP Discovery發(fā)送到DHCP Server端。
DHCP Server 提供階段:
DHCP Server提供階段,即為DHCP Server響應(yīng)DHCP Discovery所發(fā)的DHCP Offer階段
DHCP Server收到DHCP Discovery報(bào)文后,解析該報(bào)文請(qǐng)求IP地址所屬的Subnet。并從dhcpd.conf文件中與之匹配的subnet中取出一個(gè)可用的IP地址(從可用地址段選擇一個(gè)IP地址后,首先發(fā)送ICMP報(bào)文來(lái)ping該IP地址,如果收到該IP地址的ICMP報(bào)文,則拋棄該IP地址,重新選擇IP地址繼續(xù)進(jìn)行ICMP報(bào)文測(cè)試,直到找到一個(gè)網(wǎng)絡(luò)中沒(méi)有人使用的IP地址,用以達(dá)到防治動(dòng)態(tài)分配的IP地址與網(wǎng)絡(luò)中其他設(shè)備IP地址沖突,這個(gè)IP地址沖突檢測(cè)機(jī)制,可配置),設(shè)置在DHCP Discovery報(bào)文中yiaddress字段中,表示為該客戶端分配的IP地址,并且為該Lease設(shè)置該Subnet配置的Option,例如默認(rèn)leases租期,***租期,router等信息。
DHCP從地址池中選擇IP地址,以如下優(yōu)先級(jí)進(jìn)行選擇:
1、當(dāng)前已經(jīng)存在的Ip Mac的對(duì)應(yīng)關(guān)系
2、Client以前的IP地址
3、讀取Discovery報(bào)文中的Requested Ip Address Option的值,如果存在并且IP地址可用
4、從配置的Subnet中選擇IP地址:
DHCP Server解析DHCP Discovery請(qǐng)求的IP所屬的Subnet,首先看該DHCP Discovery報(bào)文中g(shù)iaddress是否有DHCP Relay,如果有,則從giaddress所述的subnet中可用IP地址段中獲取,并分配IP。如果giaddress沒(méi)有IP地址,則從該DHCP Server綁定的接口的IP地址所屬的網(wǎng)段分配IP地址。
DHCP Client 選擇階段:
DHCP Client收到若干個(gè)DHCP Server響應(yīng)的DHCP Offer報(bào)文后,選擇其中一個(gè)DHCP Server作為目標(biāo)DHCP Server。選擇策略通常為選擇***個(gè)響應(yīng)的DHCP Offer報(bào)文所屬的DHCP Server。
然后以廣播方式回答一個(gè)DHCP Request報(bào)文,該報(bào)文中包含向目標(biāo)DHCP請(qǐng)求的IP地址等信息。之所以是以廣播方式發(fā)出的,是為了通知其他DHCP Server自己將選擇該DHCP Server所提供的IP地址。
DHCP Server確認(rèn)階段:
當(dāng)DHCP Server收到DHCP Client發(fā)送的DHCP Request后,確認(rèn)要為該DHCP Client提供的IP地址后,便想該DHCP Client響應(yīng)一個(gè)包含該IP地址以及其他Option的報(bào)文,來(lái)告訴DHCP Client可以使用該IP地址了。然后DHCP Client即可以將該IP地址與網(wǎng)卡綁定。另外其他DHCP Server都將收回自己之前為DHCP Client提供的IP地址。
DHCP Client重新登錄網(wǎng)絡(luò):
當(dāng)DHCP Client重新登錄后,發(fā)送一個(gè)以包含之前DHCP Server分配的IP地址信息的DHCP Request報(bào)文,當(dāng)DHCP Server收到該請(qǐng)求后,會(huì)嘗試讓DHCP客戶端繼續(xù)使用該IP地址。并回答一個(gè)ACK報(bào)文。
但是如果該IP地址無(wú)法再次分配給該DHCP Client后,DHCP回復(fù)一個(gè)NAK報(bào)文,當(dāng)DHCP Client收到該NAK報(bào)文后,會(huì)重新發(fā)送DHCP Discovery報(bào)文來(lái)重新獲取IP地址。
DHCP Client更新租約:
DHCP獲取到的IP地址都有一個(gè)租約,租約過(guò)期后,DHCP Server將回收該IP地址,所以如果DHCP Client如果想繼續(xù)使用該IP地址,則必須更新器租約。更新的方式就是,當(dāng)當(dāng)前租約期限過(guò)了一半后,DHCP Client都會(huì)發(fā)送DHCP Renew報(bào)文來(lái)續(xù)約租期。