DHCP(Dynamic Host Configuration Protocol,動態主機配置協議)使用UDP協議工做,採用67(DHCP服務器文)和68(DHCP客戶端)兩個端口號。546號端口用於DHCPv6 Client,而不用於DHCPv4,是爲DHCP failover服務。bootstrap
DHCP客戶端向DHCP服務器發送的報文稱之爲DHCP請求報文,而DHCP服務器向DHCP客戶端發送的報文稱之爲DHCP應答報文。服務器
DHCP採用C/S(客戶端/服務器)模式,能夠爲客戶機自動分配IP地址、子網掩碼以及缺省網關、DNS服務器的IP地址等,並可以提高地址的使用率。網絡
相關術語:否認應答(稱爲NAK;或稱爲NACK;或稱爲Negative-Acknowledgment)翻譯爲否認應答或者非應答。這種協議消息在數字通訊中被使用。其做用是做爲一種確認數據收到的應答,但代表有小錯誤存在的一種消息信號。 ide
1.DHCP報文種類翻譯
DHCP一共有8種報文,分別爲DHCP Discover、DHCP Offer、DHCP Request、DHCP ACK、DHCP NAK、DHCP Release、DHCP Decline、DHCP Inform。各類類型報文的基本功能以下:
DHCP報文類型代理
說明
DHCP Discoverorm
DHCP客戶端在請求IP地址時並不知道DHCP服務器的位置,所以DHCP客戶端會在本地網絡內以廣播方式發送Discover請求報文,以發現網絡中的DHCP服務器。全部收到Discover報文的DHCP服務器都會發送應答報文,DHCP客戶端據此能夠知道網絡中存在的DHCP服務器的位置。
DHCP Offerrouter
DHCP服務器收到Discover報文後,就會在所配置的地址池中查找一個合適的IP地址,加上相應的租約期限和其餘配置信息(如網關、DNS服務器等),構造一個Offer報文,發送給DHCP客戶端,告知用戶本服務器能夠爲其提供IP地址。但這個報文只是告訴DHCP客戶端能夠提供IP地址,最終還須要客戶端經過ARP來檢測該IP地址是否重複。
DHCP Requestserver
DHCP客戶端可能會收到不少Offer請求報文,因此必須在這些應答中選擇一個。一般是選擇第一個Offer應答報文的服務器做爲本身的目標服務器,並向該服務器發送一個廣播的Request請求報文,通告選擇的服務器,但願得到所分配的IP地址。另外,DHCP客戶端在成功獲取IP地址後,在地址使用租期過去1/2時,會向DHCP服務器發送單播Request請求報文請求續延租約,若是沒有收到ACK報文,在租期過去3/4時,會再次發送廣播的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應答報文。目前基本上不用了。
2.DHCP報文格式
DHCP服務的8種報文的格式是相同的,不一樣類型的報文只是報文中的某些字段取值不一樣。DHCP報文格式基於BOOTP的報文格式。下面是各字段的說明。
OP:報文的操做類型。分爲請求報文和響應報文。1:請求報文,2:應答報文。即client送給server的封包,設爲1,反之爲2。
請求報文:DHCP Discover、DHCP Request、DHCP Release、DHCP Inform和DHCP Decline。
應答報文:DHCP Offer、DHCP ACK和DHCP NAK。
Htype:DHCP客戶端的MAC地址類型。MAC地址類型實際上是指明網絡類型,Htype值爲1時表示爲最多見的以太網MAC地址類型。
Hlen:DHCP客戶端的MAC地址長度。以太網MAC地址長度爲6個字節,即以太網時Hlen值爲6。
Hops:DHCP報文通過的DHCP中繼的數目,默認爲0。DHCP請求報文每通過一個DHCP中繼,該字段就會增長1。沒有通過DHCP中繼時值爲0。(若數據包需通過router傳送,每站加1,若在同一網內,爲0。)
Xid:客戶端經過DHCP Discover報文發起一次IP地址請求時選擇的隨機數,至關於請求標識。用來標識一次IP地址請求過程。在一次請求中全部報文的Xid都是同樣的。
Secs:DHCP客戶端從獲取到IP地址或者續約過程開始到如今所消耗的時間,以秒爲單位。在沒有得到IP地址前該字段始終爲0。(DHCP客戶端開始DHCP請求後所通過的時間。目前還沒有使用,固定爲0。)
Flags:標誌位,只使用第0比特位,是廣播應答標識位,用來標識DHCP服務器應答報文是採用單播仍是廣播發送,0表示採用單播發送方式,1表示採用廣播發送方式。其他位還沒有使用。(即從0-15bits,最左1bit爲1時表示server將以廣播方式傳送封包給client。)
【注意】在客戶端正式分配了IP地址以前的第一次IP地址請求過程當中,全部DHCP報文都是以廣播方式發送的,包括客戶端發送的DHCP Discover和DHCP Request報文,以及DHCP服務器發送的DHCP Offer、DHCP ACK和DHCP NAK報文。固然,若是是由DHCP中繼器轉的報文,則都是以單播方式發送的。另外,IP地址續約、IP地址釋放的相關報文都是採用單播方式進行發送的。
Ciaddr:DHCP客戶端的IP地址。僅在DHCP服務器發送的ACK報文中顯示,在其餘報文中均顯示0,由於在獲得DHCP服務器確認前,DHCP客戶端是尚未分配到IP地址的。只有客戶端是Bound、Renew、Rebinding狀態,而且能響應ARP請求時,才能被填充。
Yiaddr:DHCP服務器分配給客戶端的IP地址。僅在DHCP服務器發送的Offer和ACK報文中顯示,其餘報文中顯示爲0。
Siaddr:下一個爲DHCP客戶端分配IP地址等信息的DHCP服務器IP地址。僅在DHCP Offer、DHCP ACK報文中顯示,其餘報文中顯示爲0。(用於bootstrap過程當中的IP地址)
Giaddr:DHCP客戶端發出請求報文後通過的第一個DHCP中繼的IP地址。若是沒有通過DHCP中繼,則顯示爲0。(轉發代理(網關)IP地址)
Chaddr:DHCP客戶端的MAC地址。在每一個報文中都會顯示對應DHCP客戶端的MAC地址。
Sname:爲DHCP客戶端分配IP地址的DHCP服務器名稱(DNS域名格式)。在Offer和ACK報文中顯示發送報文的DHCP服務器名稱,其餘報文顯示爲0。
File:DHCP服務器爲DHCP客戶端指定的啓動配置文件名稱及路徑信息。僅在DHCP Offer報文中顯示,其餘報文中顯示爲空。
Options:可選項字段,長度可變,格式爲"代碼+長度+數據"。
列出部分可選的選項:
代碼
長度(字節)
說明
1
4
子網掩碼
3
長度可變,必須是4個字節的倍數。
默認網關(能夠是一個路由器IP地址列表)
6
長度可變,必須是4個字節的整數倍。
DNS服務器(能夠是一個DNS服務器IP地址列表)
15
長度可變
域名稱(主DNS服務器名稱)
44
長度可變,必須是4個字節的整數倍。
WINS服務器(能夠是一個WINS服務器IP列表)
51
4
有效租約期(以秒爲單位)
53
1
報文類型
1: DHCP Discover
2: DHCP Offer
3: DHCP Request
4: DHCP Decline
5: DHCP ACK
6: DHCP NAK
7: DHCP Release
8: DHCP Inform
58
4
續約時間
更多精彩內容,請見:http://www.16boke.com