協議分析 - DHCP協議解碼詳解
【DHCP協議簡介】
DHCP,全稱是 Dynamic Host Configuration Protocol﹐中文名爲動態主機配置協議,它的前身是 BOOTP,它工做在OSI的應用層,是一種幫助計算機從指定的DHCP服務器獲取它們的配置信息的自舉協議。
DHCP使用客戶端/服務器模式,請求配置信息的計算機叫作DHCP客戶端,而提供信息的叫作DHCP的服務器。DHCP爲客戶端分配地址的方法有三種:手工配置、自動配置、動態配置。
DHCP最重要的功能就是動態分配。除了IP地址,DHCP分組還爲客戶端提供其餘的配置信息,好比子網掩碼。這使得客戶端無需用戶動手就能自動配置鏈接網絡。
【DHCP的工做流程】
發現階段,即DHCP客戶機尋找DHCP服務器的階段。DHCP客戶機以廣播方式(由於DHCP服務器的IP地址對於客戶機來講是未知的)發送DHCP discover發現信息來尋找DHCP服務器,即向地址255.255.255.255發送特定的廣播信息。網絡上每一臺安裝了TCP/IP協議的主機都會接收到這種廣播信息,但只有DHCP服務器纔會作出響應。
提供階段,即DHCP服務器提供IP地址的階段。在網絡中接收到DHCP discover發現信息的DHCP服務器都會作出響應,它從還沒有出租的IP地址中挑選一個分配給DHCP客戶機,向DHCP客戶機發送一個包含出租的IP地址和其餘設置的DHCP offer提供信息。
選擇階段,即DHCP客戶機選擇某臺DHCP服務器提供的IP地址的階段。若是有多臺DHCP服務器向DHCP客戶機發來的DHCP offer提供信息,則DHCP客戶機只接受第一個收到的DHCP offer提供信息,而後它就以廣播方式回答一個DHCP request請求信息,該信息中包含向它所選定的DHCP服務器請求IP地址的內容。之因此要以廣播方式回答,是爲了通知全部的DHCP服務器,他將選擇某臺DHCP服務器所提供的IP地址。
確認階段,即DHCP服務器確認所提供的IP地址的階段。當DHCP服務器收到DHCP客戶機回答的DHCP request請求信息以後,它便向DHCP客戶機發送一個包含它所提供的IP地址和其餘設置的DHCP ACK確認信息,告訴DHCP客戶機可使用它所提供的IP地址。而後DHCP客戶機便將其TCP/IP協議與網卡綁定,另外,除DHCP客戶機選中的服務器外,其餘的DHCP服務器都將收回曾提供的IP地址。
從新登陸,之後DHCP客戶機每次從新登陸網絡時,就不須要再發送DHCP discover發現信息了,而是直接發送包含前一次所分配的IP地址的DHCP request請求信息。當DHCP服務器收到這一信息後,它會嘗試讓DHCP客戶機繼續使用原來的IP地址,並回答一個DHCP ACK確認信息。若是此IP地址已沒法再分配給原來的DHCP客戶機使用時(好比此IP地址已分配給其它DHCP客戶機使用),則DHCP服務器給DHCP客戶機回答一個DHCP NACK否定信息。當原來的DHCP客戶機收到此DHCP NACK否定信息後,它就必須從新發送DHCP discover發現信息來請求新的IP地址。
更新租約,DHCP服務器向DHCP客戶機出租的IP地址通常都有一個租借期限,期滿後DHCP服務器便會收回出租的IP地址。若是DHCP客戶機要延長其IP租約,則必須更新其IP租約。DHCP客戶機啓動時和IP租約期限過一半時,DHCP客戶機都會自動向DHCP服務器發送更新其IP租約的信息。
【DHCP的報文格式】
咱們來介紹一下DHCP的報文格式,如圖1,
OP(1)
|
Htype(1)
|
Hlen(1)
|
Hops(1)
|
Transaction ID(4)
|
Seconds(2)
|
Flags(2)
|
Ciaddr
(
4
)
|
Yiaddr
(
4
)
|
Siaddr
(
4
)
|
Giaddr
(
4
)
|
Chaddr
(
16
)
|
Sname
(
64
)
|
File
(
128
)
|
Options
(
variable
)
|
|
|
|
|
(圖1 DHCP的 報文格式)
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地址;
Yiaddr:服務器分配給客戶的IP地址;
Siaddr:用於bootstrap過程當中的IP地址;(服務器的IP地址)
Giaddr:轉發代理(網關)IP地址;
Chaddr:client的硬件地址;
Sname:可選server的名稱,以0x00結尾;
File:啓動文件名;
Options:,廠商標識,可選的參數字段
【抓包分析】
這次用的軟件是:wireshark(在宿舍內)
1.發現階段:
2.提供階段:
3.選擇階段
4.確認階段:
【總結】
環境分析:根據上述內容,個人pc獲取到ip地址是有通過代理的。並且是隻通過一個路由器代理,便是網關。
實驗說明:這次實驗僅分析pc到網關這個廣播域的包走向過程,網關和dhcp服務器之間這裏沒作分析。
此時實驗讓本身更加理解了dhcp的獲取過程,還熟悉了抓包軟件的使用。