DHCP工作原理及協議詳解

注1:在DHCP Discover報文中,客戶端在請求地址時,一般會申請它之前使用過的地址,所以在option 50的字段中會存在上一次使用的地址。如果該客戶所在的網絡中此IP仍然可用,服務器就可以准許該申請。否則,就要看該服務器是授權的還是非授權的。 授權服務器會拒絕請求,使得客戶立刻申請一個新的IP。非授權服務器僅僅忽略掉請求,導致一個客戶端請求的超時,於是客戶端就會放棄此請求而去申請一個新的IP地址。

 注2:DHCP請求報文中主要涉及的四種報文,客戶端發往服務器的均是以廣播報文的格式發送,而服務器發往客戶端的報文則可能是廣播包也可能是單播包,判斷的條件是第一個discover報文中bootp flags的參數,如果是0x0000則服務器發往客戶端使用單播,如果爲0x8000則使用廣播。


20130513_1593435_p_w_picpath002_784461_97665_0



DHCP(Dynamic Host Configuration Protocol,動態主機配置協議)是IETF爲實現IP的自動配置而設計的協議,它可以爲客戶機自動分配IP地址、子網掩碼以及缺省網關、DNS服務 器的IP地址等TCP/IP參數。瞭解DHCP工作過程可以幫助我們排除有關DHCP服務遇到的問題。DHCP 協議是基於UDP層之上的應用,本文結合抓報所得數據分析DHCP協議實現原理

一、先了解一下需要抓取的DHCP報文

客戶發出的IP租用請求報文

  DHCP客戶機初始化TCP/IP,通過UDP端口67向網絡中發送一個DHCPDISCOVER廣播包,請求租用IP地址。該 廣播包中的源IP地址爲0.0.0.0,目標IP地址爲255.255.255.255;包中還包含客戶機的MAC地址和計算機名。

DHCP迴應的IP租用提供報文

  任何接收到DHCPDISCOVER廣播包並且能夠提供IP地址的DHCP服務器,都會 通過UDP端口68給客戶機迴應一個DHCPOFFER廣播包,提供一個IP地址。該廣播包的源IP地址爲DCHP服務器IP,目標IP地址爲 255.255.255.255;包中還包含提供的IP地址、子網掩碼及租期等信息。

客戶選擇IP租用報文

  客戶機從不止一臺DHCP服務器接收到提供之後,會選擇第一個收到的DHCPOFFER 包,並向網絡中廣播一個 DHCPREQUEST消息包,表明自己已經接受了一個DHCP服務器提供的IP地址。該廣播包中包含所接受的IP地址和服務器的IP地址。 所有其他的DHCP服務器撤消它們的提供以便將IP地址提供給下一次IP租用請求。

DHCP服務器發出IP租用確認報文

  被客戶機選擇的DHCP服務器在收到DHCPREQUEST廣播後,會廣播返回給客戶機一個DHCPACK消息包,表明已經接受客戶機的選擇,並將這一IP地址的合法租用以及其他的配置信息都放入該廣播包發給客戶機。

客戶配置成功後發出的公告報文

  客戶機在收到DHCPACK包,會使用該廣播包中的信息來配置自己的TCP/IP,則租用過程完成,客戶機可以在網絡中通信。

至此一個客戶獲取IP的DHCP服務過程基本結束,不過客戶獲取的IP一般是用租期,到期前需要更新租期,這個過程是通過租用更新數據包來完成的。

客戶IP租用更新報文

(1)在當前租期已過去50%時,DHCP客戶機直接向爲其提供IP地址的DHCP服務器發 送DHCPREQUEST消息包。如果客戶機接收到該服務器迴應的DHCPACK消息包,客戶機就根據包中所提供的新的租期以及其它已經更新的 TCP/IP參數,更新自己的配置,IP租用更新完成。如果沒收到該服務器的回覆,則客戶機繼續使用現有的IP地址,因爲當前租期還有50%。

(2)如果在租期過去50%時未能成功更新,則客戶機將在當前租期過去87.5%時再次向爲其提供IP地址的DHCP聯繫。如果聯繫不成功,則重新開始IP租用過程。

(3)如果DHCP客戶機重新啓動時,它將嘗試更新上次關機時擁有的IP租用。如果更新未能 成功,客戶機將嘗試聯繫現有IP租用中列出的缺省網關。如果聯繫成功且租用尚未到期,客戶機則認爲自己仍然位於與它獲得現有IP租用時相同的子網上(沒有 被移走)繼續使用現有IP地址。 如果未能與缺省網關聯繫成功,客戶機則認爲自己已經被移到不同的子網上,將會開始新一輪的IP租用過程。

  DHCP客戶機在發出IP租用請求的DHCPDISCOVER廣播包後,將花費1秒鐘的 時間等待DHCP服務器的迴應,如果1秒鐘沒有服務器的迴應,它會將這一廣播包重新廣播四次(以2,4,8和16秒爲間隔,加上1~1000毫秒之間隨機 長度的時間)。四次之後,如果仍未能收到服務器的迴應,則運行Windows 2000的DHCP客戶機將從169.254.0.0/16這個自動保留的私有IP地址(APIPA)中選用一個IP地址,而運行其他操作系統的DHCP 客戶機將無法獲得IP地址。DHCP客戶機仍然每隔5分鐘重新廣播一次,如果收到某個服務器的迴應,則繼續IP租用過程。


用戶從DHCP獲取IP過程如下:

1、 用戶發出DHCPDISCOVER報文;

開始抓報文時首先執行的IPCONFIG/RELEASE命令的作用是用來釋放IP,這條報 文後面分析,在釋放IP後執行的更新IP命令IPCONFIG/RENEW將發起一個DHCP過程,分析從這裏開始。現在,客戶機沒有地址,它就會發出一 個DHCPDiscover報文,該報文是廣播報文,所有的具有DHCP Server功能的服務器都會收到該報文。

圖DHCP5

在圖中我們可以看到該報文在鏈路層中發的確實是廣播報文。由於DHCP協議是初始化協議,更簡單的說,就是讓終端獲取IP 地址的協議,既然終端連IP地址都沒有,何以能夠發出IP報文呢?

爲了解決這個問題,DHCP報文的封裝採取瞭如下措施:

1、首先鏈路層的封裝必須是廣播形式,即讓在同一物理子網中的所有主機都能夠收到這個報文。在Ethernet_II格式的網絡中,就是目標MAC爲全1。

2、由於終端沒有IP地址,IP頭中的原IP規定填爲全0。

3、當終端發出DHCP請求報文,它並不知道DHCP SERVER的IP地址,因此IP頭中的目標IP填爲子網廣播IP——全1,以保證DHCP SERVER的IP協議棧不丟棄這個報文。

4、上面的措施保證了DHCP SERVER能夠收到終端的請求報文,但僅憑鏈路層和IP層信息,DHCP SERVER無法區分出DHCP報文,因此終端發出的DHCP請求報文的UDP層中的原端口爲68,目標端口DstPort爲67。即DHCP SERVER通過知名端口號67來判斷一個報文是否是DHCP報文。

DHCP協議的報文中主要數據格式詳解

Boot record type爲1時表示是Client的請求,爲2時表示是Server的應答。

Hardware address typeClient 的網絡硬件地址類型,1表示Client 的網絡硬件是10MB的以太網類型

/Hardware address lengthClient 的網絡硬件地址長度,6表示Client 的網絡硬件地址長度是6bytes(即以太網類型的6bytes的MAC地址)。

HOPS跳數,表示當前的DHCP報文經過的DHCP RELAY(中級)的數目,每經過一個DHCP中繼,此字段就會加1,此字段的作用是限制DHCP報文不要經過太多的DHCP RELAY,協議規定,當“hops”大於4(現在也有規定爲16)時,這個DHCP報文就不能再進行處理,而是丟棄。

Transaction id事務ID,Client每次發送DHCP請求報文時選擇的隨機數,用來匹配server的響應報文是對哪個請求報文的響應。Client會丟棄“ID”不匹配的響應報文。

Elapsed boot time秒數,用來表示client開始DHCP請求後的時間流逝秒數

flags標誌,在 BOOTP中此字段是保留不用的,在DHCP協議中也只使用了其左邊的最高位。

Client self-assigned IPaddress客戶機IP地址

Client IP address server分配給client的IP地址

Next Server to use in bootstrap服務器IP地址

Relay AgentDHCP中繼代理IP地址

Client hardware address客戶機硬件地址MAC

Host name 服務器的主機名

Boot file nameClient 的啓動配置文件名

Vendor Information tag選項字段,此字段中包含了大量可選的終端初始配置信息和網絡配置信息,對於BOOTP協議,此字段爲64bytes,對於DHCP協議,此字段爲64---312 bytes。其中最常用的選項列表如下:

Dhcp message typecode = 53, length = 1, value= 1-8,此字段表示DHCP報文類型

Router Ipcode = 3, length = IP地址長度, value=client的默認網關的 IP地址;

DNS Ipcode = 6, length = IP地址長度的倍數, value= client的DNS服務器的IP地址序列;

Wins Ipcode = 44, length = IP地址長度的倍數, value= client的WINS服務器的 IP地址序列;

Client idcode = 61, length = client的網絡硬件地址的長度+2, value=“htype”+“hlen”+ client的網絡硬件地址;

server idcode = 54, length = IP地址長度, value= DHCP SERVER的IP地址;

其中我們要注意Transaction ID=CF04CD61和DHCP Message Type一項中type=Discover,前一項表示會話ID,即DHCP Server發回的響應報文中該結構的數值要與發出去的DHCP Discover中的該結構數值一樣,後一項說明DHCP報文類型爲Discover類型報文。

2 DHCP SERVER回送DHCPOFFER報文

從圖中可以看出,DHCPOFFER報文是單播而不是廣播,報文明確給出了目標MAC和 IP,這一點不同與一般的技術文章介紹。其實,DHCP SERVER給終端的響應報文是根據DHCP報文中的內容決定是廣播還是單播,一般都是廣播形式。通訊源端口是67,目標端口爲68,客戶端通過端口號 68來判斷一個報文是否是DHCP SERVER的響應報文,Transaction ID=CF04CD61,表示這個報文是與圖DHCP7中的DHCPDiscover報文相關的報文,因爲二者標示一致。

從DHCP Server迴應的DHCPOffer報文中我們還可以得到DHCP擬分配給客戶端的初始配置信息和網絡配置信息,其中

Client self-assigned IP address =0.0.0.0表示客戶機還沒有使用該地址

Client server-assigned IP address =10.177.124.73表示DHCP Server分配給該客戶機的IP地址

Server IP ID=218.290.240它標示了客戶機下一次發出DHCPRequest報文時,哪個DHCP Server會發出迴應

DHCP Message Typee=DHCP Offer表示這是一個對DHCPDiscover的迴應報文

Request IP address lease time =6000 表示租期是100分鐘

Domain Name Server=218.29.0.251域名服務器地址

Gateway address=10.177.124.254網關地址

Subnet mask=255.255.255.0 表示這個地址的網段是一個標準的C類地址網段

所有發送DHCP Offer信息包的服務器將保留它們提供的一個IP地址。在該地址不再保留之前,該地址不能分配給其他的客戶。

用戶發出DHCPREQUEST報文

客戶以廣播的方式發送DHCP Request信息包作爲響應。注意其中的DHCP Message Type一項中type=Request表示這是一個請求報文。

客戶利用DHCP Request詢問服務器其它的配置選項,如:DNS或網關地址如圖DHCP11

DHCP SERVER回送DHCPACK報文

該信息包是以單播的方式發送的。當服務器接收到DHCP Request信息包時,它以一個DHCP Acknowledge信息作爲響應,其內容同DHCPOFFER類似,並在“選項”字段中增加了IP地址使用租期選項。

宣告確認

CLIENT收到DHCPACK報文後(經過上面的處理後,有且只有一個DHCPACK報 文),會檢查DHCP SERVER分配給自己的IP地址是否能夠使用,如在以太網類型的網絡中,CLIENT會發出一個ARP請求來確定DHCP SERVER分配的IP地址是否已經被別人使用,如果可以使用,則CLIENT成功獲得IP地址,並根據IP地址使用租期自動啓動續延過程。

DHCP協議報文的種類

前面反覆提到DHCP Message Type項,這裏列出所有DHCP協議報文的種類。DHCP協議採用CLIENT-SERVER方式進行交互,其報文格式共有8種,具體含義如下:

1:DHCPDISCOVER(0x01),此爲Client開始DHCP過程的第一個報文

2:DHCPOFFER(0x02),此爲Server對DHCPDISCOVER報文的響應

3:DHCPREQUEST(0x03),此報文是Slient開始DHCP過程中對server的DHCPOFFER報文的迴應,或者是client續延IP地址租期時發出的報文

4:DHCPDECLINE(0x04),當Client發現Server分配給它的IP地址無法使用,如IP地址衝突時,將發出此報文,通知Server禁止使用IP地址

5:DHCPACK(0x05),Server對Client的DHCPREQUEST報文的確認響應報文,Client收到此報文後,才真正獲得了IP地址和相關的配置信息。

6:DHCPNAK(0x06),Server對Client的DHCPREQUEST報文的拒絕響應報文,Client收到此報文後,一般會重新開始新的DHCP過程。

7:DHCPRELEASE(0x07),Client主動釋放server分配給它的IP地址的報文,當Server收到此報文後,就可以回收這個IP地址,能夠分配給其他的Client。

8:DHCPINFORM(0x08),Client已經獲得了IP地址,發送此報文,只是爲了從DHCP SERVER處獲取其他的一些網絡配置信息,如route ip,DNS Ip等,這種報文的應用非常少見。

是一個運行IPCONFIG/RELEASE後釋放IP的報文,從圖中可以看出DHCP Message Type是7,他的作用是主動釋放server分配給它的IP地址的報文,Server收到此報文後,就可以回收這個IP地址,能夠分配給其他的Client。

上面提到的都是在已經開機的情況下獲得的報文,如果計算機重新啓動,是不是完全按照文章提到的四步得到IP參數。

其中包含關機前獲得的IP=192.168.0.22,這是不同與前面提到的 10.177.124.X段的IP。原來客戶機保留了上一次獲得的地址,客戶機在重新啓動時,如果租用期未超過50%,它就會認爲它已經知道該與哪臺 DHCP服務器進行聯繫,於是就跳過前兩步,併發送另一個DhcpRequest報文給同一個服務器。如果該IP地址仍然可用的話,該DHCP服務器將給 這臺客戶機返回另一個確認消息。 同樣,DHCP服務器上也會保留(在租用期內的)客戶機的地址。如果你的DHCP服務器中的租用期設的足夠長,你就會發現,重啓一臺客戶機後,客戶機總是 得到同一個地址。這正是由於客戶機、服務器能保存已分配地址所造成的。

如果一臺客戶機未從該DHCP服務器獲取過地址,或者它獲得的地址已過期,那麼它將需要經過全部四個步驟才能得到一個IP地址。

由於圖太多沒有將圖上傳。

###################################################################

第一部分

DHCP原理
客戶發出的IP租用請求報文

DHCP客戶機初始化TCP/IP,通過UDP端口67向網絡中發送一個DHCPDISCOVER廣播包,請求租用IP地址。該 廣播包中的源IP地址爲0.0.0.0,目標IP地址爲255.255.255.255;包中還包含客戶機的MAC地址和計算機名。

DHCP迴應的IP租用提供報文

任何接收到DHCPDISCOVER廣播包並且能夠提供IP地址的DHCP服務器,都會通過UDP端口68給客戶機迴應一個DHCPOFFER廣播包,提 供一個IP地址。該廣播包的源IP地址爲DCHP服務器IP,目標IP地址爲255.255.255.255;包中還包含提供的IP地址、子網掩碼及租期 等信息。

客戶選擇IP租用報文

客戶機從不止一臺DHCP服務器接收到提供之後,會選擇第一個收到的DHCPOFFER包,並向網絡中廣播一個 DHCPREQUEST消息包,表明自己已經接受了一個DHCP服務器提供的IP地址。該廣播包中包含所接受的IP地址和服務器的IP地址。 所有其他的DHCP服務器撤消它們的提供以便將IP地址提供給下一次IP租用請求。

DHCP服務器發出IP租用確認報文

被客戶機選擇的DHCP服務器在收到DHCPREQUEST廣播後,會廣播返回給客戶機一個DHCPACK消息包,表明已經接受客戶機的選擇,並將這一IP地址的合法租用以及其他的配置信息都放入該廣播包發給客戶機。

客戶配置成功後發出的公告報文

客戶機在收到DHCPACK包,會使用該廣播包中的信息來配置自己的TCP/IP,則租用過程完成,客戶機可以在網絡中通信。

至此一個客戶獲取IP的DHCP服務過程基本結束,不過客戶獲取的IP一般是用租期,到期前需要更新租期,這個過程是通過租用更新數據包來完成的。

客戶IP租用更新報文


      我們知道在TCP/IP網絡應用中,網絡用戶PC只有在獲取了一個網絡地址,纔可以和其他的網絡用戶進行通訊,在實際應用中,我們經常會遇到一些問題:比 如IP地址發生衝突、由於網關或DNS服務器地址的設置出現錯誤而無法訪問網絡中的其他主機、由於機器的經常變動位置而不得不頻繁地修改IP地址。基於這 些在網絡管理中所存在的種種問題,解決的方法是引入DHCP服務,以動態的方式實現客戶機器的信息配置。下面從DHCP原理出發並結合本人在授課過程的實 際經驗爲依據,對DHCP的應用以及在實際應用中我們會遇到的各類問題和相應的解決方法做深入的探討。

一、DHCP服務是什麼 DHCP稱爲動態主機配置協議。DHCP服務允許工作站連接到網絡並且自動獲取一個IP地址。配置DHCP服務的服務器可以爲每一個網絡客戶提供一個IP地址、子網掩碼、缺省網關、一個WINS服務器的IP地址,以及一個DNS服務器的IP地址。

二、DHCP服務在實際應用中的常見問題

1、在一個子網內是否可以存在多臺DHCP服務器,如果存在的話,那麼該子網中的客戶機能否正確獲取地址,將會獲取哪個DHCP服務器所分配的地 址,是否能控制客戶機器能從管理人員所設置的DHCP服務器中獲取地址而不會從一些非法用戶自建的DHCP服務器中取得非法得IP?

2、如果網絡中存在多個子網,而子網的客戶機需要DHCP服務器提供地址配置,那麼是採取在各個子網都安裝一臺DHCP服務器,還是隻在某一個子網中安裝DHCP服務器,讓它爲多個子網的客戶機分配IP地址,應該如何實現?

3、如果採取在一個子網中安裝DHCP服務器,讓它爲多個子網的客戶機分配IP地址,那麼應該需要在一臺DHCP服務器中創建多個不同範圍的作用域,而我們如何可以準確地保證相應範圍的地址分配給相應子網地主機呢?

4、如果客戶機器無法從DHCP服務器中獲取IP地址,那麼Windows2000客戶機器將會如何處理自己的TCP/IP設置?

三、DHCP的工作原理

要解析第二點中所提的問題,首先要搞清楚DHCP的實際的工作過程及原理,下面就對此做簡單介紹:DHCP是一個基於廣播的協議,它的操作可以歸結爲四個階段,這些階段是IP租用請求、IP租用提供、IP租用選擇、IP租用確認。

1、IP租用請求:在任何時候,客戶計算機如果設置爲自動獲取IP地址,那麼在它開機 時,就會檢查自己當前是否租用了一個IP地址,如果沒有,它就向DCHP請求一個租用,由於該客戶計算機並不知道DHCP服務器的地址,所以會用 255.255.255.255作爲目標地址,源地址使用0.0.0.0,在網絡上廣播一個DHCPDISCOVER消息,消息包含客戶計算機的媒體訪問控制(MAC)地址(網卡上內建的硬件地址)以及它的NetBIOS名字。

2、IP租用提供:當DHCP服務器接收到一個來自客戶的IP租用請求時,它會根據自己的作用域地址池爲該客戶保留一個IP地址並且在網絡上廣播一個來實現,該消息包含客戶的MAC地址、服務器所能提供的IP地址、子網掩碼、租用期限,以及提供該租用的DHCP服務器本身的IP地址。

3、IP租用選擇:如果子網還存在其它DHCP服務器,那麼客戶機在接受了某個DHCP服務器的DHCPOFFER消息後,它會廣播一條包含提供租用的服務器的IP地址的DHCPREQUEST消息,在該子網中通告所有其它DHCP服務器它已經接受了一個地址的提供,其他DHCP服務器在接收到這條消息後,就會撤銷爲該客戶提供的租用。然後把爲該客戶分配的租用地址返回到地址池中,該地址將可以重新作爲一個有效地址提供給別的計算機使用。

4、IP租用確認: DHCP服務器接收到來自客戶的DHCPREQUEST消息,它就開始配置過程的最後一個階段,這個確認階段由DHCP服務器發送一個DHCPACK包給客戶,該包包括一個租用期限和客戶所請求的所有其它配置信息,至此,完成TCP/IP配置。

四、DHCP服務常見問題的解決方案

本文第二點中我們所提出的問題有四點,以下就此4個問題做相應的分析並給出我個人的一些解決方案,相信可以對學習DHCP服務的自學者會有一定的幫助,這些問題也是在實際教學中學生提出疑問最多的知識難點。

1、根據客戶計算機的IP租用原理可以知道,在一個子網內,如果存在多臺DHCP服務器來提供地址配置信息,這是不違反請求、分配原則的,因爲只要 中有一臺客戶計算機在該子網中提出IP地址租約請求,由於請求是廣播形式的,所以在子網中可以有任意數量的特定DHCP服務器響應一個IP租用請求,而客 戶請求後選中的是這些任意特定DHCP服務器中的某一臺,這個選擇具有隨機性,但有一點要注意的是客戶只能爲每一張網絡接口卡接受一個租用提供,上面所謂 特定的DHCP服務器是指那些經過系統授權的DHCP服務器,而非授權的DHCP服務器將無法在網絡中提供正常的地址分配服務,這一點非常重要,因爲這樣 一來客戶機器將只會在管理員設定的地址範圍中取得地址,Windows 2000操作系統的這一新增功能,通過對DHCP服務器進行認證避免了非法DHCP服務器分配非法IP地址造成的IP地址衝突,在實際應用中,客戶機器獲 取非法的地址經常是造成網絡癱瘓和無法正常通訊的一大原因。綜合上面的分析可以做出第一個問題的結論:在一個子網中可以存在多臺DHCP服務器來提供地址 分配,但能夠作爲地址提供的不是任意的DHCP服務器,而應該是經過系統認證的那些,客戶機請求地址時最終從那一臺經過認證機器中獲取時隨機的。此外,從 另一個角度看,在相同子網上使用多個 DHCP 服務器,將爲它所服務的 DHCP 客戶機提供更強的容錯能力,如下圖所示,在一個子網內(網絡號爲192.168.1.0 掩碼爲255.255.255.0)共用兩個 DHCP 服務器,其中的DHCP服務器1不可用的話,DHCP服務器2可以取代它並繼續租用新的地址或續訂現有客戶機。可以建議採用的解決方案是使用 80/20 規則來劃分兩個 DHCP 服務器之間的作用域地址,具體做法可以是將服務器 1 配置成可使用大多數地址(約 80%),服務器 2 可以配置成讓客戶機使用其他地址(約 20%)。

2、如果在一個網絡中存在多個子網,而多個子網的主機都需要DHCP服務器來提供地址配置信息,那麼我們可以採用的方法是在每一個子網中安裝一臺 DHCP服務器,讓它們來爲各個子網分配IP地址,但從節約資源利用出發,我們一般情況下不這樣做,可以採取在一個子網中安裝DHCP服務器,讓它來爲多 個子網分配IP地址,實現多子網地址分配可以藉助DHCP的中繼代理功能實現,而作爲中繼代理的設備可以是一臺提供中繼代理程序的Windows2000 服務器或是一個符合RFC1542規定的路由器,具備 DHCP/ BOOTP Relay Agent 的功能(DHCP relay agent能夠把 DHCP/BOOTP 廣播信息從一個網段轉播到另一個網段上)。以管理的局域網分爲三個子網,用Win2000服務器連接。 下面是實現跨子網使用DHCP服務器的具體解決方案:

(1)安裝DHCP中繼代理程序:在Windows2000服務器的“路由和遠程訪問”窗口中,依次展開“本地服務器→IP路由選擇→常規”選項, 右鍵點擊“常規”選項,在彈出的菜單中選擇“新增路由協議”,然後在“新路由協議”窗口中選擇“DHCP中繼代理程序”,接着點擊“確定”按鈕。

(2)指定DHCP服務器:右鍵點擊剛剛添加的“DHCP中繼代理程序”選項,在彈出菜單中選擇“屬性”,進入“DHCP中繼代理程序屬性”對話 框,在“常規”標籤頁的“服務器地址”欄中輸入子網1中DHCP服務器的IP地址:192.168.1.2,然後點擊“添加”按鈕,最後點擊“確定”按鈕 關閉該對話框。

(3)配置訪問接口:右鍵點擊“DHCP中繼代理程序”選項,在彈出菜單中選擇“新增接口”,然後在“DHCP中繼代理程序的新接口”對話框中的 “接口”列表框中選中可以訪問子網1中的DHCP服務器的接口,這裏新增的接口應該是接口二和接口三,接着點擊“確定”按鈕。然後在彈出的“DHCP中繼 站屬性”對話框中,選中“中繼DHCP數據包”選項,這樣就啓用了它的中繼功能,最後點擊“確定”按鈕。

(4)DHCP服務器中配置一個超級作用域,其中包含三個普通作用域,作用域地址範圍可以分別設置爲 192.168.1.10~192.168.1.254(分配給子網1的PC使用);192.168.2.10~192.168.2.254(分配給子網 2的PC使用);192.168.3.10~192.168.3.254(分配給子網3的PC使用),必須記住DHCP只能爲每一個子網分配一個範圍。 完成以上配置後,子網2和子網3中的DHCP客戶機PC2及PC3就可以通過主機A的DHCP中繼代理程序訪問子網1中的DHCP服務器。

3、解決了單臺DHCP服務器爲多個子網分配IP地址後,我們還要搞清楚的一個問題是,如果某一個子網的PC如子網2中的PC2或子網3中的PC3 發出地址請求信息後,主機A可以作爲中繼代理對他們的請求傳達子網1中的DHCP服務器,但該DHCP服務器如何可以確定並準確地將作用域 192.168.2.0網段的地址分給PC2而把作用域192.168.3.0網段的地址分給PC3呢?這個是多數學生可能存在的疑問,要搞清楚這個問 題,可以參考以下的原理分析來找答案:

以子網2中的主機PC2爲例,DHCP 客戶機PC2在子網2 上廣播 DHCP/BOOTP discover 消息 (DHCPDISCOVER),廣播是將消息以 UDP (User Datagram Protocol)數據包的形式通過 67 端口發出,當中繼代理(relay agent)主機A接收到這個消息後,它檢查包含在這個消息報頭中的網關IP 地址,如果網關IP 地址爲 0.0.0.0 ,則用 relay agent主機A的接口二的IP地址192.168.2.1替換它,然後將其轉發到 DHCP 服務器所在的子網1上(主機A還擔任路由器功能)。當在子網1中的 DHCP服務器收到這個消息後,它開始檢查消息中的網關IP地址,然後判斷該網關地址是否包含在DHCP的某一個作用域範圍內,從而決定它是否可以使用相 應的作用域的地址來提供IP地址租約,當然,本例中DHCP服務器將會從作用域192.168.2.10~192.168.2.254選取一個地址來配置 PC2;也就是說DHCP客戶機的請求地址消息中的網關IP地址 (GIADDR) 將是DHCP服務器用來確定從那個DHCP 範圍中挑選IP地址來配置客戶機的依據。

4、如果DHCP客戶機無法找到DHCP服務器,則它從微軟保留的 B 類網段 169.254.0.0 中挑選一個 IP 地址作爲自己的 IP 地址,子網掩碼爲 255.255.0.0 ,所挑選的地址由DHCP客戶機利用ARP 廣播來 確定自己所挑選的 IP 地址是否已被網絡上的其它設備使用,如果該 IP 地址已被使用,那麼客戶機會再挑選另一個IP地址重新進行測試,而且最多可以重試十個IP 地址,直到成功獲取配置。在此之後,客戶機會在後臺繼續每隔 5 分鐘嘗試與DHCP服務器進行通信,一旦與服務器取得聯絡,則客戶機放棄自動設置的 IP 地址,而使用服務器分配的 IP 地址和其它配製信息。所以當你在某一天發現你的PC的IP地址是個B類的地址169.254.0.0/16網段的地址時,你就應該知道那是怎麼一回事了 吧。

至此,我們分析了幾個關於DHCP服務的應用方面的疑難問題,並且給出了相應的解決方案,對於DHCP服務在教學中我們還遇到許多一些其他問題,比 如說DHCP服務器本身的地址是否一定要由管理員靜態指定,設置爲自動獲取將會有什麼後果?爲什麼把客戶機器向DHCP服務器請求地址稱爲地址租用,租用 時間的長短對網絡中IP地址的管理與應用有哪些幫助?如何可以使用DHCP服務讓一個自動獲取IP的主機能在任何時候都能取得指定的一個固定地址?這些問 題都要求教師在教學當中要認真地去探究該服務的每一個細節的知識點,纔可以對該知識點的原理以及在實際中的應用進行透徹的講授,也是我們熟練掌握和使用 DHCP服務的前提。


第二部分
DHCP的工作流程分爲四步:

一、客戶機請求
IPDHCPdiscover
二、服務器響應(
DHCPoffer
三、客戶機選擇
IPDHCPrequest
四、服務器確認
IP租約(DHCPack/DHCPnak

下面我們就來分別講一下:

一、客戶機請求
IPDHCPdiscover
當客戶機設置使用
DHCP協議獲取 IP時,客戶機將使用 0.0.0.0作爲源地址,使用255.255.255.255作爲目標地址來廣播請求 IP地址的信息。廣播信息中包含 DHCP客戶機的MAC地址和計算機名。(這裏的 MAC地址可不是 FFFF.FFFF.FFFF MAC 廣播哦~)

二、服務器響應(DHCPoffer
由於是廣播所以同一網段內的計算機都會“聽”到!
DHCP服務器當然也不例外。DHCP服務器“聽”到後,它首先會針對該次請求的信息所攜帶的 MAC地址與 DHCP主機本身的設置值進行對比。如果 DHCP主機的設置中有針對該 MAC 提供的靜態 IP(每次都給一個固定 IP),則提供給客戶機相關的固定 IP與相關的網絡參數;如果該信息的 MAC並不在 DHCP主機的設置中,則 DHCP主機會選取當前網段內沒有使用的IP給客戶機使用!當然這裏的響應,服務器也是採用 255.255.255.255的廣播,因爲此時客戶機還沒 IP哦~
這裏有幾個要注意的地方:

1、如果同一網段內有多臺 DHCP服務器,那麼客戶機是看誰先響應,誰先響應就選擇誰。
2、在 DHCP主機發給客戶端的信息中,會附帶一個“租約期限”信息,用來告訴客戶機這個 IP能用多久!

三、客戶機選擇 IPDHCPrequest
當客戶機接收到響應的信息之後,首先會以
ARP在網段內廣播(ARP使用全 1的廣播 MAC地址),以確定來自 DHCP服務器的 IP沒被佔用!如果該 IP被佔用,那麼客戶機對於這次的 DHCP信息將不接受,而是再次發送 DHCP請求。若該 IP沒有被佔用,客戶機則接受 DHCP服務器所給的網絡參數。同時,客戶機發出一個廣播,通知所挑選的 DHCP服務器(有多臺 DHCP服務器存在時),當然此時也是通知其它的 DHCP服務器,讓這些 DHCP服務器將本預分配給客戶機的 IP釋放掉!(這裏的概念一定要弄清楚!)注意,這一步客戶機並還沒有應用從 DHCP服務器獲取到 IP哦!所以這一步源地址還是0.0.0.0,目標地址是 255.255.255.255

四、服務器確認 IP租約(DHCPack/DHCPnak
終於到最後一步了,
DHCP服務器收到客戶機選擇 IP的廣播後,則以 DHCPack消息的形式向客戶機廣播成功的確認。DHCPack包含:IP、掩碼、網關、DNS等。當然上面還有一個 DHCPnak,一看就知道是不成功的意思!那麼,哪些情況纔會有這種廣播呢?
例如,IP地址已無效或這個地址已被其它的客戶機使用了!

此時,當客戶機收到 DHCP服務器的 DHCPack消息後,客戶機便使用了 DHCP服務器所給的網絡參數!這裏的四個步驟可都是用的廣播哦,不知道大家有沒有注意!呵呵~到此,我們的 DHCP原理就講完了,下面我還給補充了點東東,希望對大家有用:

1、當我們的客戶機無法找到 DHCP服務器時,它將從 TCP/IP B類網段 169.254.0.0中挑選一個 IP地址作爲自己的 IP地址,而繼續每隔 5分鐘嘗試與 DHCP服務器進行通信。(這裏的這個 B類地址被稱爲 APIPA,即自動分配私有 IP地址!)

2IP租約的更新,當客戶機重新啓動或租期達 50%時,客戶機不會從第一步(DHCPdiscover開始重新 IP,而是從第三步(DHCPrequest開始哦~有當租期達 87.5%時,它才從第一步(DHCPdiscover開始重新請!

3、客戶機這裏還有兩條命令,希望大家給記住

ipconfig/release 是用來 IP租約的釋放。使用 DHCPrelease消息!

ipconfig/renew 是用來 IP租約的更新。使用 DHCPdiscover消息!

4、客戶機必須經過四步的情況:

(1)第一次扮演 DHCP客戶機角色

(2)IP DHCP服務器收

(3)客戶機自己釋放了 IP,並重租一個 IP時。

(4)客戶機更了。

(5)客戶機轉移一網段時。


參考:http://blog.chinaunix.net/uid-22287947-id-1775641.html


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章