1. 程式人生 > >動態主機配置協議DHCP

動態主機配置協議DHCP

廣泛 中繼代理 orange 手動 p地址 默認 form 展示 down

動態主機配置協議DHCP

當某組織獲得一塊地址後,就可以為本組織內的主機或者路由器分配IP地址。這個分配工作可以由系統管理員手動通過網絡管理工具來完成。也可以由動態主機配置協議(Dynamic Host Congfiguration,DHCP)來完成。現在,主機通常是使用DHCP自動獲取IP地址。
當然,網絡管理員也可以配置DHCP,使得一臺主機一直使用相同的IP地址,或者某主機被分配一個臨時的IP地址(即每次都可以是不同的IP地址)。
除了為主機分配IP地址外,DHCP還允許主機得知關於它的其他信息。如子網掩碼、默認網關、本地DNS服務器的地址

因為DHCP使主機自動獲取IP地址等網絡配置信息並使主機接入網絡,所以DHCP也被稱為即插即用協議(plug-and-play protocol)

。這個協議大大的方便了網絡管理人員,還被廣泛地應用於有主機頻繁加入和離開網絡的住宅英特網接入網與無線局域網中。

當有主機加入或離開時,DHCP服務器就要更新其可用的IP地址。

當有一臺主機加入時,DHCP服務器從其當前可用的地址池中分配一個任意地址給它;當一臺主機離開時,其地址便被收回到這個池中。

DHCP運行過程

DHCP是一個客戶--服務器協議。客戶為主機。

在一個網絡中新加入的主機會向DHCP服務器申請地址和得到相關網絡配置信息。最簡單情況是每個子網都配備一臺DHCP服務器,如果某子網中沒有服務器,那麽就需要一個DHCP中繼代理(通常為一臺路由器),這個代理知道DHCP服務器的地址。

下圖展示了DHCP客戶--服務器的一個場景。圖中有一臺DHCP服務器和一臺提供中繼代理服務的路由器。

???技術分享圖片

DHCP是一個4步驟的過程。

DHCP四步驟

DHCP服務器發現

一臺新加入網絡的主機首要任務便是找到與其能夠交互的DHCP服務器。主機使用UDP分組向端口67發送DHCP發現報文(DHCP discover message)來完成該任務。

由於主機新加入該網絡,並不知道該網絡的IP地址也不知道DHCP服務器的地址。於是該主機在發送包含DHCP發現報文的IP數據報時,使用目的地址為255.255.255.255的廣播地址和使用代表“本主機”的0.0.0.0作為源地址。

DHCP客戶將該數據報傳遞給鏈路層,鏈路層然後將該幀廣播到所有與該子網連接的子網。


DHCP服務器提供

DHCP服務器收到一個DHCP發現報文時,將使用DHCP提供報文(DHCP offer message)向客戶做出響應。,這裏仍然會使用廣播地址255.255.255.255作為目的地址(現在客戶主機並沒有地址)。

一個子網中可能會存在好幾臺DHCP服務器,於是客戶可能會在幾個提供者之間進行優越選擇。

每臺服務器的提供報文會包含:發現報文的事務ID、向客戶推薦的IP地址、網絡掩碼、以及IP地址租用期(address lease time),也是就IP地址的有效時間量。租用期通常為幾小時或者幾天。記為T,這個時間也表示在不更新租約的情況下地址可被租用的時間上限。

也包含更新時間(T1):客戶從獲得租約到嘗試要求服務器更新租約的時間。
以及重綁定時間(T2):客戶嘗試要求DHCP服務器更新其地址的時間。默認情況下,T1 = T/2;T2 = 7T/8


DHCP請求

DHCP服務提供報文到達客戶後,客戶便知道了DHCP服務器的信息。這時,客戶從一個或者多個提供者中選擇一個,並向選擇的服務器發送DHCP請求報文(DHCP request message),進行響應,回顯配置參數。

此時的數據報目的地址IP地址仍為廣播地址,除了被客戶選中的服務器外,其余服務器若收到該報文發現報文選項中的服務器IP地址與自己的不同便不做任何響應,並清除相應地IP分配記錄。


DHCP ACK

服務器使用DHCP ACK報文(DHCP ACK message)對DHCP請求報文進行響應,證實所要求的參數。如果服務器無法分配包含在DHCPREQUEST消息中的地址,該服務器將會響應一個DHCPNAK消息。

一旦客戶收到DHCP ACK報文後,交互便完成了,客戶可以在租用期內使用這個IP地址。




更新租約或獲得其他消息

若一個主機已有一個IP地址並希望更新其租約,那麽它便可跳過最初的DHCPDISCOVER/DHCPOFFER消息,直接通過DHCPREQUSEST消息請求當前當前正在使用的地址。然後協議運作流程如前所述,服務器可能同意也可能拒絕該要求。

客戶需要配置其他信息,可使用DHCPINFORM消息代替DHCPREQUEST消息向服務器發出請求,表明想獲取其他配置信息。此消息導致服務器會返回一個DHCPACK消息,其中包含請求的額外信息。

以圖示例

下面以《計算機網絡自頂向下方法》中的圖,介紹DHCP協議運行過程(DHCP客戶與服務器交互過程)。

yiaddr(意為“你的因特網地址”)指示被分配給新到達客戶的地址

???????技術分享圖片

  • 新到達的客戶向DHCP服務器發送發現報文。源地址為0.0.0.0,目的地址為廣播地址255.255.255.255,源端口號為68,目的端口為67。事務ID為654。

  • 服務器收到該發現報文後響應提供報文,提供報文包含了上文介紹的發現報文的事務ID、向客戶推薦的IP地址、IP地址租用期等信息。

  • 客戶選擇了提供報文然後做出響應發送請求報文。註意這裏發送的IP數據報目的地址仍為廣播地址,源地址仍為0.0.0.0。報文包含了客戶需要的配置參數,現在的事務ID為原事務ID增加1。

  • 服務器發送DHCP ACK報文進行響應,並證實客戶要求的參數。

附圖一張客戶機的DHCP狀態機

???技術分享圖片



DHCP協議在客戶機和服務器中都會運行一個狀態機。狀態用於指出協議下一個處理的消息類型。上圖中,狀態之間的轉換源於消息的接收和發送或者超時。

需要註意上圖中,從選擇到INIT的箭頭。這個箭頭表示客戶機可能接收來自不需要的地址的ACK。如果它沒有發現所需要的地址,便會發送一個DHCPDECLINE消息,並轉換到INIT狀態。


本篇學習筆記主要介紹的是DHCP協議的主要作用以及整個運作流程,許多細節並未涉及。並且,本篇中的DHCP是針對於IPv4,IPv6使用的DHCP版本DHCPv6可能會在後面介紹。

動態主機配置協議DHCP