DHCP 協議詳解


原文地址:http://blog.csdn.net/windeal3203/article/details/50677166

 

DHCP: 動態主機配置協議 
  TCP/IP協議想要運行正常的話,網絡中的主機和路由器不可避免地需要配置一些信息(如接口的IP地址等)。有了這些配置信息主機/路由器才能提供/使用特定的網絡服務。 
  主機信息的必要元素有:IP地址、子網掩碼、DNS服務器IP地址 
  TCP/IP協議配置主機信息主要有三種方法: 
1. 手動配置 
2. 動態獲取 
3. 根據特定算法計算。 
  在網絡中,我們把主機分為兩大類,服務器主機和客戶端主機, 
+ 服務器主機: 一般采用手動配置 
+ 客戶端主機: 一般采用動態獲取 
  服務器一般采用手動配置,而客戶端一般動態獲取。主要基於以下原因: 
1. 客戶主機比服務主機移動更頻繁 
2. 服務主機需要提供更可靠的服務,其配置信息應該減少對其他系統/主機的依賴 
3. 客戶主機比服務主機的數量要多得多。 
4. 客戶主機使用者的網絡配置知識比服務主機的使用者低

  DHCP有Bootp協議發展而來。Bootp協議提供了有限的主機信息配置,且主機信息已經配置就很難被修改。DHCP提供 幾乎所有的主機信息的配置,且引入了租約等概念,使得主機信息能夠動態發生變化。 DHCP向后兼容Bootp。 
  DHCP基於UDP/IP傳輸。DHCP服務器使用端口號67,DHCP 客戶端使用端口號68.

DHCP 協議內容

DHCP 主要分為兩部分: 地址的管理 和 配置信息的傳遞 
+ 地址管理: 地址管理處理IP‘地址的動態分配、向客戶端提供地址租約 
+ 配置信息的傳遞: 包含DHCP報文格式、狀態機

DHCP 地址管理

地址池 與 地址租約

  在IP地址的動態分配中,DHCP客戶端想DHCP服務器發送IP地址請求。DHCP服務器會維護一個 IP地址池,DHCP從地址池從取出一個IP回應給DHCP客戶端。在地址分配時,DHCP服務器也會指定回應給DHCP客戶端的IP地址的租約期,該地址只有在該租約期內可用,不過DHCP客戶端可用在租約期內請求延長租約(更新租約期)。

DHCP 報文

這里寫圖片描述 
Op: 報文類型,分為 兩大類: Request(1) 和 Reply(2) 
HW Type: 硬件類型,一般是以太網:1 
HW Len: 硬件地址長度,單位字節。對應以太網:6(mac地址長度為6字節48bit) 
Transaction ID:事務ID,隨機數,有客戶端生成,服務器Reply時,會把Request中的Transaction拷貝到Reply報文中。 
Secs: 距離第一次發射IP請求或Renew請求過去的秒數 
Flags:標志位,目前僅第一個bit有使用,置1 標明廣播 
Client IP Address:當前客戶端的IP地址,如果當前客戶端沒有IP地址,則置0 
Your IP Address: 服務器想客戶端提供IP地址時,會把IP地址填入本字段 
(Next)Server IP Address:客戶端引導時需要的另一個服務器的IP地址 
Gateway (Relay) IP Address: 網關(中繼)IP地址,有DHCP 中繼器在轉發DHCP報文的時候填入 
Server Name: Server名字,有64bytes,一般不使用,填充為0 
Boot File name: boot file的路徑,128bytes, 一般不使用,填充為0 
Option: 選項,不定長度。 DHCP報文中比較重要的字段,后面會有比較詳細的介紹。

DHCP Option

  DHCP從Bootp拓展而來,DHCP報文也是有Bootp報文發展而來。但是DHCP在Bootp之上添加了許多功能,其報文也需要有一定的拓展。如果Bootp報文不能滿足的內容,就以Option的形式存在於DHCP報文中。 
  DHCP協議其實就是攜帶許多Option的Bootp 
  DHCP有許多類型的Option,長度不一(但都是整數字節)。Option遵循以下格式 
+ 如果Option沒有值,則只有標志位之類的內容,則以一個字節表示 
+ 如果Opiton有值,即Opiton是以下name-value對,則Opiton需要多個字節表示,其中第一個字節表示 option的名字,第二字節表示value的長度,第三個字節開始表示value。

  DHCP支持大量的Option(Bootp也支持其中的部分),下面列舉一些常用的

Option 名稱 描述
0 Pad 填充位
1 Subnet Mask 子網 掩碼
3 Router Address 路由器地址
6 DNS DNS server
15 DN 域名
50 Requested IP Address 請求的IP地址
51 Address Lease Time 地址租約時間
53 DHCP Message Type DHCP 消息類型,如Discover、Request、Offer、ACK等
54 Server Identifier 服務器標識
55 Parameter Request List 參數請求列表
56 DHCP Error Message DHCP 錯誤消息
58 Lease Renewal Time 租約續期時間
59 Lease Rebinding Time 租約重新設定的時間
61 Client Identifier 客戶標識
119 Domain Search List 域名查找列表
255 End 結束

上面是常用的Option,DHCP報文與Option 255標識報文的結束。 
在DHCP Option中,我們着重看下DHCP Message Type(53),DHCP Message Type標識DHCP消息類型,主要有一下類型

DHCP 消息類型 對應的Option值
DHCPDISCOVER 1
DHCPOFFER 2
DHCPREQUEST 3
DHCPDECLINE 4
DHCPACK 5
DHCPNAK 6
DHCPRELEASE 7
DHCPINFORM 8
DHCPFORCERENEW 9
DHCPLEASEQUERY 10
DHCPLEASEUNASSIGNED 11
DHCPLEASEUNKNOWN 12
DHCPLEASEACTIVE 13

DHCP 協議 操作流程

主機新加入網絡時,獲取IP的流程 
1. 新的client加入網絡時,會使用0.0.0.0作為源地址,發送discover廣播報文,查詢網絡上有哪些DHCP server,以及這些DHCP server 能Offer哪些IP地址 
2. DHCP服務器接收到DHCP Discover報文后,回應Offer報文,提供IP地址(可能包含DNS等其他信息)給client 
3. client 根據收到的Offer報文,選擇一個DHCP server,並選擇它提供的IP地址。然后廣播Request報文,想DHCP Server請求該IP地址,同時想本地網絡(尤其是其他DHCP Server)公告自己已經選擇了某個DHCP Server的某個IP地址。 
4. DHCP Server 回應ACK報文,將IP地址分配給Client端 (特殊情況:DHCP Server在發送Offer報文和接收到Request的短暫時間內把IP分配給了其他主機) 
5. DHCP Client 收到ACK報文后,會針對獲得的IP地址發送ARP Request,進行IP地址沖突檢測。 
6. 如果IP地址已經被其他主機使用,則Client放棄該IP地址,想Server發送DHCP DECLINE報文告訴Server該地址不能使用。然后一段時間后(一般10s)再此嘗試獲取該IP地址 
7. 如果Client仍然無法使用該IP地址,則發送DHCP RELEASE報文,放棄該地址。

主機已經有IP地址,只想更新租約 
1. 此時可以跳過DHCP Discover報文和DHCP Offer報文 
2. Client發送攜帶當前IP地址的Request報文 
3. 如果Server同意Client續約,則發送DHCP ACK報文。如果拒絕續約,則發送DHCPNAK報文。

* 主機只想更新IP地址以外的信息* 
用DHCPINFORM 取代 DHCP Request報文。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM