DHCP 協議工作流程

DHCP一共有8種報文,分別爲DHCP Discover、DHCP Offer、DHCP Request、DHCP ACK、DHCP NAK、DHCP Release、DHCP Decline、DHCP Inform。各種類型報文的基本功能如下:

 

DHCP報文類型

說明

DHCP Discover

(廣播)

DHCP客戶端在請求IP地址時並不知道DHCP服務器的位置,因此DHCP客戶端會在本地網絡內以廣播方式發送Discover請求報文,以發現網絡中的DHCP服務器。所有收到Discover報文的DHCP服務器都會發送應答報文,DHCP客戶端據此可以知道網絡中存在的DHCP服務器的位置。

DHCP Offer

(廣播,單播)

DHCP服務器收到Discover報文後,就會在所配置的地址池中查找一個合適的IP地址,加上相應的租約期限和其他配置信息(如網關、DNS服務器等),構造一個Offer報文,發送給DHCP客戶端,告知用戶本服務器可以爲其提供IP地址。但這個報文只是告訴DHCP客戶端可以提供IP地址,最終還需要客戶端通過ARP來檢測該IP地址是否重複。

DHCP Request

(廣播,單播)

DHCP客戶端可能會收到很多Offer請求報文,所以必須在這些應答中選擇一個。通常是選擇第一個Offer應答報文的服務器作爲自己的目標服務器,並向該服務器發送一個廣播的Request請求報文,通告選擇的服務器,希望獲得所分配的IP地址。另外,DHCP客戶端在成功獲取IP地址後,在地址使用租期達到50%時,會向DHCP服務器發送單播Request請求報文請求續延租約,如果沒有收到ACK報文,在租期達到87.5%時,會再次發送單播的Request請求報文以請求續延租約。

DHCP ACK

(廣播,單播)

DHCP服務器收到Request請求報文後,根據Request報文中攜帶的用戶MAC來查找有沒有相應的租約記錄,如果有則發送ACK應答報文,通知用戶可以使用分配的IP地址。

DHCP NAK

(廣播,單播)

如果DHCP服務器收到Request請求報文後,沒有發現有相應的租約記錄或者由於某些原因無法正常分配IP地址,則向DHCP客戶端發送NAK應答報文,通知用戶無法分配合適的IP地址。

DHCP Release

(單播)

當DHCP客戶端不再需要使用分配IP地址時,就會主動向DHCP服務器發送RELEASE請求報文,告知服務器用戶不再需要分配IP地址,請求DHCP服務器釋放對應的IP地址。

DHCP Decline

(單播)

DHCP客戶端收到DHCP服務器ACK應答報文後,通過地址衝突檢測發現服務器分配的地址衝突或者由於其他原因導致不能使用,則會向DHCP服務器發送Decline請求報文,通知服務器所分配的IP地址不可用,以期獲得新的IP地址。

DHCP Inform

(單播)

DHCP客戶端如果需要從DHCP服務器端獲取更爲詳細的配置信息,則向DHCP服務器發送Inform請求報文;DHCP服務器在收到該報文後,將根據租約進行查找到相應的配置信息後,向DHCP客戶端發送ACK應答報文。目前基本上不用了。

  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)。當然,服務員隔一段時間會來收拾一次桌子,除非客人特別說明這菜還要繼續喫的,服務員會將剩菜端走。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章