1. 程式人生 > >DHCP協議原理及其實現流程

DHCP協議原理及其實現流程

DHCPDynamic Host Configuration Protocol:動態主機配置協議

在常見的小型網路中(例如家庭網路和學生宿舍網),網路管理員都是採用手工分配IP地址的方法,而到了中、大型網路,這種方法就不太適用了。在中、大型網路,特別是大型網路中,往往有超過100臺的客戶機,手動分配IP地址的方法就不太合適了。因此,我們必須引入一種高效的IP地址分配方法,幸好,DHCPDynamic Host Configuration Protocol)為我們解決了這一難題。

DHCP的優缺點

DHCP服務優點不少:網路管理員可以驗證IP地址和其它配置引數,而不用去檢查每個主機;DHCP不會同時租借相同的

IP地址給兩臺主機;DHCP管理員可以約束特定的計算機使用特定的IP地址;可以為每個DHCP作用域設定很多選項;客戶機在不同子網間移動時不需要重新設定IP地址。

但同時也存在不少缺點:DHCP不能發現網路上非DHCP客戶機已經在使用的IP地址;當網路上存在多個DHCP伺服器時,一個DHCP伺服器不能查出已被其它伺服器租出去的IP地址;DHCP伺服器不能跨路由器與客戶機通訊,除非路由器允許BOOTP轉發。

工作流程

DHCP服務的工作過程是這樣的:

1. 發現階段,即DHCP客戶機尋找DHCP伺服器的階段。DHCP客戶機以廣播方式(因為DHCP伺服器的IP地址對於客戶機來說是未知的)傳送DHCP discover

發現資訊來尋找DHCP伺服器,即向地址255.255.255.255傳送特定的廣播資訊。網路上每一臺安裝了TCP/IP協議的主機都會接收到這種廣播資訊,但只有DHCP伺服器才會做出響應

    

2. 提供階段,即DHCP伺服器提供IP地址的階段。在網路中接收到DHCP discover發現資訊的DHCP伺服器都會做出響應,它從尚未出租的IP地址中挑選一個分配給DHCP客戶機,向DHCP客戶機發送一個包含出租的IP地址和其他設定的DHCP offer提供資訊

   

3. 選擇階段,即DHCP客戶機選擇某臺DHCP伺服器提供的IP地址的階段。如果有多臺DHCP伺服器向DHCP客戶機發來的DHCP offer

提供資訊,則DHCP客戶機只接受第一個收到的DHCP offer提供資訊然後它就以廣播方式回答一個DHCP request請求資訊,該資訊中包含向它所選定的DHCP伺服器請求IP地址的內容。之所以要以廣播方式回答,是為了通知所有的DHCP伺服器,他將選擇某臺DHCP伺服器所提供的IP地址

   

4. 確認階段,即DHCP伺服器確認所提供的IP地址的階段。當DHCP伺服器收到DHCP客戶機回答的DHCP request請求資訊之後,它便向DHCP客戶機發送一個包含它所提供的IP地址和其他設定的DHCP ack確認資訊,告訴DHCP客戶機可以使用它所提供的IP地址。然後DHCP客戶機便將其TCP/IP協議與網絡卡繫結,另外,除DHCP客戶機選中的伺服器外,其他的DHCP伺服器都將收回曾提供的IP地址

   

5. 重新登入。以後DHCP客戶機每次重新登入網路時就不需要再發送DHCP discover發現資訊了,而是直接傳送包含前一次所分配的IP地址的DHCP request請求資訊。當DHCP伺服器收到這一資訊後,它會嘗試讓DHCP客戶機繼續使用原來的IP地址,並回答一個DHCP ack確認資訊。如果此IP地址已無法再分配給原來的DHCP客戶機使用時(比如此IP地址已分配給其它DHCP客戶機使用),則DHCP伺服器給DHCP客戶機回答一個DHCP nack否認資訊。當原來的DHCP客戶機收到此DHCP nack否認資訊後,它就必須重新發送DHCP discover發現資訊來請求新的IP地址。

6. 更新租約。DHCP伺服器向DHCP客戶機出租的IP地址一般都有一個租借期限,期滿後DHCP伺服器便會收回出租的IP地址。如果DHCP客戶機要延長其IP租約,則必須更新其IP租約。DHCP客戶機啟動時和IP租約期限過一半時,DHCP客戶機都會自動向DHCP伺服器傳送更新其IP租約的資訊。

為了便於理解,我們把DHCP客戶機比做餐館裡的客人,DHCP伺服器比做服務員(一個餐館裡也可以有多個服務員),IP地址比做客戶需要的食物。那麼可以這樣描述整個過程:客人走進餐館,問:有沒有服務員啊?DHCP discover),多個服務員同時回答:有,我這有雞翅”“有,我這有漢堡DHCP offer)。客人說:好吧,我要一份漢堡DHCP request,這個客人比較死板,總是選擇第一次聽到的食物),端著漢堡的服務員迴應了一聲:來啦DHCP ack),並把食物端到客人面前,供其享用(將網絡卡和IP地址繫結)。客人下次來的時候,就直接找上次那個服務員點自己喜歡的漢堡了(DHCP request),如果還有漢堡,服務員會再次確認並上菜(DHCP ack),而如果已經賣完了,服務員則會告訴客人:不好意思,已經賣完了DHCP nack)。當然,服務員隔一段時間會來收拾一次桌子,除非客人特別說明這菜還要繼續吃的,服務員會將剩菜端走。

DHCP CLIENT的行為

所有支援DHCP 協議並能夠發起DHCP過程的終端都稱之為DHCP CLIENT包括普通PC各種特殊裝置CABLEMODEMIDTDHCP CLIENT自己必須能夠發出DHCPDISCOVERDHCPREQUESTDHCPDECLINE等報文DHCPINFORM報文也是DHCP CLIENT發出但實際中很少見),並且必須能夠處理從伺服器收到的以下幾種報文DHCPOFFERDHCPACKDHCPNAK

  

                                                                      圖 DHCP CLIENT 行為圖

DHCP互動過程

     標準的DHCP server 和client的互動過程如下圖所示,


                                   圖 DHCP互動過程時序圖

如果客戶通過別的手段獲得了網路地址,它可以使用DHCPINFORM請求獲得其它配置引數,伺服器接收到DHCPINFORM包,並建立一個DHCPACK訊息,在其中包括一些合適客戶的配置引數,只是不包括分配網路地址,檢查現有的繫結,在資訊中不填充'yiaddr'欄位或租用時間引數。伺服器取得DHCPINFORM包內的'ciaddr'地址,而返回DHCPACK包。

DHCPDECLINE ——客戶機通知伺服器,其分配的地址已經被其他設.