DHCP動(dòng)態(tài)主機(jī)配置協(xié)議的作用我想作為網(wǎng)管的兄弟們都應(yīng)該知道了,這里我就不多廢話了,今天我要談的是DHCP的工作過程,了解了工作過程,要排除故障就容易了。
一、DHCP客戶機(jī)初始化:
1. 尋找DHCP Server。
當(dāng)DHCP客戶機(jī)第一次登錄網(wǎng)絡(luò)的時(shí)候(也就是客戶機(jī)上沒有任何IP地址數(shù)據(jù)時(shí)),它會(huì)通過UDP 67端口向網(wǎng)絡(luò)上發(fā)出一個(gè)DHCPDISCOVER數(shù)據(jù)包(包中包含客戶機(jī)的MAC地址和計(jì)算機(jī)名等信息)。因?yàn)榭蛻魴C(jī)還不知道自己屬于哪一個(gè)網(wǎng)絡(luò),所以封包的源地址為0.0.0.0,目標(biāo)地址為255.255.255.255,然后再附上DHCP discover的信息,向網(wǎng)絡(luò)進(jìn)行廣播。
DHCP discover的等待時(shí)間預(yù)設(shè)為1秒,也就是當(dāng)客戶機(jī)將第一個(gè)DHCP discover封包送出去之后,在1秒之內(nèi)沒有得到回應(yīng)的話,就會(huì)進(jìn)行第二次DHCP discover廣播。若一直沒有得到回應(yīng),客戶機(jī)會(huì)將這一廣播包重新發(fā)送四次(以2,4,8,16秒為間隔,加上1-1000毫秒之間隨機(jī)長度的時(shí)間)。如果都沒有得到DHCP Server的回應(yīng),客戶機(jī)會(huì)從169.254.0.0/16這個(gè)自動(dòng)保留的私有IP地址中選用一個(gè)IP地址。并且每隔5分鐘重新廣播一次,如果收到某個(gè)服務(wù)器的響應(yīng),則繼續(xù)IP租用過程。
2. 提供IP地址租用
當(dāng)DHCP Server監(jiān)聽到客戶機(jī)發(fā)出的DHCP discover廣播后,它會(huì)從那些還沒有租出去的地址中,選擇最前面的空置IP,連同其它TCP/IP設(shè)定,通過UDP 68端口響應(yīng)給客戶機(jī)一個(gè)DHCP OFFER數(shù)據(jù)包(包中包含IP地址、子網(wǎng)掩碼、地址租期等信息)。此時(shí)還是使用廣播進(jìn)行通訊,源IP地址為DHCP Server的IP地址,目標(biāo)地址為255.255.255.255。同時(shí),DHCP Server為此客戶保留它提供的IP地址,從而不會(huì)為其他DHCP客戶分配此IP地址。
由于客戶機(jī)在開始的時(shí)候還沒有IP地址,所以在其DHCP discover封包內(nèi)會(huì)帶有其MAC地址信息,并且有一個(gè)XID編號(hào)來辨別該封包,DHCP Server響應(yīng)的DHCP OFFER封包則會(huì)根據(jù)這些資料傳遞給要求租約的客戶。
3. 接受IP租約
如果客戶機(jī)收到網(wǎng)絡(luò)上多臺(tái)DHCP服務(wù)器的響應(yīng),只會(huì)挑選其中一個(gè)DHCP OFFER(一般是最先到達(dá)的那個(gè)),并且會(huì)向網(wǎng)絡(luò)發(fā)送一個(gè)DHCP REQUEST廣播數(shù)據(jù)包(包中包含客戶端的MAC地址、接受的租約中的IP地址、提供此租約的DHCP服務(wù)器地址等),告訴所有DHCP Server它將接受哪一臺(tái)服務(wù)器提供的IP地址,所有其他的DHCP服務(wù)器撤銷它們的提供以便將IP地址提供給下一次IP租用請(qǐng)求。此時(shí),由于還沒有得到DHCP Server的最后確認(rèn),客戶端仍然使用0.0.0.0為源IP地址,255.255.255.255為目標(biāo)地址進(jìn)行廣播。
事實(shí)上,并不是所有DHCP客戶機(jī)都會(huì)無條件接受DHCP Server的OFFER,特別是如果這些主機(jī)上安裝有其它TCP/IP相關(guān)的客戶機(jī)軟件??蛻魴C(jī)也可以用DHCP REQUEST向服務(wù)器提出DHCP選擇,這些選擇會(huì)以不同的號(hào)碼填寫在DHCP Option Field里面。客戶機(jī)可以保留自己的一些TCP/IP設(shè)定。
4. 租約確認(rèn)
當(dāng)DHCP Server接收到客戶機(jī)的DHCP REQUEST之后,會(huì)廣播返回給客戶機(jī)一個(gè)DHCP ACK消息包,表明已經(jīng)接受客戶機(jī)的選擇,并將這一IP地址的合法租用以及其他的配置信息都放入該廣播包發(fā)給客戶機(jī)。
客戶機(jī)在接收到DHCP ACK廣播后,會(huì)向網(wǎng)絡(luò)發(fā)送三個(gè)針對(duì)此IP地址的ARP解析請(qǐng)求以執(zhí)行沖突檢測(cè),查詢網(wǎng)絡(luò)上有沒有其它機(jī)器使用該IP地址;如果發(fā)現(xiàn)該IP地址已經(jīng)被使用,客戶機(jī)會(huì)發(fā)出一個(gè)DHCP DECLINE數(shù)據(jù)包給DHCP Server,拒絕此IP地址租約,并重新發(fā)送DHCP discover信息。此時(shí),在DHCP服務(wù)器管理控制臺(tái)中,會(huì)顯示此IP地址為BAD_ADDRESS。
如果網(wǎng)絡(luò)上沒有其它主機(jī)使用此IP地址,則客戶機(jī)的TCP/IP使用租約中提供的IP地址完成初始化,從而可以和其他網(wǎng)絡(luò)中的主機(jī)進(jìn)行通訊。
二、DHCP客戶機(jī)租期續(xù)約:
客戶機(jī)會(huì)在租期過去50%的時(shí)候,直接向?yàn)槠涮峁?/span>IP地址的DHCP Server發(fā)送DHCP REQUEST消息包。如果客戶機(jī)接收到該服務(wù)器回應(yīng)的DHCP ACK消息包,客戶機(jī)就根據(jù)包中所提供的新的租期以及其它已經(jīng)更新的TCP/IP參數(shù),更新自己的配置,IP租用更新完成。如果沒有收到該服務(wù)器的回復(fù),則客戶機(jī)繼續(xù)使用現(xiàn)有的IP地址,因?yàn)楫?dāng)前租期還有50%。
如果在租期過去50%的時(shí)候沒有更新,則客戶機(jī)將在租期過去87.5%的時(shí)候再次向?yàn)槠涮峁?/span>IP地址的DHCP聯(lián)系。如果還不成功,到租約的100%時(shí)候,客戶機(jī)必須放棄這個(gè)IP地址,重新申請(qǐng)。如果此時(shí)無DHCP可用,客戶機(jī)會(huì)使用169.254.0.0/16中隨機(jī)的一個(gè)地址,并且每隔5分鐘再進(jìn)行嘗試。