DHCP協議分析
一、DHCP簡介
DHCP(Dynamic Host Configuration Protocol,動態主機配置協議)用來爲網絡設備動態地分配 IP地址等網絡配置參數。
DHCP 採用客戶端/服務器通信模式,由客戶端向服務器提出請求分配網絡配置參數的申請,服務器返回爲客戶端分配的 IP 地址等配置信息,以實現 IP 地址等信息的動態配置。
二、DHCP工作過程
1.IP 地址動態獲取過程
2.主要通過四個階段進行:
A.發現階段,即 DHCP 客戶端尋找 DHCP 服務器的階段。客戶端以廣播方式發送DHCP-DISCOVER 報文。
B.提供階段,即 DHCP 服務器提供 IP 地址的階段。DHCP 服務器接收到客戶端的DHCP-DISCOVER 報文後,根據 IP 地址分配的優先次序選出一個 IP 地址,與其他參數一起通過 DHCP-OFFER 報文發送給客戶端。
C.選擇階段,即 DHCP 客戶端選擇 IP 地址的階段。如果有多臺 DHCP 服務器向該客戶端發來DHCP-OFFER 報文,客戶端只接受第一個收到的 DHCP-OFFER 報文,然後以廣播方式發送DHCP-REQUEST 報文,該報文中包含 DHCP 服務器在 DHCP-OFFER 報文中分配的 IP 地址。
D.確認階段,即 DHCP 服務器確認 IP 地址的階段。DHCP 服務器收到 DHCP 客戶端發來的DHCP-REQUEST 報文後,只有 DHCP 客戶端選擇的服務器會進行如下操作:如果確認將地址分配給該客戶端,則返回 DHCP-ACK 報文;否則返回 DHCP-NAK 報文,表明地址不能分配給該客戶端。
三、實驗環境
RT2是DHCP服務器,RT1是客戶端;RT2 GE0/0端口配置IP地址10.0.0.254/24,地址池爲10.0.0.0/24;RT1 GE0/0端口配置IP地址自動獲取。
三、實驗內容
1.RT2配置
[Rt2]interface GigabitEthernet 0/0
[Rt2-GigabitEthernet0/0]ip address 10.0.0.254 24
[Rt2-GigabitEthernet0/0]quit
[Rt2]dhcp enable \\開啓DHCP服務
[Rt2]dhcp server ip-pool 10 \\創建DHCP地址池
[Rt2-dhcp-pool-10]network 10.0.0.0 24 \\配置爲客戶端分配的IP地址
[Rt2-dhcp-pool-10]gateway-list 10.0.0.254 \\配置DHCP客戶端使用的網關地址
[Rt2-dhcp-pool-10]quit
[Rt2]dhcp server forbidden-ip 10.0.0.254 \\配置DHCP地址池中不參與自動分配的IP地址
2.RT1配置
[RT1]interface GigabitEthernet 0/0
[RT1-GigabitEthernet0/0]ip address dhcp-alloc \IP地址自動獲取
3.現在RT1已經獲取到IP地址。
[RT1]display ip interface GigabitEthernet 0/0 brief
(s): spoofing (l): loopback
Interface Physical Protocol IP Address Description
GE0/0 up up 10.0.0.1 --
4.RT1路由表裏多了一條優先級爲70的默認路由
[RT1]display ip routing-table
Destinations : 13 Routes : 13
Destination/Mask Proto Pre Cost NextHop Interface
0.0.0.0/0 Static 70 0 10.0.0.254 GE0/0
0.0.0.0/32 Direct 0 0 127.0.0.1 InLoop0
10.0.0.0/24 Direct 0 0 10.0.0.1 GE0/0
10.0.0.0/32 Direct 0 0 10.0.0.1 GE0/0
10.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0
10.0.0.255/32 Direct 0 0 10.0.0.1 GE0/0
127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0
127.0.0.0/32 Direct 0 0 127.0.0.1 InLoop0
127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0
127.255.255.255/32 Direct 0 0 127.0.0.1 InLoop0
224.0.0.0/4 Direct 0 0 0.0.0.0 NULL0
224.0.0.0/24 Direct 0 0 0.0.0.0 NULL0
255.255.255.255/32 Direct 0 0 127.0.0.1 InLoop0
原因是在RT2配置了gateway-list 10.0.0.254,如果配置這條命令,RT1裏就會存在這條默認路由。
四、實驗分析
1.DHCP報文格式
各字段的解釋如下:
a. op:報文的操作類型,分爲請求報文和響應報文,1 爲請求報文;2 爲響應報文。具體的報文類型在 options 字段中標識。
b. htype、hlen:DHCP 客戶端的硬件地址類型及長度。
c. hops:DHCP 報文經過的 DHCP 中繼的數目。DHCP 請求報文每經過一個 DHCP 中繼,該字段就會增加 1。
d. xid:客戶端發起一次請求時選擇的隨機數,用來標識一次地址請求過程。
e. secs:DHCP 客戶端開始 DHCP 請求後所經過的時間。目前沒有使用,固定爲 0。
f. flags:第一個比特爲廣播響應標識位,用來標識 DHCP 服務器響應報文是採用單播還是廣播方式發送,0 表示採用單播方式,1 表示採用廣播方式。其餘比特保留不用。
g. ciaddr:DHCP 客戶端的 IP 地址。如果客戶端有合法和可用的 IP 地址,則將其添加到此字段,否則字段設置爲 0。此字段不用於客戶端申請某個特定的 IP 地址。
h. yiaddr:DHCP 服務器分配給客戶端的 IP 地址。
i. siaddr:DHCP 客戶端獲取啓動配置信息的服務器 IP 地址。
j. giaddr:DHCP 客戶端發出請求報文後經過的第一個 DHCP 中繼的 IP 地址。
k. chaddr:DHCP 客戶端的硬件地址。
l. sname:DHCP 客戶端獲取啓動配置信息的服務器名稱。
m. file:DHCP 服務器爲 DHCP 客戶端指定的啓動配置文件名稱及路徑信息。
n. options:可選變長選項字段,包含報文的類型、有效租期、DNS 服務器的 IP 地址、WINS 服務器的 IP 地址等配置信息。
2.抓包分析
a.首先RT1以廣播方式發送DHCP-DISCOVER 報文。
源地址全0
b.RT2收到後回覆DHCP-OFFER,以廣播的方式。
報文包含申請到的IP地址
c.RT1發送DHCP-REQUEST報文請求使用申請到的地址。
此時RT1還沒有使用申請到的地址,源地址還是全0,目的地址是依然是廣播地址。
d.RT2回覆DHCP-ACK
RT2廣播發送DHCP-ACK,確認分配10.0.0.1。
七、實驗補充
客戶端收到服務器返回的 DHCP-ACK 確認報文後,會以廣播的方式發送免費 ARP 報文,探測是否有主機使用服務器分配的 IP 地址,如果在規定的時間內沒有收到迴應,客戶端才使用此地址。否則,客戶端會發送 DHCP-DECLINE 報文給 DHCP 服務器,並重新申請 IP 地址。