吳琛
摘 要:隨著互聯(lián)網(wǎng)的普及,人們工作、學(xué)習(xí)和生活都與網(wǎng)絡(luò)的聯(lián)系越來越緊密,搭建了許多不同的網(wǎng)絡(luò),比如企業(yè)網(wǎng)、校園網(wǎng)和城區(qū)網(wǎng)等。網(wǎng)絡(luò)管理是大型計(jì)算機(jī)網(wǎng)絡(luò)成功的關(guān)鍵,利用動(dòng)態(tài)主機(jī)分配協(xié)議(DHCP)服務(wù)已經(jīng)相當(dāng)流行,DHCP的運(yùn)用也越來越被重視。在實(shí)際操作過程中, DHCP服務(wù)器的構(gòu)建也越來越常見。采用DHCP技術(shù)動(dòng)態(tài)地為主機(jī)配置參數(shù),可以有效解決目前IP地址資源不足和用戶移動(dòng)性等問題,并能減輕大型網(wǎng)絡(luò)管理員的工作量,減少手工網(wǎng)絡(luò)配置的錯(cuò)誤,可以快速搭建一個(gè)大型網(wǎng)絡(luò)或修改其網(wǎng)絡(luò)配置。通過Sniffer軟件捕捉DHCP數(shù)據(jù)包,詳細(xì)討論了DHCP的工作過程。
關(guān)鍵詞:互聯(lián)網(wǎng);DHCP;IP地址;MAC地址
中圖分類號(hào):TP393.071 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2095-6835(2014)07-0138-03
1 DHCP介紹
隨著計(jì)算機(jī)的普及,現(xiàn)代生活朝著網(wǎng)絡(luò)化、信息化的方向發(fā)展,無論在學(xué)習(xí)、生活還是科研應(yīng)用等領(lǐng)域,都離不開網(wǎng)絡(luò)。在這個(gè)網(wǎng)絡(luò)時(shí)代,網(wǎng)上溝通與交流已經(jīng)成為人們不可分割的一部分。要實(shí)現(xiàn)這些網(wǎng)上交流,網(wǎng)絡(luò)協(xié)議是必不可少的。各客戶端之間的交流必須要通過服務(wù)器來進(jìn)行,服務(wù)器在管理眾多客戶時(shí),通過發(fā)放IP地址來為客戶提供上網(wǎng)服務(wù),使客戶可以輕松地在網(wǎng)上暢游。但是,對(duì)管理員而言,如果需要一個(gè)一個(gè)地在客戶端上設(shè)置IP地址,對(duì)大中型網(wǎng)絡(luò)來說,其繁重的工作量是不可想象的,無法令人承受。那么,怎么解決這個(gè)問題呢?DHCP便應(yīng)運(yùn)而生了。DHCP可以幫助管理員自動(dòng)將IP地址分配給每一個(gè)發(fā)出申請的用戶,而不需要管理員對(duì)每一個(gè)客戶端進(jìn)行手動(dòng)設(shè)置,這為管理員對(duì)網(wǎng)絡(luò)的管理提供了極大的便利,在減輕了管理員工作強(qiáng)度的同時(shí),還大大提高了工作效率。
TCP/IP網(wǎng)絡(luò)中的每個(gè)主機(jī)都需要一個(gè)IP地址,網(wǎng)絡(luò)中的主機(jī)通過IP地址通信。關(guān)于IP地址及其相關(guān)配置,可通過以下兩種方式獲得:手工配置和自動(dòng)獲得。
如果網(wǎng)絡(luò)主機(jī)數(shù)目較少,可手工為網(wǎng)絡(luò)中的主機(jī)分配IP地址。但在某些情況下,網(wǎng)絡(luò)管理員手工為每臺(tái)計(jì)算機(jī)分配IP地址時(shí),就顯得力不從心,這就需要?jiǎng)討B(tài)IP地址方案。在該方案中,每臺(tái)主機(jī)并不設(shè)定靜態(tài)IP地址,而是在開機(jī)時(shí)被分配IP地址,所以,這臺(tái)計(jì)算機(jī)就被稱為DHCP客戶端。在網(wǎng)絡(luò)中提供DHCP服務(wù)的計(jì)算機(jī)被稱為是DHCP服務(wù)器。DHCP服務(wù)器為網(wǎng)絡(luò)中的計(jì)算機(jī)動(dòng)態(tài)分配IP地址,并提供子網(wǎng)掩碼、默認(rèn)網(wǎng)關(guān)和DNS服務(wù)器的IP地址等。
通過DHCP服務(wù),可以減少管理員的工作量,還可避免IP地址的沖突。要想大批量配置計(jì)算機(jī)的IP地址和相關(guān)設(shè)置,只要在DHCP服務(wù)器上設(shè)置即可,管理員不必對(duì)每一臺(tái)計(jì)算機(jī)都進(jìn)行配置。
2 DHCP的使用場合
需要使用DHCP服務(wù)的場合有以下幾種:①網(wǎng)絡(luò)規(guī)模較大,網(wǎng)絡(luò)中的主機(jī)數(shù)很多,要在網(wǎng)絡(luò)中增刪主機(jī)或重新配置網(wǎng)絡(luò)時(shí),使用手工分配的工作量會(huì)很大,而且容易出錯(cuò),比如會(huì)導(dǎo)致IP地址沖突等。②網(wǎng)絡(luò)中的主機(jī)多,而IP地址不夠用,此時(shí),可使用DHCP服務(wù)器解決這一問題。例如網(wǎng)絡(luò)上有100臺(tái)主機(jī),采用靜態(tài)地址方案時(shí),每個(gè)主機(jī)都要分配一個(gè)IP地址,總共需要100個(gè)IP地址。然而,這100臺(tái)主機(jī)并不同時(shí)開機(jī),甚至可能只有20臺(tái)同時(shí)開機(jī),這樣就浪費(fèi)了80個(gè)IP地址。這種情況對(duì)Internet服務(wù)提供商(ISP)來說更為嚴(yán)重。如果ISP有10 000個(gè)用戶,是否需要10 000個(gè)IP地址?解決這個(gè)問題的最好方法就是使用動(dòng)態(tài)地址方案,即DHCP。③移動(dòng)客戶要在不同子網(wǎng)中移動(dòng)時(shí),就需要獲得不同子網(wǎng)的IP地址,DHCP服務(wù)可以有效解決這一問題。隨著移動(dòng)辦公的普及,當(dāng)計(jì)算機(jī)在不同子網(wǎng)移動(dòng)時(shí),需要改變IP地址,并且移動(dòng)的計(jì)算機(jī)需要在每個(gè)網(wǎng)絡(luò)中都占用1個(gè)IP地址。
3 DHCP工作過程
該實(shí)驗(yàn)的網(wǎng)絡(luò)拓?fù)淙鐖D1所示。
路由器R1為DHCP服務(wù)器,R2為DHCP客戶端。在PC上安裝Sniffer軟件,通過捕獲DHCP數(shù)據(jù)包,分析IP地址獲取的全過程。
3.1 捕獲包
為了便于分析,把計(jì)算機(jī)連接到1臺(tái)單獨(dú)的交換機(jī)上,關(guān)閉計(jì)算機(jī)上無關(guān)的應(yīng)用程序,這樣做的目的是僅捕獲相關(guān)的包。
運(yùn)行R1和R2,R1的配置如下:
Router>en
Router#conf t
Router(config)#host R1
R1(config)#int fa0/0
R1(config-if)#ip address 192.168.0.1 255.255.255.0
R1(config-if)#no shut
R1(config-if)#exit
//接下來這段是DHCP服務(wù)器的配置
R1(config)#ip dhcp excluded-address 192.168.0.1 //把R1排除出地址池
R1(config)#ip dhcp excluded-address 192.168.0.2 //把PC排除出地址池
R1(config)#ip dhcp pool nat-pool //配置DHCP地址池
R1(dhcp-config)#network 192.168.0.0 255.255.255.0 //要配置的網(wǎng)段
R1(dhcp-config)#default-router 192.168.0.1 //要配置的網(wǎng)關(guān)
R1(dhcp-config)#dns-server 218.2.135.1 //要配置的DNS服務(wù)器
R2的配置如下:
Router>en
Router#conf t.
Router(config)#host R2
R2(config)#int fa0/0
R2(config-if)#ip address dhcp
注意:先不要打開R2的Fa0/0端口。
運(yùn)行Sniffer軟件,開始抓包。打開R2的Fa0/0端口。當(dāng)R2的屏幕出現(xiàn)以下所示的信息時(shí),停止Sniffer的包捕獲。
R2(config)#int fa0/0
R2(config-if)#ip address dhcp
R2(config-if)#
R2(config-if)#no sh
R2(config-if)#
*Mar 22 13:21:59.555: %LINK-3-UPDOWN: Interface FastEthernet0/0,changed state to up
*Mar 22 13:21:59.555: %ENTITY_ALARM-6-INFO: CLEAR INFO Fa0/0 Physical Port Administrative State Down
*Mar 22 13:22:00.555: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up
*Mar 22 13:22:09.267: %DHCP-6-ADDRESS_ASSIGN: Interface FastEthernet0/0 assigned DHCP address 192.168.0.5,mask 255.255.255.0,hostname R2
Sniffer捕獲的包如圖2所示。這里捕獲的包保存在sniffer-dhcp.cap文件中,如果計(jì)算機(jī)上還有其他的應(yīng)用程序包,可能會(huì)夾雜其他的數(shù)據(jù)包,但圖中顯示的數(shù)據(jù)包應(yīng)該都在。
3.2 分析包
當(dāng)DHCP客戶端登錄進(jìn)入網(wǎng)絡(luò)時(shí),通過以下步驟獲取IP地址。
DHCP客戶端(R2)先發(fā)送DHCP Discover信息。如圖2所示,該數(shù)據(jù)包的源MAC地址是“ca08.0974.0000”,即路由器R2 Fa0/0端口的MAC,目的MAC地址是“FFFFFFFFFFFF”,廣播MAC地址,因?yàn)榭蛻舳爽F(xiàn)在還并不知道DHCP服務(wù)器的MAC地址;源IP地址是“0.0.0.0”,因?yàn)槁酚善鱎2現(xiàn)在還沒有IP地址,目的IP地址是“255.255.255.255”,因?yàn)榭蛻舳爽F(xiàn)在還并不知道DHCP服務(wù)器的IP地址;DHCP使用的是UDP協(xié)議,客戶端的端口號(hào)是68,服務(wù)器端的端口號(hào)是67;數(shù)據(jù)包的用途是“DHCP Discover”。
R1(DHCP服務(wù)器)收到R2(DHCP客戶端)廣播的DHCP Discover報(bào)文后,它發(fā)現(xiàn)DHCP地址池中的IP地址“192.168.0.5”可以被租用。R1在提供地址前,先要發(fā)送一個(gè)ARP查詢包,查詢該地址是否已被使用,如果收到ARP應(yīng)答包,則表明該地址已被使用,R1會(huì)從地址池中換一個(gè)地址再試;如果沒有收到ARP應(yīng)答,表明該地址未被使用。如圖3所示,ARP查詢包也是一個(gè)廣播包,源MAC地址“cc07.0974.0000”,即R1的Fa0/0端口的MAC地址,目的MAC地址是廣播地址,因?yàn)橐蛉W(wǎng)查詢;源IP地址是192.168.0.1,目的IP地址是192.168.0.5.
R1向R2發(fā)送DHCP Offer報(bào)文,其中包括要租用的IP地址。如圖4所示,該數(shù)據(jù)包源MAC地址為“cc07.0974.0000”,即R1的Fa0/0端口的MAC地址,目的MAC地址是廣播MAC地址,因?yàn)镈HCP服務(wù)器要通知網(wǎng)絡(luò)上的其他DHCP服務(wù)器,該地址已被使用。源IP地址是R1的IP地址“192.168.0.1”,目的IP地址是廣播地址,因?yàn)榇藭r(shí)R2仍沒有IP地址。DHCP使用的是UDP協(xié)議,源端口變成了67,目的端口是68;DHCP Offer中包含了要分配客戶端的IP地址和客戶端的MAC地址;該數(shù)據(jù)包的用途是DHCP Offer。
如果沒有DHCP服務(wù)器對(duì)客戶端的請求進(jìn)行響應(yīng),則客戶端就無法獲得IP地址,初始化失敗。但客戶端會(huì)每隔一段時(shí)間發(fā)送幾個(gè)DHCP Discover報(bào)文,直到收到DHCP Offer。如果是Windows的客戶端,在多次嘗試失敗后,客戶端將被分配1個(gè)169.254.0.0/16網(wǎng)段的IP地址,但客戶端仍會(huì)繼續(xù)嘗試聯(lián)系DHCP服務(wù)器,一旦獲得DHCP Offer,客戶端便會(huì)使用新獲得的IP地址替換169.254.0.0/16網(wǎng)段的IP地址。
R2收到DHCP Offer報(bào)文后,發(fā)送DHCP Request租約選擇報(bào)文到服務(wù)器,表示它將使用所提供的IP地址。如圖5所示,該數(shù)據(jù)包的源MAC地址是R2的MAC地址,目的MAC地址是廣播地址,因?yàn)榭蛻舳艘ㄖW(wǎng)絡(luò)上的其他DHCP服務(wù)器該地址已使用,以避免IP地址沖突。源IP地址是“0.0.0.0”,目的IP地址是“255.255.255.255”。DHCP使用的是UDP協(xié)議,源端口是68,目的端口是67;DHCP Request包含了DHCP服務(wù)器和客戶端要使用的IP地址;該數(shù)據(jù)包的用途是DHCP Request。
R1收到DHCP租約選擇信息后,發(fā)送DHCP Ack確認(rèn)信息,以確定此租約的 成立。如圖6所示,該數(shù)據(jù)包的源MAC地址是R1的MAC地址,目的MAC地址是廣播地址,因?yàn)镈HCP服務(wù)器要通知網(wǎng)絡(luò)上的其他DHCP服務(wù)器該地址已被使用,以避免IP地址沖突。源IP地址是R1的IP地址,目的IP地址是廣播地址,因?yàn)榇藭r(shí)客戶端仍沒有IP地址;DHCP使用的是UDP協(xié)議,源端口是67,目的端口是68.除了DHCP服務(wù)器地址、要提供的IP地址和客戶端的MAC地址外,DHCP Ack報(bào)文中還包含其他DHCP選項(xiàng)信息,比如子網(wǎng)掩碼、默認(rèn)網(wǎng)關(guān)、DNS服務(wù)器等。
客戶端收到DHCP Ack信息后,利用其中的信息配置它的TCP/IP屬性,并發(fā)送一個(gè)ARP Reply報(bào)文。該報(bào)文如圖7所示,源MAC地址為R2的MAC地址,目的MAC為廣播MAC地址,因?yàn)樗ㄖW(wǎng)絡(luò)上的其他設(shè)備該IP地址已被使用,以免IP地址沖突;ARP Reply包的源IP地址和目的IP地址都是192.168.0.5.
綜上所述,DHCP的工作過程如圖8所示,即IP租約請求—IP租約提供—IP租約選擇—IP租約確認(rèn)。
〔編輯:白潔〕
Router(config)#host R2
R2(config)#int fa0/0
R2(config-if)#ip address dhcp
注意:先不要打開R2的Fa0/0端口。
運(yùn)行Sniffer軟件,開始抓包。打開R2的Fa0/0端口。當(dāng)R2的屏幕出現(xiàn)以下所示的信息時(shí),停止Sniffer的包捕獲。
R2(config)#int fa0/0
R2(config-if)#ip address dhcp
R2(config-if)#
R2(config-if)#no sh
R2(config-if)#
*Mar 22 13:21:59.555: %LINK-3-UPDOWN: Interface FastEthernet0/0,changed state to up
*Mar 22 13:21:59.555: %ENTITY_ALARM-6-INFO: CLEAR INFO Fa0/0 Physical Port Administrative State Down
*Mar 22 13:22:00.555: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up
*Mar 22 13:22:09.267: %DHCP-6-ADDRESS_ASSIGN: Interface FastEthernet0/0 assigned DHCP address 192.168.0.5,mask 255.255.255.0,hostname R2
Sniffer捕獲的包如圖2所示。這里捕獲的包保存在sniffer-dhcp.cap文件中,如果計(jì)算機(jī)上還有其他的應(yīng)用程序包,可能會(huì)夾雜其他的數(shù)據(jù)包,但圖中顯示的數(shù)據(jù)包應(yīng)該都在。
3.2 分析包
當(dāng)DHCP客戶端登錄進(jìn)入網(wǎng)絡(luò)時(shí),通過以下步驟獲取IP地址。
DHCP客戶端(R2)先發(fā)送DHCP Discover信息。如圖2所示,該數(shù)據(jù)包的源MAC地址是“ca08.0974.0000”,即路由器R2 Fa0/0端口的MAC,目的MAC地址是“FFFFFFFFFFFF”,廣播MAC地址,因?yàn)榭蛻舳爽F(xiàn)在還并不知道DHCP服務(wù)器的MAC地址;源IP地址是“0.0.0.0”,因?yàn)槁酚善鱎2現(xiàn)在還沒有IP地址,目的IP地址是“255.255.255.255”,因?yàn)榭蛻舳爽F(xiàn)在還并不知道DHCP服務(wù)器的IP地址;DHCP使用的是UDP協(xié)議,客戶端的端口號(hào)是68,服務(wù)器端的端口號(hào)是67;數(shù)據(jù)包的用途是“DHCP Discover”。
R1(DHCP服務(wù)器)收到R2(DHCP客戶端)廣播的DHCP Discover報(bào)文后,它發(fā)現(xiàn)DHCP地址池中的IP地址“192.168.0.5”可以被租用。R1在提供地址前,先要發(fā)送一個(gè)ARP查詢包,查詢該地址是否已被使用,如果收到ARP應(yīng)答包,則表明該地址已被使用,R1會(huì)從地址池中換一個(gè)地址再試;如果沒有收到ARP應(yīng)答,表明該地址未被使用。如圖3所示,ARP查詢包也是一個(gè)廣播包,源MAC地址“cc07.0974.0000”,即R1的Fa0/0端口的MAC地址,目的MAC地址是廣播地址,因?yàn)橐蛉W(wǎng)查詢;源IP地址是192.168.0.1,目的IP地址是192.168.0.5.
R1向R2發(fā)送DHCP Offer報(bào)文,其中包括要租用的IP地址。如圖4所示,該數(shù)據(jù)包源MAC地址為“cc07.0974.0000”,即R1的Fa0/0端口的MAC地址,目的MAC地址是廣播MAC地址,因?yàn)镈HCP服務(wù)器要通知網(wǎng)絡(luò)上的其他DHCP服務(wù)器,該地址已被使用。源IP地址是R1的IP地址“192.168.0.1”,目的IP地址是廣播地址,因?yàn)榇藭r(shí)R2仍沒有IP地址。DHCP使用的是UDP協(xié)議,源端口變成了67,目的端口是68;DHCP Offer中包含了要分配客戶端的IP地址和客戶端的MAC地址;該數(shù)據(jù)包的用途是DHCP Offer。
如果沒有DHCP服務(wù)器對(duì)客戶端的請求進(jìn)行響應(yīng),則客戶端就無法獲得IP地址,初始化失敗。但客戶端會(huì)每隔一段時(shí)間發(fā)送幾個(gè)DHCP Discover報(bào)文,直到收到DHCP Offer。如果是Windows的客戶端,在多次嘗試失敗后,客戶端將被分配1個(gè)169.254.0.0/16網(wǎng)段的IP地址,但客戶端仍會(huì)繼續(xù)嘗試聯(lián)系DHCP服務(wù)器,一旦獲得DHCP Offer,客戶端便會(huì)使用新獲得的IP地址替換169.254.0.0/16網(wǎng)段的IP地址。
R2收到DHCP Offer報(bào)文后,發(fā)送DHCP Request租約選擇報(bào)文到服務(wù)器,表示它將使用所提供的IP地址。如圖5所示,該數(shù)據(jù)包的源MAC地址是R2的MAC地址,目的MAC地址是廣播地址,因?yàn)榭蛻舳艘ㄖW(wǎng)絡(luò)上的其他DHCP服務(wù)器該地址已使用,以避免IP地址沖突。源IP地址是“0.0.0.0”,目的IP地址是“255.255.255.255”。DHCP使用的是UDP協(xié)議,源端口是68,目的端口是67;DHCP Request包含了DHCP服務(wù)器和客戶端要使用的IP地址;該數(shù)據(jù)包的用途是DHCP Request。
R1收到DHCP租約選擇信息后,發(fā)送DHCP Ack確認(rèn)信息,以確定此租約的 成立。如圖6所示,該數(shù)據(jù)包的源MAC地址是R1的MAC地址,目的MAC地址是廣播地址,因?yàn)镈HCP服務(wù)器要通知網(wǎng)絡(luò)上的其他DHCP服務(wù)器該地址已被使用,以避免IP地址沖突。源IP地址是R1的IP地址,目的IP地址是廣播地址,因?yàn)榇藭r(shí)客戶端仍沒有IP地址;DHCP使用的是UDP協(xié)議,源端口是67,目的端口是68.除了DHCP服務(wù)器地址、要提供的IP地址和客戶端的MAC地址外,DHCP Ack報(bào)文中還包含其他DHCP選項(xiàng)信息,比如子網(wǎng)掩碼、默認(rèn)網(wǎng)關(guān)、DNS服務(wù)器等。
客戶端收到DHCP Ack信息后,利用其中的信息配置它的TCP/IP屬性,并發(fā)送一個(gè)ARP Reply報(bào)文。該報(bào)文如圖7所示,源MAC地址為R2的MAC地址,目的MAC為廣播MAC地址,因?yàn)樗ㄖW(wǎng)絡(luò)上的其他設(shè)備該IP地址已被使用,以免IP地址沖突;ARP Reply包的源IP地址和目的IP地址都是192.168.0.5.
綜上所述,DHCP的工作過程如圖8所示,即IP租約請求—IP租約提供—IP租約選擇—IP租約確認(rèn)。
〔編輯:白潔〕
Router(config)#host R2
R2(config)#int fa0/0
R2(config-if)#ip address dhcp
注意:先不要打開R2的Fa0/0端口。
運(yùn)行Sniffer軟件,開始抓包。打開R2的Fa0/0端口。當(dāng)R2的屏幕出現(xiàn)以下所示的信息時(shí),停止Sniffer的包捕獲。
R2(config)#int fa0/0
R2(config-if)#ip address dhcp
R2(config-if)#
R2(config-if)#no sh
R2(config-if)#
*Mar 22 13:21:59.555: %LINK-3-UPDOWN: Interface FastEthernet0/0,changed state to up
*Mar 22 13:21:59.555: %ENTITY_ALARM-6-INFO: CLEAR INFO Fa0/0 Physical Port Administrative State Down
*Mar 22 13:22:00.555: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up
*Mar 22 13:22:09.267: %DHCP-6-ADDRESS_ASSIGN: Interface FastEthernet0/0 assigned DHCP address 192.168.0.5,mask 255.255.255.0,hostname R2
Sniffer捕獲的包如圖2所示。這里捕獲的包保存在sniffer-dhcp.cap文件中,如果計(jì)算機(jī)上還有其他的應(yīng)用程序包,可能會(huì)夾雜其他的數(shù)據(jù)包,但圖中顯示的數(shù)據(jù)包應(yīng)該都在。
3.2 分析包
當(dāng)DHCP客戶端登錄進(jìn)入網(wǎng)絡(luò)時(shí),通過以下步驟獲取IP地址。
DHCP客戶端(R2)先發(fā)送DHCP Discover信息。如圖2所示,該數(shù)據(jù)包的源MAC地址是“ca08.0974.0000”,即路由器R2 Fa0/0端口的MAC,目的MAC地址是“FFFFFFFFFFFF”,廣播MAC地址,因?yàn)榭蛻舳爽F(xiàn)在還并不知道DHCP服務(wù)器的MAC地址;源IP地址是“0.0.0.0”,因?yàn)槁酚善鱎2現(xiàn)在還沒有IP地址,目的IP地址是“255.255.255.255”,因?yàn)榭蛻舳爽F(xiàn)在還并不知道DHCP服務(wù)器的IP地址;DHCP使用的是UDP協(xié)議,客戶端的端口號(hào)是68,服務(wù)器端的端口號(hào)是67;數(shù)據(jù)包的用途是“DHCP Discover”。
R1(DHCP服務(wù)器)收到R2(DHCP客戶端)廣播的DHCP Discover報(bào)文后,它發(fā)現(xiàn)DHCP地址池中的IP地址“192.168.0.5”可以被租用。R1在提供地址前,先要發(fā)送一個(gè)ARP查詢包,查詢該地址是否已被使用,如果收到ARP應(yīng)答包,則表明該地址已被使用,R1會(huì)從地址池中換一個(gè)地址再試;如果沒有收到ARP應(yīng)答,表明該地址未被使用。如圖3所示,ARP查詢包也是一個(gè)廣播包,源MAC地址“cc07.0974.0000”,即R1的Fa0/0端口的MAC地址,目的MAC地址是廣播地址,因?yàn)橐蛉W(wǎng)查詢;源IP地址是192.168.0.1,目的IP地址是192.168.0.5.
R1向R2發(fā)送DHCP Offer報(bào)文,其中包括要租用的IP地址。如圖4所示,該數(shù)據(jù)包源MAC地址為“cc07.0974.0000”,即R1的Fa0/0端口的MAC地址,目的MAC地址是廣播MAC地址,因?yàn)镈HCP服務(wù)器要通知網(wǎng)絡(luò)上的其他DHCP服務(wù)器,該地址已被使用。源IP地址是R1的IP地址“192.168.0.1”,目的IP地址是廣播地址,因?yàn)榇藭r(shí)R2仍沒有IP地址。DHCP使用的是UDP協(xié)議,源端口變成了67,目的端口是68;DHCP Offer中包含了要分配客戶端的IP地址和客戶端的MAC地址;該數(shù)據(jù)包的用途是DHCP Offer。
如果沒有DHCP服務(wù)器對(duì)客戶端的請求進(jìn)行響應(yīng),則客戶端就無法獲得IP地址,初始化失敗。但客戶端會(huì)每隔一段時(shí)間發(fā)送幾個(gè)DHCP Discover報(bào)文,直到收到DHCP Offer。如果是Windows的客戶端,在多次嘗試失敗后,客戶端將被分配1個(gè)169.254.0.0/16網(wǎng)段的IP地址,但客戶端仍會(huì)繼續(xù)嘗試聯(lián)系DHCP服務(wù)器,一旦獲得DHCP Offer,客戶端便會(huì)使用新獲得的IP地址替換169.254.0.0/16網(wǎng)段的IP地址。
R2收到DHCP Offer報(bào)文后,發(fā)送DHCP Request租約選擇報(bào)文到服務(wù)器,表示它將使用所提供的IP地址。如圖5所示,該數(shù)據(jù)包的源MAC地址是R2的MAC地址,目的MAC地址是廣播地址,因?yàn)榭蛻舳艘ㄖW(wǎng)絡(luò)上的其他DHCP服務(wù)器該地址已使用,以避免IP地址沖突。源IP地址是“0.0.0.0”,目的IP地址是“255.255.255.255”。DHCP使用的是UDP協(xié)議,源端口是68,目的端口是67;DHCP Request包含了DHCP服務(wù)器和客戶端要使用的IP地址;該數(shù)據(jù)包的用途是DHCP Request。
R1收到DHCP租約選擇信息后,發(fā)送DHCP Ack確認(rèn)信息,以確定此租約的 成立。如圖6所示,該數(shù)據(jù)包的源MAC地址是R1的MAC地址,目的MAC地址是廣播地址,因?yàn)镈HCP服務(wù)器要通知網(wǎng)絡(luò)上的其他DHCP服務(wù)器該地址已被使用,以避免IP地址沖突。源IP地址是R1的IP地址,目的IP地址是廣播地址,因?yàn)榇藭r(shí)客戶端仍沒有IP地址;DHCP使用的是UDP協(xié)議,源端口是67,目的端口是68.除了DHCP服務(wù)器地址、要提供的IP地址和客戶端的MAC地址外,DHCP Ack報(bào)文中還包含其他DHCP選項(xiàng)信息,比如子網(wǎng)掩碼、默認(rèn)網(wǎng)關(guān)、DNS服務(wù)器等。
客戶端收到DHCP Ack信息后,利用其中的信息配置它的TCP/IP屬性,并發(fā)送一個(gè)ARP Reply報(bào)文。該報(bào)文如圖7所示,源MAC地址為R2的MAC地址,目的MAC為廣播MAC地址,因?yàn)樗ㄖW(wǎng)絡(luò)上的其他設(shè)備該IP地址已被使用,以免IP地址沖突;ARP Reply包的源IP地址和目的IP地址都是192.168.0.5.
綜上所述,DHCP的工作過程如圖8所示,即IP租約請求—IP租約提供—IP租約選擇—IP租約確認(rèn)。
〔編輯:白潔〕