DHCP协议分析
實(shí)驗(yàn)環(huán)境
? 操作機(jī):Windows XP
實(shí)驗(yàn)工具
o wireshark
________________________________________
實(shí)驗(yàn)步驟
DHCP的工作原理
DHCP的前身:BOOTP協(xié)議(Bootstrap Protocol),屬于TCP/IP的應(yīng)用層協(xié)議。BOOTP協(xié)議當(dāng)初被創(chuàng)建出來(lái)給連接到網(wǎng)絡(luò)的設(shè)備自動(dòng)分配地址。直到后來(lái)才被更加復(fù)雜而完善的DHCP協(xié)議所取代。
DHCP在網(wǎng)絡(luò)配置方面非常重要,特別是當(dāng)一個(gè)網(wǎng)絡(luò)的規(guī)模較大時(shí),使用DHCP可以極大地減輕網(wǎng)絡(luò)管理員的工作量。另外,對(duì)于移動(dòng)設(shè)備來(lái)說(shuō),由于使用的環(huán)境會(huì)經(jīng)常改變,那么它所處的網(wǎng)絡(luò)IP地址也就可能隨時(shí)變動(dòng)。如果每次都需要通過(guò)手工修改來(lái)設(shè)置它們的IP地址,使用起來(lái)就會(huì)非常麻煩。那么此時(shí),就可以使用DHCP來(lái)減輕負(fù)擔(dān)。這里我們通過(guò)下圖來(lái)分析一下DHCP的工作流程:
在使用DHCP的時(shí)候,網(wǎng)絡(luò)上首先必須有一臺(tái)DHCP服務(wù)器,而其它計(jì)算機(jī)則是DHCP的客戶端。整個(gè)DHCP的工作過(guò)程分為4個(gè)階段,即發(fā)現(xiàn)階段(Discover)、提供階段(offer)、請(qǐng)求階段(request)以及確認(rèn)階段(ACK)。這里分別簡(jiǎn)單介紹一下上述四種數(shù)據(jù)包的類型:
1、DHCP Discover
DHCP客戶端請(qǐng)求地址時(shí),并不知道DHCP服務(wù)器的位置,因此DHCP客戶端會(huì)在本地網(wǎng)絡(luò)內(nèi)以廣播的形式發(fā)送請(qǐng)求數(shù)據(jù)包。這個(gè)數(shù)據(jù)包就被稱作Discover數(shù)據(jù)包,目的是發(fā)現(xiàn)網(wǎng)絡(luò)中的DHCP服務(wù)器。所有收到Discover數(shù)據(jù)包的DHCP服務(wù)器都會(huì)發(fā)送響應(yīng)數(shù)據(jù)包,那么客戶端就可以知道網(wǎng)絡(luò)中存在的DHCP服務(wù)器的位置。
2、DHCP offer
當(dāng)DHCP服務(wù)器收到Discover數(shù)據(jù)包后,就會(huì)在所配置的地址池中尋找一個(gè)合適的IP地址,加上相應(yīng)的租約期限和其它配置信息(如網(wǎng)關(guān)、DNS服務(wù)器等),構(gòu)造一個(gè)offer數(shù)據(jù)包,發(fā)送給客戶端,告知客戶端本服務(wù)器可以為其提供IP地址。
3、DHCP Request
DHCP客戶端可能會(huì)收到很多的offer,所以必須要從中選擇一個(gè)。一般來(lái)說(shuō),客戶端會(huì)選擇第一個(gè)回應(yīng)的offer數(shù)據(jù)包服務(wù)器作為自己的目標(biāo)服務(wù)器,并回應(yīng)一個(gè)廣播Request數(shù)據(jù)包,以告訴所有的服務(wù)器,自己已經(jīng)做出了選擇。當(dāng)DHCP客戶端成功獲取IP地址后,在地址使用租期過(guò)去一半的時(shí)候,會(huì)向DHCP服務(wù)器發(fā)送單播Request數(shù)據(jù)包,用于延續(xù)租期。如果沒(méi)有收到DHCP ACK數(shù)據(jù)包,那么在租期過(guò)去四分之三時(shí),會(huì)發(fā)送廣播Request數(shù)據(jù)包來(lái)延續(xù)租期。
4、DHCP ACK
DHCP服務(wù)器收到Request數(shù)據(jù)包后,根據(jù)Request數(shù)據(jù)包中攜帶的用戶MAC地址來(lái)查找有沒(méi)有相應(yīng)的租約記錄,如果有則發(fā)送ACK數(shù)據(jù)包作為回應(yīng),通知用戶可以使用分配的IP地址。
DHCP數(shù)據(jù)包的捕獲
為了捕獲到DHCP數(shù)據(jù)包,這里我在虛擬機(jī)的環(huán)境下,首先打開(kāi)Wireshark,在捕獲選項(xiàng)中,設(shè)置篩選條件為UDP,因?yàn)镈HCP是使用UDP協(xié)議工作的。之后開(kāi)啟Wireshark的捕獲。現(xiàn)在我們需要讓系統(tǒng)產(chǎn)生DHCP的數(shù)據(jù)包,由于DHCP只有當(dāng)主機(jī)的IP地址過(guò)期或者重新啟動(dòng)系統(tǒng)時(shí),才會(huì)重新請(qǐng)求IP地址。否則是不能夠產(chǎn)生DHCP數(shù)據(jù)包的。那么我們可以通過(guò)重新啟動(dòng)網(wǎng)卡的方法,進(jìn)行數(shù)據(jù)包的捕獲。
這里我們打開(kāi)命令提示符,使用ipconfig的release以及renew參數(shù)來(lái)釋放并重新獲取地址信息。
此時(shí)我們?cè)赪ireshark中就可以獲取DHCP數(shù)據(jù)包了。
步驟4:DHCP數(shù)據(jù)包的分析
由于在捕獲的文件中還存在有其它的數(shù)據(jù)包,因此這里我們可以加入一個(gè)篩選條件bootp,那么此時(shí)剩下的就全都是DHCP協(xié)議的數(shù)據(jù)包了:
在這里我們可以看到DHCP的釋放、發(fā)現(xiàn)、提供、請(qǐng)求和確認(rèn)數(shù)據(jù)包。這里我們分別進(jìn)行分析。
1、釋放數(shù)據(jù)包
捕獲文件的第一個(gè)數(shù)據(jù)包就是釋放數(shù)據(jù)包。當(dāng)用戶不再需要使用分配的IP地址時(shí),就會(huì)向DHCP服務(wù)器發(fā)送 Release數(shù)據(jù)包,告知服務(wù)器,用戶已經(jīng)不再需要分配的IP地址,DHCP服務(wù)器就會(huì)釋放掉被綁定的租約。
2、發(fā)現(xiàn)數(shù)據(jù)包
我們?cè)倏匆幌碌诙€(gè)數(shù)據(jù)包。它是從0.0.0.0的68號(hào)端口發(fā)往255.255.255.255的67號(hào)端口。客戶端使用0.0.0.0,是因?yàn)樗壳斑€沒(méi)有IP地址。數(shù)據(jù)包被發(fā)往255.255.255.255,是因?yàn)檫@是一個(gè)獨(dú)立于網(wǎng)絡(luò)的廣播地址,這就能夠確保這個(gè)數(shù)據(jù)包會(huì)被發(fā)送到網(wǎng)絡(luò)中的所有設(shè)備上。因?yàn)榭蛻舳瞬⒉恢繢HCP服務(wù)器的地址,所以這么做就一定可以找到正在監(jiān)聽(tīng)的DHCP服務(wù)器。
接下來(lái)我們可以看到DHCP是基于UDP作為其傳輸協(xié)議的,因?yàn)镈HCP客戶端對(duì)請(qǐng)求響應(yīng)速度有很高的要求。而DHCP有其內(nèi)置的保證可靠性的方法,也就意味著UDP是最適合的協(xié)議。需要說(shuō)明的是,由于Wireshark在處理DHCP時(shí),仍然會(huì)引用BOOTP,所以我們會(huì)在Packet Details面板中看到Bootstrap Protocol,而不是DHCP:
這是一個(gè)請(qǐng)求數(shù)據(jù)包,因?yàn)樵谙㈩愋?#xff08;Message type)中被標(biāo)記為1。在這個(gè)發(fā)現(xiàn)數(shù)據(jù)包中,還可以看到很多為空的IP地址域。另外還需要我們注意的是選項(xiàng)中的內(nèi)容,它用來(lái)對(duì)DHCP數(shù)據(jù)包進(jìn)行擴(kuò)展,以提供更多的功能。這里比較重要的有:
DHCP消息類型(DHCP Message Type):這個(gè)選項(xiàng)是一個(gè)長(zhǎng)度和值均為1的53類型。表明它是一個(gè)發(fā)現(xiàn)數(shù)據(jù)包。
客戶端標(biāo)識(shí)符(Client identifier):這里提供了客戶端請(qǐng)求IP地址的額外信息。
所請(qǐng)求的IP地址(Requested IP Address):這里提供了客戶端希望得到的IP地址(通常是之前用過(guò)的IP地址)。
請(qǐng)求參數(shù)列表(Parameter Request List):這里列出了客戶端希望從DHCP服務(wù)器接收到的不同配置項(xiàng)(其它重要網(wǎng)絡(luò)設(shè)備的IP地址)。
3、提供數(shù)據(jù)包
捕獲文件的第三個(gè)數(shù)據(jù)包就是提供數(shù)據(jù)包。可以看到這個(gè)數(shù)據(jù)包是從192.168.147.254發(fā)往192.168.147.129的。盡管目標(biāo)地址是192.168.147.129,也就是客戶端的地址,但事實(shí)上,客戶端還沒(méi)有這個(gè)地址,所以服務(wù)器會(huì)首先嘗試使用由ARP提供的客戶端硬件地址與之通信。如果通信失敗,那么它將會(huì)直接把提供數(shù)據(jù)包廣播出去,以進(jìn)行通信。
這里我們看一下它的DHCP部分,它被稱為提供數(shù)據(jù)包,說(shuō)明這是一個(gè)用于響應(yīng)的消息類型。這個(gè)數(shù)據(jù)包包含了和前一個(gè)數(shù)據(jù)包相同的事務(wù)ID,通過(guò)這個(gè)IP就可以知道這個(gè)響應(yīng)與我們?cè)鹊恼?qǐng)求相對(duì)應(yīng)。
這個(gè)提供數(shù)據(jù)包由DHCP服務(wù)器發(fā)出,用于向客戶端提供服務(wù)。它提供了關(guān)于它自己的信息,以及給客戶端提供的地址。如下圖所示:
在Your(client)IP address中,地址192.168.147.129就是要提供給客戶端的地址。而Next server IP address中的192.168.147.254表明我們的DHCP服務(wù)器與默認(rèn)網(wǎng)關(guān)共享一個(gè)IP地址。
下面列出的第一個(gè)選項(xiàng)說(shuō)明這個(gè)數(shù)據(jù)包是一個(gè)DHCP的提供數(shù)據(jù)包。選項(xiàng)中還需要我們關(guān)注的內(nèi)容有:
IP地址租約時(shí)間(IP Address Lease Time)是30分鐘。
子網(wǎng)掩碼(Subnet Mask)是255.255.255.0。
路由器(Router)地址為192.168.147.2。
4、請(qǐng)求數(shù)據(jù)包
在客戶端接收到DHCP服務(wù)器的提供數(shù)據(jù)后,它將會(huì)以一個(gè)DHCP請(qǐng)求數(shù)據(jù)包作為接收確認(rèn):
這個(gè)數(shù)據(jù)包仍然從IP地址為0.0.0.0處發(fā)出,畢竟我們還沒(méi)有完成獲取IP地址的過(guò)程,但是數(shù)據(jù)包現(xiàn)在知道了DHCP服務(wù)器的存在。可以發(fā)現(xiàn),這是一個(gè)請(qǐng)求數(shù)據(jù)包。這個(gè)數(shù)據(jù)包與發(fā)現(xiàn)數(shù)據(jù)包相似,其所有的IP地址信息都是空的。在最后的選項(xiàng)域中,我們看到這是一個(gè)DHCP請(qǐng)求。
5、確認(rèn)數(shù)據(jù)包
整個(gè)過(guò)程的最后一步就是DHCP在確認(rèn)數(shù)據(jù)包中給客戶端發(fā)送其所請(qǐng)求的IP地址,并在數(shù)據(jù)庫(kù)中記錄相關(guān)信息。那么此時(shí)客戶端就有了一個(gè)IP地址,就可以使用它在網(wǎng)絡(luò)上通信了。
DHCP租約內(nèi)續(xù)租
當(dāng)DHCP給一臺(tái)設(shè)備分配了一個(gè)IP地址時(shí),它同時(shí)給客戶端定下了一個(gè)租約。這就表示著,客戶端只能夠在有限的時(shí)間內(nèi)使用這個(gè)IP地址,到了時(shí)間就一定要續(xù)租。我們剛才介紹的DHCP數(shù)據(jù)包的分析過(guò)程是出現(xiàn)在客戶端第一次獲取IP地址或者其租約時(shí)間已經(jīng)過(guò)期的情況下,這兩種情況就會(huì)被視為租約過(guò)期。
當(dāng)一個(gè)擁有IP地址的客戶端在租約內(nèi)重新啟動(dòng),它必須經(jīng)過(guò)一次精簡(jiǎn)版的DHCP數(shù)據(jù)包傳輸過(guò)程來(lái)重新認(rèn)領(lǐng)它的IP地址。這個(gè)過(guò)程就被稱為租約內(nèi)續(xù)租。
在租約內(nèi)續(xù)租的時(shí)候,發(fā)現(xiàn)和提供數(shù)據(jù)包就變得沒(méi)有必要了,只需要完成請(qǐng)求和確認(rèn)兩個(gè)步驟就可以了:
轉(zhuǎn)載于:https://www.cnblogs.com/Erma/p/10302250.html
總結(jié)
- 上一篇: matplotlib----初探----
- 下一篇: 常见的跑马灯效果,无缝连接。mcake官