DHCP協議與抓包分析
DHCP協議採用UDP作為傳輸協議,主機發送請求訊息到DHCP伺服器的67號埠,DHCP伺服器迴應應答訊息給主機的68號埠。詳細的互動過程如下圖。
- DHCP Client以廣播的方式發出DHCP Discover報文。
- 所有的DHCP Server都能夠接收到DHCP Client傳送的DHCP Discover報文,所有的DHCP Server都會給出響應,向DHCP Client傳送一個DHCP Offer報文。 DHCP Offer報文中“Your(Client) IP Address”欄位就是DHCP Server能夠提供給DHCP Client使用的IP地址,且DHCP Server會將自己的IP地址放在“option”欄位中以便DHCP Client區分不同的DHCP Server。DHCP Server在發出此報文後會存在一個已分配IP地址的紀錄。
- DHCP Client只能處理其中的一個DHCP Offer報文,一般的原則是DHCP Client處理最先收到的DHCP Offer報文。 DHCP Client會發出一個廣播的DHCP Request報文,在選項欄位中會加入選中的DHCP Server的IP地址和需要的IP地址。
- DHCP Server收到DHCP Request報文後,判斷選項欄位中的IP地址是否與自己的地址相同。如果不相同,DHCP Server不做任何處理只清除相應IP地址分配記錄;如果相同,DHCP Server就會向DHCP Client響應一個DHCP ACK報文,並在選項欄位中增加IP地址的使用租期資訊。
- DHCP Client接收到DHCP ACK報文後,檢查DHCP Server分配的IP地址是否能夠使用。如果可以使用,則DHCP Client成功獲得IP地址並根據IP地址使用租期自動啟動續延過程;如果DHCP Client發現分配的IP地址已經被使用,則DHCP Client向DHCPServer發出DHCP Decline報文,通知DHCP Server禁用這個IP地址,然後DHCP Client開始新的地址申請過程。
- DHCP Client在成功獲取IP地址後,隨時可以通過傳送DHCP Release報文釋放自己的IP地址,DHCP Server收到DHCP Release報文後,會回收相應的IP地址並重新分配。
0 8 16 24 31
OP(1) |
HTYPE(1) |
HLEN(1) |
HOPS(跳數)(1) |
事務ID(4)[Transaction ID] |
|||
秒數(2)[Second] |
標誌(2)[Flag] |
||
客戶機IP地址(4)[Ciaddr] |
|||
你的IP地址(4)[Yiaddr] |
|||
伺服器IP地址(4)[Siaddr] |
|||
中繼代理IP地址(4)[Giaddr] |
|||
客戶機硬體地址(16位元組)[Chaddr] |
|||
伺服器的主機名(64位元組)[Sname] |
|||
啟動檔名(128位元組)[File] |
|||
選項(可變長)[Options] |
OP:若是client送給server的封包,設定為1,反方向為2
Htype:硬體類別,ethernet 為1
Hlen:硬體長度,ethernet為6
Hops:若資料包需經過router傳送,每站加1,若在同一網內,為0
Transaction ID:事務ID 是個隨機數,用於客戶和伺服器之間匹配請求和相應資訊
Seconds:由使用者指定的時間,指開始地址獲取和更新進行後的時間
Flags:從0—15bits,最左一bit為1時表示server將以廣播方式傳遞封包給client,其餘尚未使用
Ciaddr:使用者IP地址
Siaddr:用於bootsrtap過程中的IP地址(伺服器的IP地址)
Chaddr:client的硬體地址
Sname:可選server的名稱,以0x00結尾
File:啟動檔名
Options:廠商標識,可選的引數欄位
1. 抓包分析:
(1)DHCP discover階段:
(2)DHCP offer階段:
(3)DHCP request階段:
(4)DHCP ack階段:
2. 總結:
階段 |
源MAC |
目標MAC |
源IP |
目標IP |
Discover |
PC機的MAC |
全FF |
0.0.0.0 |
255.255.255.255 |
Offer |
Dhcp伺服器或者中繼器路由的MAC |
Dhcp客戶機的MAC |
Dhcp伺服器或者中繼路由器的IP地址 |
準備分配的IP地址 |
Request |
PC機的MAC |
全FF |
0.0.0.0 |
255.255.255.255 |
Ack |
Dhcp伺服器或者中繼器路由的MAC |
Dhcp客戶機的MAC |
Dhcp伺服器或者中繼路由器的IP地址 |
準備分配的IP地址 |
3.DHCPTransaction ID是由客戶機產生一個隨機數獲得,不同MAC地址產生的Transaction ID不同,Transaction ID是區分不同DHCP請求的標識