請說明DHCP的意義與用途
DHCP 是 Dynamic Host Configuration Protocol 之縮寫﹐它的前身是 BOOTP。BOOTP 原本是用於無磁碟主機連接的網路上面的﹕網路主機使用 BOOT ROM 而不是磁碟起動並連接上網路﹐BOOTP 則可以自動地為那些主機設定 TCP/IP 環境。但 BOOTP 有一個缺點:您在設定前須事先獲得客戶端的硬體位址,而且,與 IP 的對應是靜態的。換而言之,BOOTP 非常缺乏 "動態性" ,若在有限的 IP 資源環境中,BOOTP 的一對一對應會造成非常可觀的浪費。
DHCP 可以說是 BOOTP 的增強版本﹐它分為兩個部份﹕一個是伺服器端﹐而另一個是客戶端。所有的 IP 網路設定資料都由 DHCP 伺服器集中管理﹐並負責處理客戶端的 DHCP 要求﹔而客戶端則會使用從伺服器分配下來的IP環境資料。比較起 BOOTP ,DHCP 透過 "租約" 的概念,有效且動態的分配客戶端的 TCP/IP 設定,而且,作為兼容考量,DHCP 也完全照顧了 BOOTP Client 的需求。
DHCP 的分配形式
首先﹐必須至少有一台 DHCP 工作在網路上面﹐它會監聽網路的 DHCP 請求﹐並與客戶端搓商 TCP/IP 的設定環境。它提供兩種 IP 定位方式﹕
Automatic Allocation 自動分配﹐其情形是﹕一旦 DHCP 客戶端第一次成功的從 DHCP 伺服器端租用到 IP 位址之後﹐就永遠使用這個位址。
Dynamic Allocation 動態分配﹐當 DHCP 第一次從 HDCP 伺服器端租用到 IP 位址之後﹐並非永久的使用該位址﹐只要租約到期﹐客戶端就得釋放(release)這個 IP 位址﹐以給其它工作站使用。當然﹐客戶端可以比其它主機更優先的延續(renew)租約﹐或是租用其它的 IP 位址。
動態分配顯然比自動分配更加靈活﹐尤其是當您的實際 IP 位址不足的時候﹐例如﹕您是一家 ISP ﹐只能提供 200 個IP位址用來給撥接客戶﹐但並不意味著您的客戶最多只能有 200 個。因為要知道﹐您的客戶們不可能全部同一時間上網的﹐除了他們各自的行為習慣的不同﹐也有可能是電話線路的限制。這樣﹐您就可以將這 200 個位址﹐輪流的租用給撥接上來的客戶使用了。這也是為什麼當您查看 IP 位址的時候﹐會因每次撥接而不同的原因了(除非您申請的是一個固定 IP ﹐通常的 ISP 都可以滿足這樣的要求﹐這或許要另外收費)。當然﹐ISP 不一定使用 DHCP 來分配位址﹐但這個概念和使用 IP Pool 的原理是一樣的。
DHCP 除了能動態的設定 IP 位址之外﹐還可以將一些 IP 保留下來給一些特殊用途的機器使用﹐它可以按照硬體位址來固定的分配 IP 位址﹐這樣可以給您更大的設計空間。同時﹐DHCP 還可以幫客戶端指定 router﹑netmask﹑DNS Server﹑WINS Server﹑等等項目﹐您在客戶端上面﹐除了將 DHCP 選項打勾之外﹐幾乎無需做任何的 IP 環境設定。
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 已經被佔用﹐客戶端則會送出一個 DHCPDECLINE 封包給 DHCP 伺服器﹐拒絕接受其 Dhcpoffer ﹐並重新發送 Dhcpdiscover 信息。
事實上﹐並不是所有 DHCP 客戶端都會無條件接受 DHCP 伺服器的 offer ﹐尤其這些主機安裝有其它 TCP/IP 相關的客戶軟體。客戶端也可以用 Dhcprequest 向伺服器提出 DHCP 選擇﹐而這些選擇會以不同的號碼填寫在 DHCP Option Field 裡面﹕
江老師:你們知道我們的電腦教室可以透過DHCP上網嗎?? ---------------可以!