Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程

DHCP協議

日期:2017/1/24 11:03:18      編輯:Windows Server教程

  正如我們前面看到的當使用TCP/IP協定的時候如果要電腦之間能夠直接傳遞信息就必須使用相同的NetID和不同的HostID。這樣您就得為每台電腦設定IP以及管理好紀錄。要是您想管理好一個比較大的網路或是電腦節點經常改變(如撥接網路)這樣的工作可以說是非常令人煩厭的而且出錯的機會也比較多。另外如果在進行IP重新規劃的時候其工作量也是相當驚人的。

  面對這些情形DHCP可以說您的菩薩了它不但救苦救難而且神通廣大。下面就讓我們一起揭開DHCP的神秘面紗

  什麽是DHCP

  DHCP是DynamicHostConfigurationProtocol之縮寫它的前身是BOOTP。BOOTP原本是用於無磁碟主機連接的網路上面的網路主機使用BOOTROM而不是磁碟起動並連接上網路BOOTP則可以自動地為那些主機設定TCP/IP環境。

  DHCP可以說是BOOTP的增強版本它分為兩個部份一個是伺服器端而另一個是客戶端。所有的IP網路設定資料都由DHCP伺服器集中管理並負責處理客戶端的HDCP要求而客戶端則會使用從伺服器分配下來的IP環境資料。

  DHCP的功能

  首先必須有一台DHCP工作在網路上面它會監聽網路的DHCP請求它提供兩種IP定位方式

  AutomaticAllocation
自動分配其情形是一旦DHCP客戶端第一次成功的從DHCP伺服器端租用到IP位址之後就永遠使用這個位址。

  
DynamicAllocation
動態分配當DHCP第一次從HDCP伺服器端租用到IP位址之後並非永久的使用該位址只要租約到期客戶端就得釋放(release)這個IP位址以給其它工作站使用。當然客戶端也可以延續(renew)租約或是租用其它的IP位址。
動態分配顯然比自動分配更加靈活尤其是當您的實際IP位址不足的時候例如您是一家ISP只能提供200個IP位址用來給撥接客戶但並不意味著您的客戶最多只能有200個。因為要知道您的客戶們不可能全部同一時間上網的除了他們各自的行為習慣的不同也有可能是電話線路的限制。這樣您就可以將這200個地址輪流的租用給撥接上來的客戶使用了。這也是為什麽當您用winipcfg來查看您的IP地址的時候會因每次接撥而不同的原因了(除非您申請的是一個固定IP通常的ISP都可以滿足這樣的要求當然可能要另外收費啦)。當然ISP不一定使用DHCP來分配地址但和使用IPPool的原理是一樣的。

  DHCP除了能動態的設定IP位址之外還可以將一些IP保留下來給一些特殊用途的機器使用也可以按照MAC地址來分配固定的IP地址這樣可以給您更大的設計空間。同時DHCP還可以幫客戶端指定網路網關routerNetMaskDNS伺服器WINS伺服器等等項目您在客戶端上面除了將DHCP選項打勾之外幾乎無需做任何的IP環境設定。

  DHCP的工作形式

  視乎客戶端是否第一次登錄網路DHCP的工作形式會有所不同。

  第一次登錄的時候

  IP租用要求當DHCP客戶端第一次登錄網路的時候也就是客戶發現本機上沒有任何IP資料設定它會向網路發出一個Dhcpdiscover封包。因為客戶端還不知道自己屬於哪一個網路所以封包的來源地址會為0.0.0.0而目的地址則為255.255.255.255然後再附上Dhcpdiscover的信息向網路進行廣播。

  Dhcpdiscover的等待時間預設為1秒也就是當客戶端將第一個Dhcpdiscover封包送出去之後在1秒之內沒有得到回應的話就會進行第二次Dhcpdiscover廣播。在得不到回應的情況下客戶端一共會有四次Dhcpdiscover廣播(包括第一次在內)除了第一次會等待1秒之外其余三次的等待時間分別是91316秒。如果都沒有得到DHCP伺服器的回應客戶端則會顯示錯誤信息宣告Dhcpdiscover的失敗。之後基於使用者的選擇系統會繼續在5分鐘之後再重一次Dhcpdiscover的要求。

  
提供IP租用位址當DHCP伺服器監聽到客戶端發出的Dhcpdiscover廣播後它會從那些還沒有租出的位址圍內選擇最前面的的空置IP回應給客戶端一個Dhcpoffer封包。

  由於客戶端在開始的時候還沒有IP地址所以在其Dhcpdiscover封包內會帶有其MAC地址信息並且有一個XID編號來辨別該封包DHCP伺服器回應的Dhcpoffer封包則會根據這些資料傳遞給要求租約的客戶。根據伺服器端的設定Dhcpoffer封包會包含一個租約期限的信息。

  
接受IP租約如果客戶端收到網路上多台DHCP伺服器的回應只理會最先收到的Dhcpoffer並且會向網路發送一個Dhcprequest廣播封包告訴所有DHCP伺服器它將指定接受哪一台伺服器提供的IP地址。

  同時客戶端還會向網路發送一個ARP(AddressResolutionProtocol我們將會在下面碰到)封包查詢網路上面有沒有其它機器使用該IP地址如果發現該IP已經被占用客戶端則會送出一個Dhcpdeclient封包給DHCP伺服器拒絕接受其Dhcpoffer並重新發送Dhcpdiscover信息。

  事實上並不是所有DHCP客戶端都會無條件接受DHCP伺服器的offer尤其這些主機安裝有其它TCP/IP相關的客戶軟體。客戶端也可以用Dhcprequest向伺服器提出DHCP選擇而這些選擇會以不同的號碼填寫在DHCPOptionField裡面

  
號碼代表意思
01Sub-netMask
03RouterAddress
06DNSServerAddress
0FDomainName
2CWINS/NBNSServerAddress
2EWINS/NBTNodeType
2FNetBIOSScopeID

  換一句話說在DHCP伺服器上面的設定未必和所有客戶端都一致客戶端可以保留自己的一些TCP/IP設定。

  
IP租約確認當DHCP伺服器接收到客戶端的Dhcprequest之後會向客戶端發出一個Dhcpack回應以確認IP租約的正式生效也就結束了一個完整的DHCP工作過程。

  第一次登錄之後

  一旦DHCP客戶端成功地從伺服器哪裡取得DHCP租約之後除非其租約已經失效並且IP地址也重新設定回0.0.0.0否則就無需再發送Dhcpdiscover信息了而會直接使用已經租用到的IP地址向DHCP伺服器發出Dhcprequest信息DHCP伺服器會量讓客戶端使用原來的IP地址如果沒問題的話直接回應Dhcpack來確認則可。如果該地址已經失效或已經被其它機器使用了伺服器則會回應一個Dhcpnack封包給客戶端要求其從新執行Dhcpdiscover。

  至於IP的租約期限卻是非常考究的並非如我們租房子那樣簡單以NT為例子DHCP工作站除了在開機的時候發出dhcprequest請求之外在租約期限一半的時候也會發出dhcprequest如果此時得不到DHCP伺服器的確認的話工作站還可以繼續使用該IP然後在剩下的租約期限的再一半的時候(即租約的75%)還得不到確認的話那麽工作站就不能擁有這個IP了。至於為什麽不是到租約期限完全結束才放棄IP呢對不起小弟也是不學無術之人沒有去深究了只知道要回答MCSE問題的時候您一定要記得NT是這麽工作的就是了。

  當然您也可以隨時使用命令將DHCP租約release掉啦就算您的租約在前一秒鐘才獲得的。

  
跨網路的DHCP運作

  以上的情形是在同一網路之內進行的但如果DHCP伺服器安設在其它的網路上面呢由DHCP客戶端還沒有IP環境設定所以也不知道Router地址而且有些Router也不一定會將DHCP廣播封包傳遞出去這時候我們可以用DHCPAgent(或DHCPProxy)主機來接管客戶的DHCP請求然後將此請求傳遞給真正的DHCP伺服器然後將伺服器的回覆傳給客戶。這裡Proxy主機必須自己具有routing能力。

  當然您也可以在每一個網路之中安裝DHCP伺服器但這樣的話一來設備成本會增加而且管理上面也比較分散。當然如果在一個十分大型的網路中這樣的均衡式架構還是可取的。

Copyright © Windows教程網 All Rights Reserved