掃盲:DHCP的工作原理
視乎客戶端是否***次登錄網(wǎng)路,DHCP 的工作形式會有所不同。
***次登錄的時候:
1. 尋找 Server。當(dāng) DHCP 客戶端***次登錄網(wǎng)路的時候,也就是客戶發(fā)現(xiàn)本機(jī)上沒有任何 IP 資料設(shè)定,它會向網(wǎng)路發(fā)出一個 DHCPDISCOVER 封包。因為客戶端還不知道自己屬于哪一個網(wǎng)路,所以封包的來源位址會為 0.0.0.0 ,而目的位址則為 255.255.255.255 ,然后再附上 Dhcpdiscover 的信息,向網(wǎng)路進(jìn)行廣播。
在 Windows 的預(yù)設(shè)情形下,Dhcpdiscover 的等待時間預(yù)設(shè)為 1 秒,也就是當(dāng)客戶端將***個 Dhcpdiscover 封包送出去之后,在 1 秒之內(nèi)沒有得到回應(yīng)的話,就會進(jìn)行第二次 Dhcpdiscover 廣播。若一直得不到回應(yīng)的情況下,客戶端一共會有四次 Dhcpdiscover 廣播(包括***次在內(nèi)),除了***次會等待 1 秒之外,其余三次的等待時間分別是 9、13、16 秒。如果都沒有得到 DHCP 伺服器的回應(yīng),客戶端則會顯示錯誤信息,宣告 Dhcpdiscover 的失敗。之后,基于使用者的選擇,系統(tǒng)會繼續(xù)在 5 分鐘之后再重復(fù)一次 Dhcpdiscover 的過程。
2. 提供 IP 租用位址。當(dāng) DHCP 伺服器監(jiān)聽到客戶端發(fā)出的 Dhcpdiscover 廣播后,它會從那些還沒有租出的位址范圍內(nèi),選擇最前面的的空置 IP ,連同其它 TCP/IP 設(shè)定,回應(yīng)給客戶端一個 DHCPOFFER 封包。
由于客戶端在開始的時候還沒有 IP 位址,所以在其 Dhcpdiscover 封包內(nèi)會帶有其 MAC 位址信息,并且有一個 XID 編號來辨別該封包,DHCP 伺服器回應(yīng)的 Dhcpoffer 封包則會根據(jù)這些資料傳遞給要求租約的客戶。根據(jù)伺服器端的設(shè)定,Dhcpoffer 封包會包含一個租約期限的信息。
3. 接受 IP 租約。如果客戶端收到網(wǎng)路上多臺 DHCP 伺服器的回應(yīng),只會挑選其中一個 Dhcpoffer 而已(通常是***抵達(dá)的那個),并且會向網(wǎng)路發(fā)送一個Dhcprequest廣播封包,告訴所有 DHCP 伺服器它將指定接受哪一臺伺服器提供的 IP 位址。
同時,客戶端還會向網(wǎng)路發(fā)送一個 ARP 封包,查詢網(wǎng)路上面有沒有其它機(jī)器使用該 IP 位址;如果發(fā)現(xiàn)該 IP 已經(jīng)被占用,客戶端則會送出一個 DHCPDECLINE 封包給 DHCP 伺服器,拒絕接受其 Dhcpoffer ,并重新發(fā)送 Dhcpdiscover 信息。
【編輯推薦】