一起学DHCP系列(五)指派、获取
生活随笔
收集整理的這篇文章主要介紹了
一起学DHCP系列(五)指派、获取
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
節(jié)將主要講述DHCP客戶端獲取IP的過(guò)程,也是此系列中非常重要的一節(jié)。 為了讓大家更好的理解DHCP客戶端和服務(wù)器之間是如何交互工作的。這里搭建了一個(gè)很小的環(huán)境來(lái)輔助演示。如下圖: 首先在win2k3上安裝DHCP服務(wù)器,一臺(tái)XP主機(jī)與之直連。有關(guān)DHCP的安裝過(guò)程,請(qǐng)參考上一節(jié)的內(nèi)容。DHCP安裝完成后,如下圖: 服務(wù)器名稱為win2k3,IP為192.168.1.1。依據(jù)上節(jié)所說(shuō),我們需要?jiǎng)?chuàng)建一個(gè)新的作用域并激活,這樣才能為客戶端指派IP地址等信息。這里我創(chuàng)建的范圍是192.168.1.1—192.168.1.10,別的選項(xiàng)類型暫時(shí)先不設(shè)置。如下圖: scope1為當(dāng)前的作用域,同時(shí)已激活,現(xiàn)在可以正常使用了。 OK,萬(wàn)事俱備只等客戶端了。通常情況下,DHCP客戶端從DHCP上獲取一個(gè)IP地址需要4個(gè)步驟,這里我們通過(guò)演示來(lái)一起驗(yàn)證一下。 這里依然使用wireshark工具來(lái)觀察DHCP服務(wù)器收、發(fā)數(shù)據(jù)包的情況。在理想的情況下,客戶機(jī)啟動(dòng)后,會(huì)自動(dòng)聯(lián)系可用的DHCP來(lái)獲取IP地址,其實(shí)整個(gè)過(guò)程是很快的,我們先從整體上看一下客戶端獲取IP的前后過(guò)程吧。如下圖: 這個(gè)圖比較大,基本上可以分為5部分,現(xiàn)在一個(gè)個(gè)來(lái)。 第一部分: 1、客戶端發(fā)送DHCP Discover 數(shù)據(jù)包。如下圖: 解釋一下:抓包的時(shí)間和前一張圖不對(duì)應(yīng),主要是中途做有別的事了,請(qǐng)見(jiàn)諒。 稍微說(shuō)一下這張圖:當(dāng)客戶端被配置為DHCP自動(dòng)獲取地址時(shí),一旦接入網(wǎng)絡(luò),且檢測(cè)到自己沒(méi)有IP地址,系統(tǒng)就會(huì)發(fā)出DHCP Discover 數(shù)據(jù)包,其中包括了客戶機(jī)的主機(jī)名、MAC地址、甚至還有上一次獲取到的IP地址等信息。169.254在這里的含義是告訴DHCP服務(wù)器,我是否可以申請(qǐng)這個(gè)地址?顯然不行,因?yàn)檫@個(gè)地址不在DHCP現(xiàn)在的作用域內(nèi)(下同)。這些信息都包含在Bootstrap Protocol(也就是BOOTP)協(xié)議中。這也是DHCP的原始協(xié)議。請(qǐng)留意,客戶端利用本機(jī)的68號(hào)端口發(fā)出DHCP查詢請(qǐng)求,服務(wù)端則用67號(hào)端口接受此請(qǐng)求。 其實(shí),不僅僅是剛接入會(huì)發(fā)送查詢包,還有在機(jī)器剛啟動(dòng)或請(qǐng)求被拒絕時(shí)也會(huì)觸發(fā)DHCP Discover數(shù)據(jù)包。 2、服務(wù)器回應(yīng)DHCP?Offer 數(shù)據(jù)包。如下圖: DHCP服務(wù)器會(huì)響應(yīng)客戶端的DHCP Discover請(qǐng)求后,會(huì)檢查自己的配置,如果有多余且有效的地址,則會(huì)返回一個(gè)DHCP Offer的廣播消息。因?yàn)榇藭r(shí)服務(wù)器也不知道客戶端在那里。數(shù)據(jù)包除了有IP地址、掩碼外,還有這個(gè)地址對(duì)應(yīng)的租約時(shí)限。 3、客戶端收到IP地址后用DHCP?Request 數(shù)據(jù)包回應(yīng)DHCP服務(wù)器。如下圖: DCHP Request這個(gè)數(shù)據(jù)包是通知當(dāng)前所有的DHCP服務(wù)器,當(dāng)然也包括分配給它IP地址的那臺(tái)。目的是讓大家知道,客戶端XP2已經(jīng)接受某一臺(tái)DHCP服務(wù)器指派了一個(gè)IP地址,并將IP地址通告出去。因?yàn)榭赡芫W(wǎng)內(nèi)不止一臺(tái)DHCP,而且XP2發(fā)的第一個(gè)包是面向全體的,XP2自己也不知道誰(shuí)會(huì)給它分配IP,同時(shí)其他DHCP服務(wù)器收到查詢請(qǐng)求后必然也會(huì)檢查各自的配置,然后都會(huì)分配IP出來(lái)。關(guān)鍵看XP2最先收到誰(shuí)的Offer,這就和我們面試一樣,那個(gè)公司現(xiàn)給我們Offer,通常情況下也會(huì)先去那家公司,當(dāng)然,我們不會(huì)像客戶端那么傻直接回絕其他所有的Offer,哈哈!當(dāng)其他DHCP服務(wù)器收到Request請(qǐng)求數(shù)據(jù)包后,就會(huì)收回已經(jīng)派出的地址,留做他用。 不過(guò)這還沒(méi)玩,客戶端必須得到指派給它IP地址的那臺(tái)DHCP服務(wù)器的確認(rèn)消息,這個(gè)IP地址也就是192.168.1.1才可以正式為XP2所用。一起來(lái)看第四個(gè)數(shù)據(jù)包。 4、DHCP收到Request報(bào)用DHCP?ACK包回應(yīng)客戶機(jī)。如下圖: DHCP服務(wù)器用ACK數(shù)據(jù)包作為一個(gè)確認(rèn)來(lái)回應(yīng)客戶端的Request包,數(shù)據(jù)包中的Option同樣也包含了租約的IP地址、掩碼和期限等信息。 到此為止,客戶端和服務(wù)器利用DHCP完成了一次交互查詢和響應(yīng)的過(guò)程。盡管服務(wù)器的IP固定,但這4個(gè)過(guò)程都是通過(guò)廣播方式進(jìn)行的。 這樣算不算完了?還不算,現(xiàn)在XP2獲取的地址是192.168.1.1,有朋友可能有疑問(wèn)了,這個(gè)IP不就是DHCP服務(wù)器的地址嗎?沒(méi)錯(cuò)!的確是這樣。那這怎么能行呢?大家不用急,我們來(lái)看看主機(jī)XP2是如何處理的。 第二部分: 客戶機(jī)在收到DHCP ACK數(shù)據(jù)包之后,會(huì)利用Gratuitous ARP協(xié)議對(duì)這個(gè)IP地址進(jìn)行沖突檢測(cè),目的是確定網(wǎng)內(nèi)是否有人使用這個(gè)IP。這個(gè)機(jī)制存在于2000或之后系統(tǒng)內(nèi)。如果網(wǎng)內(nèi)有相同機(jī)器使用這個(gè)IP,那么就會(huì)返回?cái)?shù)據(jù)包。并用廣播方式告知對(duì)方IP沖突。整個(gè)檢測(cè)過(guò)程有三個(gè)數(shù)據(jù)包,但如果沒(méi)有得到任何回應(yīng),也就不會(huì)有第二和第三個(gè)數(shù)據(jù)包了。 以下是這三個(gè)數(shù)據(jù)包: 1、客戶端發(fā)送Gratuitous ARP的Request數(shù)據(jù)包。如下圖: 這個(gè)數(shù)據(jù)包是客戶端用來(lái)檢測(cè)IP沖突的。檢測(cè)的大致原理已經(jīng)在圖中說(shuō)明了,請(qǐng)注意查看。 2、有相同IP的主機(jī)發(fā)送Gratuitous ARP的Reply數(shù)據(jù)包。如下圖: 很不幸的是,XP2收到了Reply數(shù)據(jù)包,這證明網(wǎng)內(nèi)有于自己相同的IP。此時(shí)DHCP服務(wù)器也就是192.168.1.1這個(gè)IP的原始擁有者會(huì)發(fā)送一個(gè)IP沖突的提示。 看一下第三個(gè)數(shù)據(jù)包。 3、有相同IP的主機(jī)以廣播方式發(fā)送Gratuitous ARP沖突提示信息。如下圖: 第三個(gè)數(shù)據(jù)包是DHCP服務(wù)器發(fā)出了一個(gè)沖突提示,在服務(wù)器的日志中也有體現(xiàn) 可見(jiàn),為了防止IP沖突,DHCP客戶端收到指派的地址后都會(huì)利用ARP協(xié)議進(jìn)行一次沖突檢測(cè)。 第三部分: 既然檢測(cè)到這個(gè)IP有沖突,自然就無(wú)法使用了,接下來(lái)客戶端會(huì)怎么做呢? 1、向DHCP服務(wù)器發(fā)送Decline拒絕數(shù)據(jù)包,表示192.168.1.1這個(gè)IP無(wú)法使用。 大家請(qǐng)注意這個(gè)數(shù)據(jù)包的Transaction ID和最開(kāi)始的4個(gè)DHCP數(shù)據(jù)包一致,順利的話,只需要4個(gè)數(shù)據(jù)包即可完成整個(gè)過(guò)程,但如果有沖突或出現(xiàn)別的情況就會(huì)產(chǎn)生額外的過(guò)程。這里的DHCP Decline 就是其中的一個(gè)。 第三部分: 在此之后,客戶機(jī)進(jìn)行第二次的IP地址獲取。這部分和第一部分的申請(qǐng)過(guò)程一樣,只是事務(wù)ID有所變化。 第二次申請(qǐng)時(shí),因?yàn)?92.168.1.1剛才已經(jīng)指派過(guò),且被拒絕,所以按照順序接下來(lái)會(huì)指派下一個(gè)可用的IP給XP2主機(jī),顯然是192.168.1.2,因?yàn)橹挥兴慌_(tái)主機(jī)在申請(qǐng)。 主要看一下DHCP Offer數(shù)據(jù)包里的IP地址是什么就知道了。如下圖: 第四部分: 第二次IP沖突檢測(cè),通常情況下會(huì)一次發(fā)出三個(gè)ARP包進(jìn)行檢測(cè)。如下圖: 第五部分: IP地址獲取成功后,對(duì)于客戶端來(lái)說(shuō)下一步就是查找WINS服務(wù)器,進(jìn)行NETBIOS名稱的注冊(cè)(這部分請(qǐng)參考《一起學(xué)WINS》系列文章)。 ??? 還有一點(diǎn)要說(shuō)明。為什么會(huì)出現(xiàn)DHCP Decline的數(shù)據(jù)包,也就是為什么192.168.1.1會(huì)被分配出去,這個(gè)不是服務(wù)器的IP嗎?原來(lái)我在設(shè)置作用域的時(shí)候不把192.168.1.1也包含了進(jìn)去,所以DHCP會(huì)首先把第一個(gè)地址也就是192.168.1.1分配給XP2。所以會(huì)出現(xiàn)這種情況。解決的辦法很簡(jiǎn)單,修改作用域,不包含1.1這個(gè)地址就可以了,或者設(shè)置排除地址,或者添加保留地址,可見(jiàn)第一種方法是最簡(jiǎn)單的。 到這里IP地址的獲取過(guò)程就講解完了,我們到DHCP服務(wù)器管理界面里看一下: 再到XP2上看一下當(dāng)前的IP地址信息。如下圖: 可以看到現(xiàn)在XP2的IP地址是192.168.1.2,Dhcp 的狀態(tài)也是 Enabled 的。 有關(guān)DHCP服務(wù)器的租約、授權(quán)、以及DHCP客戶端IP的釋放和重新獲取的內(nèi)容將在下一節(jié)中講解。 謝謝! 本文出自 “許一君的原創(chuàng)技術(shù)博客” 博客,請(qǐng)務(wù)必保留此出處http://jeffyyko.blog.51cto.com/28563/163168
轉(zhuǎn)載于:https://blog.51cto.com/ljh9527/215543
總結(jié)
以上是生活随笔為你收集整理的一起学DHCP系列(五)指派、获取的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: RHEL 5搭建Samba服务器详细过程
- 下一篇: Apache 下更改 DocumentR