DHCP協議的IP分配
今天我們主要講解的是DHCP協議的工作原理和IP的相關解析內容。看看具體的IP分配,DHCP協議是如何實現的吧。首先讓我們從尋找Server的角度出發吧。
DHCP協議的工作原理
根據客戶端是否***次登錄網絡,DHCP的工作形式會有所不同。 ***次登錄的時候:
尋找 Server
當 DHCP客戶端***次登錄網絡的時候,也就是客戶發現本機上沒有任何IP數據設定,它會向網絡發出一個 DHCPDISCOVER 封包。因為客戶端還不知道自己屬于哪一個網絡,所以封包的來源地址會為 0.0.0.0 ,而目的地址則為 255.255.255.255 ,然后再附上 DHCPdiscover 的信息,向網絡進行廣播。
在 Windows 的預設情形下,DHCPdiscover 的等待時間預設為 1 秒,也就是當客戶端將***個 DHCPdiscover 封包送出去之后,在 1 秒之內沒有得到響應的話,就會進行第二次 DHCPdiscover 廣播。若一直得不到響應的情況下,客戶端一共會有四次 DHCPdiscover 廣播(包括***次在內),除了***次會等待 1 秒之外,其余三次的等待時間分別是 9、13、16 秒。如果都沒有得到 DHCP服務器的響應,客戶端則會顯示錯誤信息,宣告 DHCPdiscover 的失敗。之后,基于使用者的選擇,系統會繼續在 5 分鐘之后再重復一次 DHCPdiscover 的過程。
提供IP租用地址
當DHCP協議服務器監聽到客戶端發出的 DHCPdiscover 廣播后,它會從那些還沒有租出的地址范圍內,選擇最前面的空置IP,連同其它TCP/IP設定,響應給客戶端一個DHCPOFFER封包。
由于客戶端在開始的時候還沒有IP地址,所以在其 DHCPdiscover 封包內會帶有其 MAC 地址信息,并且有一個 XID 編號來辨別該封包,DHCP服務器響應的 DHCPoffer 封包則會根據這些資料傳遞給要求租約的客戶。根據服務器端的設定,DHCPoffer 封包會包含一個租約期限的信息。
接受IP租約
如果客戶端收到網絡上多臺DHCP協議服務器的響應,只會挑選其中一個 DHCPoffer 而已(通常是***抵達的那個),并且會向網絡發送一個DHCPrequest廣播封包,告訴所有 DHCP服務器它將指定接受哪一臺服務器提供的IP地址。
同時,客戶端還會向網絡發送一個 ARP 封包,查詢網絡上面有沒有其它機器使用該IP地址;如果發現該IP已經被占用,客戶端則會送出一個 DHCPDECLIENT 封包給 DHCP服務器,拒絕接受其 DHCPoffer ,并重新發送 DHCPdiscover 信息。
事實上,并不是所有 DHCP客戶端都會無條件接受 DHCP服務器的 offer ,尤其這些主機安裝有其它TCP/IP相關的客戶軟件。客戶端也可以用 DHCPrequest 向服務器提出 DHCP選擇,而這些選擇會以不同的號碼填寫在 DHCPOption Field 里面: 換一句話說,在 DHCP服務器上面的設定,未必是客戶端全都接受,客戶端可以保留自己的一些TCP/IP設定。而主動權永遠在客戶端這邊。