一起學DHCP系列(五)指派、獲取

原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://jeffyyko.blog.51cto.com/28563/163168

    本節將主要講述DHCP客戶端獲取IP的過程,也是此系列中非常重要的一節。

    為了讓大家更好的理解DHCP客戶端和服務器之間是如何交互工作的。這里搭建了一個很小的環境來輔助演示。如下圖:

1.jpg

     首先在win2k3上安裝DHCP服務器,一臺XP主機與之直連。有關DHCP的安裝過程,請參考上一節的內容。DHCP安裝完成后,如下圖:

2.jpg

服務器名稱為win2k3,IP為192.168.1.1。依據上節所說,我們需要創建一個新的作用域并激活,這樣才能為客戶端指派IP地址等信息。這里我創建的范圍是192.168.1.1—192.168.1.10,別的選項類型暫時先不設置。如下圖:

3.jpg

scope1為當前的作用域,同時已激活,現在可以正常使用了。

OK,萬事俱備只等客戶端了。通常情況下,DHCP客戶端從DHCP上獲取一個IP地址需要4個步驟,這里我們通過演示來一起驗證一下。

這里依然使用wireshark工具來觀察DHCP服務器收、發數據包的情況。在理想的情況下,客戶機啟動后,會自動聯系可用的DHCP來獲取IP地址,其實整個過程是很快的,我們先從整體上看一下客戶端獲取IP的前后過程吧。如下圖:

4.jpg

這個圖比較大,基本上可以分為5部分,現在一個個來。

第一部分:

1、客戶端發送DHCP Discover 數據包。如下圖:

5.jpg

解釋一下:抓包的時間和前一張圖不對應,主要是中途做有別的事了,請見諒。

稍微說一下這張圖:當客戶端被配置為DHCP自動獲取地址時,一旦接入網絡,且檢測到自己沒有IP地址,系統就會發出DHCP Discover 數據包,其中包括了客戶機的主機名、MAC地址、甚至還有上一次獲取到的IP地址等信息。169.254在這里的含義是告訴DHCP服務器,我是否可以申請這個地址?顯然不行,因為這個地址不在DHCP現在的作用域內(下同)。這些信息都包含在Bootstrap Protocol(也就是BOOTP)協議中。這也是DHCP的原始協議。請留意,客戶端利用本機的68號端口發出DHCP查詢請求,服務端則用67號端口接受此請求。

其實,不僅僅是剛接入會發送查詢包,還有在機器剛啟動或請求被拒絕時也會觸發DHCP Discover數據包。

2、服務器回應DHCP Offer 數據包。如下圖:

6.jpg

DHCP服務器會響應客戶端的DHCP Discover請求后,會檢查自己的配置,如果有多余且有效的地址,則會返回一個DHCP Offer的廣播消息。因為此時服務器也不知道客戶端在那里。數據包除了有IP地址、掩碼外,還有這個地址對應的租約時限。

3、客戶端收到IP地址后用DHCP Request 數據包回應DHCP服務器。如下圖:

7.jpg

DCHP Request這個數據包是通知當前所有的DHCP服務器,當然也包括分配給它IP地址的那臺。目的是讓大家知道,客戶端XP2已經接受某一臺DHCP服務器指派了一個IP地址,并將IP地址通告出去。因為可能網內不止一臺DHCP,而且XP2發的第一個包是面向全體的,XP2自己也不知道誰會給它分配IP,同時其他DHCP服務器收到查詢請求后必然也會檢查各自的配置,然后都會分配IP出來。關鍵看XP2最先收到誰的Offer,這就和我們面試一樣,那個公司現給我們Offer,通常情況下也會先去那家公司,當然,我們不會像客戶端那么傻直接回絕其他所有的Offer,哈哈!當其他DHCP服務器收到Request請求數據包后,就會收回已經派出的地址,留做他用。

不過這還沒玩,客戶端必須得到指派給它IP地址的那臺DHCP服務器的確認消息,這個IP地址也就是192.168.1.1才可以正式為XP2所用。一起來看第四個數據包。

4、DHCP收到Request報用DHCP ACK包回應客戶機。如下圖:

8.jpg

DHCP服務器用ACK數據包作為一個確認來回應客戶端的Request包,數據包中的Option同樣也包含了租約的IP地址、掩碼和期限等信息。

到此為止,客戶端和服務器利用DHCP完成了一次交互查詢和響應的過程。盡管服務器的IP固定,但這4個過程都是通過廣播方式進行的。

這樣算不算完了?還不算,現在XP2獲取的地址是192.168.1.1,有朋友可能有疑問了,這個IP不就是DHCP服務器的地址嗎?沒錯!的確是這樣。那這怎么能行呢?大家不用急,我們來看看主機XP2是如何處理的。

第二部分:

客戶機在收到DHCP ACK數據包之后,會利用Gratuitous ARP協議對這個IP地址進行沖突檢測,目的是確定網內是否有人使用這個IP。這個機制存在于2000或之后系統內。如果網內有相同機器使用這個IP,那么就會返回數據包。并用廣播方式告知對方IP沖突。整個檢測過程有三個數據包,但如果沒有得到任何回應,也就不會有第二和第三個數據包了。

以下是這三個數據包:

1、客戶端發送Gratuitous ARP的Request數據包。如下圖:

一起學DHCP系列(五)指派、獲取

這個數據包是客戶端用來檢測IP沖突的。檢測的大致原理已經在圖中說明了,請注意查看。

2、有相同IP的主機發送Gratuitous ARP的Reply數據包。如下圖:

10.jpg

很不幸的是,XP2收到了Reply數據包,這證明網內有于自己相同的IP。此時DHCP服務器也就是192.168.1.1這個IP的原始擁有者會發送一個IP沖突的提示。

看一下第三個數據包。

3、有相同IP的主機以廣播方式發送Gratuitous ARP沖突提示信息。如下圖:

11.jpg

第三個數據包是DHCP服務器發出了一個沖突提示,在服務器的日志中也有體現

12.jpg

可見,為了防止IP沖突,DHCP客戶端收到指派的地址后都會利用ARP協議進行一次沖突檢測。

第三部分:

既然檢測到這個IP有沖突,自然就無法使用了,接下來客戶端會怎么做呢?

1、向DHCP服務器發送Decline拒絕數據包,表示192.168.1.1這個IP無法使用。

13.jpg

大家請注意這個數據包的Transaction ID和最開始的4個DHCP數據包一致,順利的話,只需要4個數據包即可完成整個過程,但如果有沖突或出現別的情況就會產生額外的過程。這里的DHCP Decline 就是其中的一個。

第三部分:

在此之后,客戶機進行第二次的IP地址獲取。這部分和第一部分的申請過程一樣,只是事務ID有所變化。

第二次申請時,因為192.168.1.1剛才已經指派過,且被拒絕,所以按照順序接下來會指派下一個可用的IP給XP2主機,顯然是192.168.1.2,因為只有它一臺主機在申請。

主要看一下DHCP Offer數據包里的IP地址是什么就知道了。如下圖:

14.jpg

第四部分:

第二次IP沖突檢測,通常情況下會一次發出三個ARP包進行檢測。如下圖:

15.jpg

第五部分:

IP地址獲取成功后,對于客戶端來說下一步就是查找WINS服務器,進行NETBIOS名稱的注冊(這部分請參考《一起學WINS》系列文章)。

    還有一點要說明。為什么會出現DHCP Decline的數據包,也就是為什么192.168.1.1會被分配出去,這個不是服務器的IP嗎?原來我在設置作用域的時候不把192.168.1.1也包含了進去,所以DHCP會首先把第一個地址也就是192.168.1.1分配給XP2。所以會出現這種情況。解決的辦法很簡單,修改作用域,不包含1.1這個地址就可以了,或者設置排除地址,或者添加保留地址,可見第一種方法是最簡單的。

    到這里IP地址的獲取過程就講解完了,我們到DHCP服務器管理界面里看一下:

16.jpg

再到XP2上看一下當前的IP地址信息。如下圖:

17.jpg

可以看到現在XP2的IP地址是192.168.1.2,Dhcp 的狀態也是 Enabled 的。

    有關DHCP服務器的租約、授權、以及DHCP客戶端IP的釋放和重新獲取的內容將在下一節中講解。

謝謝!

原創文章,作者:s19930811,如若轉載,請注明出處:http://www.www58058.com/1554

(0)
s19930811s19930811
上一篇 2015-03-24
下一篇 2015-03-25

相關推薦

  • 手動添加用戶

        通常使用useradd命令可以輕松添加一個用戶,然后使用passwd命令設置一個密碼后就可以登錄系統了,其實這一過程完成可以自己手動完成,下面就讓我們來通過修改配置文件來添加一個用戶。 一、修改/etc/passwd文件     在etc/passwd文件中手動添加一行內…

    Linux干貨 2015-04-27
  • LVS DR模式

    一、測試環境說明 操作系統:CentOS6.7-X64 IP_VS版本:1.2.26 DR:10.10.10.130 VIP:10.10.10.140 RS1:10.10.10.131 RS2:10.10.10.132 二、LVS-DR模式原理 a)客戶端發送一個請求(源地址為CIP,目標地址為VIP,我們簡稱為CIP:VIP)到LVS的DR b)通過在調度…

    Linux干貨 2016-09-19
  • 網絡管理及其一些網絡協議

    1,這周我們主要學的是有關網絡的相關知識;下面我就介紹一下我感覺重要的一些內容。 首先介紹的是計算機網絡協議的七層模型:從上到下依次分為:7,應用層(application):OSI模型的第七層,負責為操作系統或網絡應用程序提供訪問網絡服務的接口。                …

    2017-09-02
  • Http實踐

    練習:搭建虛擬主機     (1)基于主機名實現三個虛擬主機     (2) 每虛擬主機使用獨立的訪問日志和錯誤日志     (3) 第三個虛擬主機的/admin要進行用戶訪問認證     (4) 在…

    Linux干貨 2016-09-30
  • Linux之yum詳解及程序包安裝

    Linux之 yum詳解 及 程序包安裝    在Linux常用的命令安裝工具中,rpm是一個功能十分強大的軟件包管理系統,它使得在Linux下安裝、升級和刪除軟件包的工作變得容易,并且具有查詢、驗證軟件包的功能。與圖形化工具相比,使用命令行可以獲得更大的靈活性。    但是rpm有一個缺點,無法解決包的依賴性,也就是…

    Linux干貨 2016-08-24
  • Linux文本處理三劍客之一sed

    這周我們學習了文本處理工具三劍客之一的sed,對于之前學的grep同樣的重要,也同樣是一個難點。sed是針對一個文件或者多個文件一行一行處理的,它處理的時候,把當前處理的行存儲在模式空間,處理完成后,把緩沖區內容輸出到屏幕上,接著處理下一行。直到文件末尾。原文件并沒有經過更改。 1、sed一些常用的選項     -n …

    2017-08-26
欧美性久久久久