動態主機配置協議DHCP
動態主機配置協議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