在常見的小型網絡中(例如家庭網絡和學生宿捨網),網絡管理員都是采用手工分配IP地址的方法,而到了中、大型網絡,這種方法就不太適用了。在中、大型網絡,特別是大型網絡中,往往有超過100台的客戶機,手動分配IP地址的方法就不太合適了。因此,我們必須引入一種高效的IP地址分配方法,幸好,DHCP(DynamicHostConfigurationProtocol)為我們解決了這一難題。
DHCP的優缺點
DHCP服務優點不少:網絡管理員可以驗證IP地址和其它配置參數,而不用去檢查每個主機;DHCP不會同時租借相同的IP地址給兩台主機;DHCP管理員可以約束特定的計算機使用特定的IP地址;可以為每個DHCP作用域設置很多選項;客戶機在不同子網間移動時不需要重新設置IP地址。
但同時也存在不少缺點:DHCP不能發現網絡上非DHCP客戶機已經在使用的IP地址;當網絡上存在多個DHCP服務器時,一個DHCP服務器不能查出已被其它服務器租出去的IP地址;DHCP服務器不能跨路由器與客戶機通信,除非路由器允許BOOTP轉發。
工作流程
DHCP服務的工作過程是這樣的:
1.發現階段,即DHCP客戶機尋找DHCP服務器的階段。DHCP客戶機以廣播方式(因為DHCP服務器的IP地址對於客戶機來說是未知的)發送DHCPdiscover發現信息來尋找DHCP服務器,即向地址255.255.255.255發送特定的廣播信息。網絡上每一台安裝了TCP/IP協議的主機都會接收到這種廣播信息,但只有DHCP服務器才會做出響應(如圖1)。
2.提供階段,即DHCP服務器提供IP地址的階段。在網絡中接收到DHCPdiscover發現信息的DHCP服務器都會做出響應,它從尚未出租的IP地址中挑選一個分配給DHCP客戶機,向DHCP客戶機發送一個包含出租的IP地址和其他設置的DHCPoffer提供信息(如圖2)。
3.選擇階段,即DHCP客戶機選擇某台DHCP服務器提供的IP地址的階段。如果有多台DHCP服務器向DHCP客戶機發來的DHCPoffer提供信息,則DHCP客戶機只接受第一個收到的DHCPoffer提供信息,然後它就以廣播方式回答一個DHCPrequest請求信息,該信息中包含向它所選定的DHCP服務器請求IP地址的內容。之所以要以廣播方式回答,是為了通知所有的DHCP服務器,他將選擇某台DHCP服務器所提供的IP地址(如圖3)。
4.確認階段,即DHCP服務器確認所提供的IP地址的階段。當DHCP服務器收到DHCP客戶機回答的DHCPrequest請求信息之後,它便向DHCP客戶機發送一個包含它所提供的IP地址和其他設置的DHCPack確認信息,告訴DHCP客戶機可以使用它所提供的IP地址。然後DHCP客戶機便將其TCP/IP協議與網卡綁定,另外,除DHCP客戶機選中的服務器外,其他的DHCP服務器都將收回曾提供的IP地址(如圖4)。
5.重新登錄。以後DHCP客戶機每次重新登錄網絡時,就不需要再發送DHCPdiscover發現信息了,而是直接發送包含前一次所分配的IP地址的DHCPrequest請求信息。當DHCP服務器收到這一信息後,它會嘗試讓DHCP客戶機繼續使用原來的IP地址,並回答一個DHCPack確認信息。如果此IP地址已無法再分配給原來的DHCP客戶機使用時(比如此IP地址已分配給其它DHCP客戶機使用),則DHCP服務器給DHCP客戶機回答一個DHCPnack否認信息。當原來的DHCP客戶機收到此DHCPnack否認信息後,它就必須重新發送DHCPdiscover發現信息來請求新的IP地址。
6.更新租約。DHCP服務器向DHCP客戶機出租的IP地址一般都有一個租借期限,期滿後DHCP服務器便會收回出租的IP地址。如果DHCP客戶機要延長其IP租約,則必須更新其IP租約。DHCP客戶機啟動時和IP租約期限過一半時,DHCP客戶機都會自動向DHCP服務器發送更新其IP租約的信息。
為了便於理解,我們把DHCP客戶機比做餐館裡的客人,DHCP服務器比做服務員(一個餐館裡也可以有多個服務員),IP地址比做客戶需要的食物。那麼可以這樣描述整個過程:客人走進餐館,問:“有沒有服務員啊?”(DHCPdiscover),多個服務員同時回答:“有,我這有雞翅”“有,我這有漢堡”(DHCPoffer)。客人說:“好吧,我要一份漢堡”(DHCPrequest,這個客人比較死板,總是選擇第一次聽到的食物),端著漢堡的服務員回應了一聲:“來啦”(DHCPack),並把食物端到客人面前,供其享用(將網卡和IP地址綁定)。客人下次來的時候,就直接找上次那個服務員點自己喜歡的漢堡了(DHCPrequest),如果還有漢堡,服務員會再次確認並上菜(DHCPack),而如果已經賣完了,服務員則會告訴客人:“不好意思,已經賣完了”(DHCPnack)。當然,服務員隔一段時間會來收拾一次桌子,除非客人特別說明這菜還要繼續吃的,服務員會將剩菜端走。