DHCP協(xié)議原理
DHCP(Dynamic Host Configuration Protocol,動(dòng)態(tài)主機(jī)配置協(xié)議)是IETF為實(shí)現(xiàn)IP的自動(dòng)配置而設(shè)計(jì)的協(xié)議,它可以為客戶機(jī)自動(dòng)分配IP地址、子網(wǎng)掩碼以及缺省網(wǎng)關(guān)、DNS服務(wù)器的IP地址等TCP/IP參數(shù)。了解DHCP工作過程可以幫助我們排除有關(guān)DHCP服務(wù)遇到的問題。DHCP 協(xié)議是基于UDP層之上的應(yīng)用,本文結(jié)合抓報(bào)所得數(shù)據(jù)分析DHCP協(xié)議實(shí)現(xiàn)原理
一、先了解一下需要抓取的DHCP報(bào)文
客戶發(fā)出的IP租用請(qǐng)求報(bào)文
DHCP客戶機(jī)初始化TCP/IP,通過UDP端口67向網(wǎng)絡(luò)中發(fā)送一個(gè)DHCPDISCOVER廣播包,請(qǐng)求租用IP地址。該 廣播包中的源IP地址為0.0.0.0,目標(biāo)IP地址為255.255.255.255;包中還包含客戶機(jī)的MAC地址和計(jì)算機(jī)名。
DHCP回應(yīng)的IP租用提供報(bào)文
任何接收到DHCPDISCOVER廣播包并且能夠提供IP地址的DHCP服務(wù)器,都會(huì)通過UDP端口68給客戶機(jī)回應(yīng)一個(gè)DHCPOFFER廣播包,提供一個(gè)IP地址。該廣播包的源IP地址為DCHP服務(wù)器IP,目標(biāo)IP地址為255.255.255.255;包中還包含提供的IP地址、子網(wǎng)掩碼及租期等信息。
客戶選擇IP租用報(bào)文
客戶機(jī)從不止一臺(tái)DHCP服務(wù)器接收到提供之后,會(huì)選擇第一個(gè)收到的DHCPOFFER包,并向網(wǎng)絡(luò)中廣播一個(gè) DHCPREQUEST消息包,表明自己已經(jīng)接受了一個(gè)DHCP服務(wù)器提供的IP地址。該廣播包中包含所接受的IP地址和服務(wù)器的IP地址。 所有其他的DHCP服務(wù)器撤消它們的提供以便將IP地址提供給下一次IP租用請(qǐng)求。
DHCP服務(wù)器發(fā)出IP租用確認(rèn)報(bào)文
被客戶機(jī)選擇的DHCP服務(wù)器在收到DHCPREQUEST廣播后,會(huì)廣播返回給客戶機(jī)一個(gè)DHCPACK消息包,表明已經(jīng)接受客戶機(jī)的選擇,并將這一IP地址的合法租用以及其他的配置信息都放入該廣播包發(fā)給客戶機(jī)。
客戶配置成功后發(fā)出的公告報(bào)文
客戶機(jī)在收到DHCPACK包,會(huì)使用該廣播包中的信息來配置自己的TCP/IP,則租用過程完成,客戶機(jī)可以在網(wǎng)絡(luò)中通信。
至此一個(gè)客戶獲取IP的DHCP服務(wù)過程基本結(jié)束,不過客戶獲取的IP一般是用租期,到期前需要更新租期,這個(gè)過程是通過租用更新數(shù)據(jù)包來完成的。
客戶IP租用更新報(bào)文
(1)在當(dāng)前租期已過去50%時(shí),DHCP客戶機(jī)直接向?yàn)槠涮峁㊣P地址的DHCP服務(wù)器發(fā)送DHCPREQUEST消息包。如果客戶機(jī)接收到該服務(wù)器回應(yīng)的DHCPACK消息包,客戶機(jī)就根據(jù)包中所提供的新的租期以及其它已經(jīng)更新的TCP/IP參數(shù),更新自己的配置,IP租用更新完成。如果沒收到該服務(wù)器的回復(fù),則客戶機(jī)繼續(xù)使用現(xiàn)有的IP地址,因?yàn)楫?dāng)前租期還有50%。
(2)如果在租期過去50%時(shí)未能成功更新,則客戶機(jī)將在當(dāng)前租期過去87.5%時(shí)再次向?yàn)槠涮峁㊣P地址的DHCP聯(lián)系。如果聯(lián)系不成功,則重新開始IP租用過程。
(3)如果DHCP客戶機(jī)重新啟動(dòng)時(shí),它將嘗試更新上次關(guān)機(jī)時(shí)擁有的IP租用。如果更新未能成功,客戶機(jī)將嘗試聯(lián)系現(xiàn)有IP租用中列出的缺省網(wǎng)關(guān)。如果聯(lián)系成功且租用尚未到期,客戶機(jī)則認(rèn)為自己仍然位于與它獲得現(xiàn)有IP租用時(shí)相同的子網(wǎng)上(沒有被移走)繼續(xù)使用現(xiàn)有IP地址。 如果未能與缺省網(wǎng)關(guān)聯(lián)系成功,客戶機(jī)則認(rèn)為自己已經(jīng)被移到不同的子網(wǎng)上,將會(huì)開始新一輪的IP租用過程。
DHCP客戶機(jī)在發(fā)出IP租用請(qǐng)求的DHCPDISCOVER廣播包后,將花費(fèi)1秒鐘的時(shí)間等待DHCP服務(wù)器的回應(yīng),如果1秒鐘沒有服務(wù)器的回應(yīng),它會(huì)將這一廣播包重新廣播四次(以2,4,8和16秒為間隔,加上1~1000毫秒之間隨機(jī)長(zhǎng)度的時(shí)間)。四次之后,如果仍未能收到服務(wù)器的回應(yīng),則運(yùn)行Windows 2000的DHCP客戶機(jī)將從169.254.0.0/16這個(gè)自動(dòng)保留的私有IP地址(APIPA)中選用一個(gè)IP地址,而運(yùn)行其他操作系統(tǒng)的DHCP客戶機(jī)將無法獲得IP地址。DHCP客戶機(jī)仍然每隔5分鐘重新廣播一次,如果收到某個(gè)服務(wù)器的回應(yīng),則繼續(xù)IP租用過程。
|