DHCP協(xié)議功能全透視
在網(wǎng)絡(luò)之中,IP是最為重要的支架了。那么這里我們就來(lái)講解一下DHCP協(xié)議,那么跟IP有什么關(guān)系呢?下面我們就來(lái)看看DHCP協(xié)議功能與工作形的有關(guān)內(nèi)容吧。式正如我們前面看到的當(dāng)使用TCP/IP協(xié)定的時(shí)候如果要電腦之間能夠直接傳遞信息就必須使用相同的NetID和不同的HostID。這樣您就得為每臺(tái)電腦設(shè)定IP以及管理好紀(jì)錄。要是您想管理好一個(gè)比較大的網(wǎng)路或是電腦節(jié)點(diǎn)經(jīng)常改變(如撥接網(wǎng)路)這樣的工作可以說(shuō)是非常令人煩厭的而且出錯(cuò)的機(jī)會(huì)也比較多。另外如果在進(jìn)行IP重新規(guī)劃的時(shí)候其工作量也是相當(dāng)驚人的。下面就讓我們一起揭開(kāi)DHCP的神秘面紗
DHCP
DHCP是DynamicHostConfigurationProtocol之縮寫(xiě)它的前身是BOOTP。BOOTP原本是用於無(wú)磁碟主機(jī)連接的網(wǎng)路上面的網(wǎng)路主機(jī)使用BOOTROM而不是磁碟起動(dòng)并連接上網(wǎng)路BOOTP則可以自動(dòng)地為那些主機(jī)設(shè)定TCP/IP環(huán)境。
DHCP可以說(shuō)是BOOTP的增強(qiáng)版本它分為兩個(gè)部份一個(gè)是伺服器端而另一個(gè)是客戶端。所有的IP網(wǎng)路設(shè)定資料都由DHCP伺服器集中管理并負(fù)責(zé)處理客戶端的HDCP要求而客戶端則會(huì)使用從伺服器分配下來(lái)的IP環(huán)境資料。
DHCP協(xié)議功能
首先必須有一臺(tái)DHCP工作在網(wǎng)路上面它會(huì)監(jiān)聽(tīng)網(wǎng)路的DHCP請(qǐng)求它提供兩種IP定位方式
Automatic Allocation
自動(dòng)分配其情形是一旦DHCP客戶端***次成功的從DHCP伺服器端租用到IP位址之後就永遠(yuǎn)使用這個(gè)位址。
Dynamic Allocation
動(dòng)態(tài)分配當(dāng)DHCP協(xié)議功能***次從HDCP伺服器端租用到IP位址之後并非***的使用該位址只要租約到期客戶端就得釋放(release)這個(gè)IP位址以給其它工作站使用。當(dāng)然客戶端也可以延續(xù)(renew)租約或是租用其它的IP位址。
動(dòng)態(tài)分配顯然比自動(dòng)分配更加靈活尤其是當(dāng)您的實(shí)際IP位址不足的時(shí)候例如您是一家ISP只能提供200個(gè)IP位址用來(lái)給撥接客戶但并不意味著您的客戶最多只能有200個(gè)。因?yàn)橐滥目蛻魝儾豢赡苋客粫r(shí)間上網(wǎng)的除了他們各自的行為習(xí)慣的不同也有可能是電話線路的限制。這樣您就可以將這200個(gè)地址輪流的租用給撥接上來(lái)的客戶使用了。這也是為什麼當(dāng)您用winipcfg來(lái)查看您的IP地址的時(shí)候會(huì)因每次接撥而不同的原因了(除非您申請(qǐng)的是一個(gè)固定IP通常的ISP都可以滿足這樣的要求當(dāng)然可能要另外收費(fèi)啦)。當(dāng)然ISP不一定使用DHCP來(lái)分配地址但和使用IPPool的原理是一樣的。
DHCP除了能動(dòng)態(tài)的設(shè)定IP位址之外還可以將一些IP保留下來(lái)給一些特殊用途的機(jī)器使用也可以按照MAC地址來(lái)分配固定的IP地址這樣可以給您更大的設(shè)計(jì)空間。同時(shí)DHCP還可以幫客戶端指定網(wǎng)路網(wǎng)關(guān)routerNetMaskDNS伺服器WINS伺服器等等項(xiàng)目您在客戶端上面除了將DHCP協(xié)議功能選項(xiàng)打勾之外幾乎無(wú)需做任何的IP環(huán)境設(shè)定。
DHCP協(xié)議功能的工作形式
視乎客戶端是否***次登錄網(wǎng)路DHCP的工作形式會(huì)有所不同。
***次登錄的時(shí)候
IP租用要求當(dāng)DHCP客戶端***次登錄網(wǎng)路的時(shí)候也就是客戶發(fā)現(xiàn)本機(jī)上沒(méi)有任何IP資料設(shè)定它會(huì)向網(wǎng)路發(fā)出一個(gè)Dhcpdiscover封包。因?yàn)榭蛻舳诉€不知道自己屬於哪一個(gè)網(wǎng)路所以封包的來(lái)源地址會(huì)為0.0.0.0而目的地址則為255.255.255.255然後再附上Dhcpdiscover的信息向網(wǎng)路進(jìn)行廣播。
Dhcpdiscover的等待時(shí)間預(yù)設(shè)為1秒也就是當(dāng)客戶端將***個(gè)Dhcpdiscover封包送出去之後在1秒之內(nèi)沒(méi)有得到回應(yīng)的話就會(huì)進(jìn)行第二次Dhcpdiscover廣播。在得不到回應(yīng)的情況下客戶端一共會(huì)有四次Dhcpdiscover廣播(包括***次在內(nèi))除了***次會(huì)等待1秒之外其余三次的等待時(shí)間分別是91316秒。如果都沒(méi)有得到DHCP伺服器的回應(yīng)客戶端則會(huì)顯示錯(cuò)誤信息宣告Dhcpdiscover的失敗。之後基於使用者的選擇系統(tǒng)會(huì)繼續(xù)在5分鐘之後再重一次Dhcpdiscover的要求。
提供IP租用位址當(dāng)DHCP伺服器監(jiān)聽(tīng)到客戶端發(fā)出的Dhcpdiscover廣播後它會(huì)從那些還沒(méi)有租出的位址圍內(nèi)選擇最前面的的空置IP回應(yīng)給客戶端一個(gè)Dhcpoffer封包。
由於客戶端在開(kāi)始的時(shí)候還沒(méi)有IP地址所以在其Dhcpdiscover封包內(nèi)會(huì)帶有其MAC地址信息并且有一個(gè)XID編號(hào)來(lái)辨別該封包DHCP伺服器回應(yīng)的Dhcpoffer封包則會(huì)根據(jù)這些資料傳遞給要求租約的客戶。根據(jù)伺服器端的設(shè)定Dhcpoffer封包會(huì)包含一個(gè)租約期限的信息。
接受IP租約如果客戶端收到網(wǎng)路上多臺(tái)DHCP伺服器的回應(yīng)只理會(huì)***收到的Dhcpoffer并且會(huì)向網(wǎng)路發(fā)送一個(gè)Dhcprequest廣播封包告訴所有DHCP伺服器它將指定接受哪一臺(tái)伺服器提供的IP地址。
同時(shí)客戶端還會(huì)向網(wǎng)路發(fā)送一個(gè)ARP(AddressResolutionProtocol我們將會(huì)在下面碰到)封包查詢網(wǎng)路上面有沒(méi)有其它機(jī)器使用該IP地址如果發(fā)現(xiàn)該IP已經(jīng)被占用客戶端則會(huì)送出一個(gè)Dhcpdeclient封包給DHCP伺服器拒絕接受其Dhcpoffer并重新發(fā)送Dhcpdiscover信息。
事實(shí)上并不是所有DHCP客戶端都會(huì)無(wú)條件接受DHCP伺服器的offer尤其這些主機(jī)安裝有其它TCP/IP相關(guān)的客戶軟體??蛻舳艘部梢杂肈hcp request向伺服器提出DHCP協(xié)議功能選擇而這些選擇會(huì)以不同的號(hào)碼填寫(xiě)在DHCPOptionField里面
號(hào)碼代表意思
01Sub-netMask
03RouterAddress
06DNSServerAddress
0FDomainName
2CWINS/NBNSServerAddress
2EWINS/NBTNodeType
2FNetBIOSScopeID
換一句話說(shuō)在DHCP伺服器上面的設(shè)定未必和所有客戶端都一致客戶端可以保留自己的一些TCP/IP設(shè)定。
IP租約確認(rèn)當(dāng)DHCP伺服器接收到客戶端的Dhcprequest之後會(huì)向客戶端發(fā)出一個(gè)Dhcpack回應(yīng)以確認(rèn)IP租約的正式生效也就結(jié)束了一個(gè)完整的DHCP工作過(guò)程。
***次登錄之后
一旦DHCP客戶端成功地從伺服器哪里取得DHCP租約之後除非其租約已經(jīng)失效并且IP地址也重新設(shè)定回0.0.0.0否則就無(wú)需再發(fā)送Dhcpdiscover信息了而會(huì)直接使用已經(jīng)租用到的IP地址向DHCP伺服器發(fā)出Dhcprequest信息DHCP伺服器會(huì)量讓客戶端使用原來(lái)的IP地址如果沒(méi)問(wèn)題的話直接回應(yīng)Dhcpack來(lái)確認(rèn)則可。如果該地址已經(jīng)失效或已經(jīng)被其它機(jī)器使用了伺服器則會(huì)回應(yīng)一個(gè)Dhcpnack封包給客戶端要求其從新執(zhí)行Dhcpdiscover。
至於IP的租約期限卻是非??季康牟⒎侨缥覀冏夥孔幽菢雍?jiǎn)單以NT為例子DHCP協(xié)議功能工作站除了在開(kāi)機(jī)的時(shí)候發(fā)出dhcprequest請(qǐng)求之外在租約期限一半的時(shí)候也會(huì)發(fā)出dhcprequest如果此時(shí)得不到DHCP伺服器的確認(rèn)的話工作站還可以繼續(xù)使用該IP然後在剩下的租約期限的再一半的時(shí)候(即租約的75%)還得不到確認(rèn)的話那麼工作站就不能擁有這個(gè)IP了。至於為什麼不是到租約期限完全結(jié)束才放棄IP呢對(duì)不起小弟也是不學(xué)無(wú)術(shù)之人沒(méi)有去深究了只知道要回答MCSE問(wèn)題的時(shí)候您一定要記得NT是這麼工作的就是了。
當(dāng)然您也可以隨時(shí)使用命令將DHCP租約release掉啦就算您的租約在前一秒鐘才獲得的。
跨網(wǎng)路的DHCP協(xié)議功能運(yùn)作
以上的情形是在同一網(wǎng)路之內(nèi)進(jìn)行的但如果DHCP伺服器安設(shè)在其它的網(wǎng)路上面呢由DHCP客戶端還沒(méi)有IP環(huán)境設(shè)定所以也不知道Router地址而且有些Router也不一定會(huì)將DHCP廣播封包傳遞出去這時(shí)候我們可以用DHCPAgent(或DHCPProxy)主機(jī)來(lái)接管客戶的DHCP請(qǐng)求然後將此請(qǐng)求傳遞給真正的DHCP伺服器然後將伺服器的回覆傳給客戶。這里Proxy主機(jī)必須自己具有routing能力。
當(dāng)然您也可以在每一個(gè)網(wǎng)路之中安裝DHCP伺服器但這樣的話一來(lái)設(shè)備成本會(huì)增加而且管理上面也比較分散。當(dāng)然如果在一個(gè)十分大型的網(wǎng)路中這樣的均衡式架構(gòu)還是可取的。