




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、DHCP協議講解華 為 技 術 有 限 公 司版權所有 侵權必究 目 錄第1章 DHCP協議基礎知識11.1 DHCP協議概述11.1.1 IP網絡主機配置方法概述11.1.2 DHCP協議主機配置的優缺點2第2章 協議的報文格式42.1 DHCP協議的封裝42.2 DHCP協議的報文格式52.3 DHCP協議報文的種類9第3章 DHCP協議的實現過程103.1 DHCP CLIENT的行為103.2 DHCP SERVER的行為113.3 DHCP RELAY的行為123.4 DHCP交互過程13第4章 DHCP在具體組網中的應用實例174.1 DHCP在MA5200中的應用174.1.1
2、組網說明及數據規劃174.1.2 結合抓報所得數據分析DHCP協議實現原理184.2 寬帶產品相關的數據配置244.2.1 ESR8850中與DHCP RELAY相關的數據配置244.2.2 S3526中與DHCP RELAY相關的數據配置24第5章 DHCP協議的發展方向26關鍵詞: BOOTP,DHCP,DHCP CLIENT,DHCP RELAY,DHCP SERVER摘 要:DHCP協議是目前應用比較廣泛的一個協議,詳細的了解該協議對于問題的處理是有好處的。本文是對IP網絡中的DHCP協議(動態主機配置協議)一個比較全面的培訓材料,詳細的介紹了DHCP協議的框架結構,報文格式和實現機理
3、,并結合在具體產品(MA5200)中的實現進行講解,適用于從事寬帶、數通的工程師作為學習性質的讀物。 在文章的最后,我們介紹了目前黑客對DHCP進行攻擊的常用手段及在ESR8850產品中相應的解決方法,并對DHCP協議的發展進行了一些展望??s略語清單:BOOTP:Bootstrap Protocol 引導程序協議 DHCP:Dynamic Host Configuration Protocol 動態主機配置協議DHCP CLIENT:DHCP 客戶端DHCP RELAY:DHCP 中繼 DHCP SERVER:DHCP服務器參考資料清單:DHCP協議相關RFC:RFC 951,RFC1541,
4、RFC1542數據通信協議研究管理部:DHCP協議培訓教材、DHCP協議說明書DHCP協議講解第5章 DHCP協議的發展方向第1章 DHCP協議基礎知識1.1 DHCP協議概述1.1.1 IP網絡主機配置方法概述IP網絡是目前乃至將來可能最有前途的網絡。正如同傳統的電話網中要為每個電話分配一個電話號碼以唯一標識這個電話一樣,在IP網絡中,每一臺終端要想與其他的終端進行通信,也需要為每一個接入終端分配一個唯一標識號,這就是IP網絡上的地址 IP地址。IP地址是IP網絡上唯一標識一個接入終端最原始和最有效的標識符。 給終端分配IP地址的方法有多種方式,如 PPP協議的自協商方式,用戶自己靜態配置,
5、管理員統一分配、配置等方式,但這些配置IP地址的方式都有著一些這樣或那樣的缺點。PPP自協商方式雖然不用用戶自己動手操作,但是需要安裝專門的客戶端軟件,而且需要服務器處事先配置好用戶的帳號和密碼,否則用戶無法上網,當然其優點是安全性高。 用戶自己靜態配置方式對于熟悉IP網絡的人來說是一件很簡單的事情,但對于普通用戶來說,可真是難以理解,而且還須提防IP地址沖突的情況。管理員統一分配、配置的方式,需要有專人維護,規劃整個網絡,不僅成本高,而且管理員工作量太大。更重要的是許多終端啟動時不僅需要IP地址,而且還需要動態的獲取更多的啟動配置信息,如無盤工作站,CABLE MODEM就需要獲得啟動配置文
6、件名和TFTP SERVER 的IP地址等信息,其他一些特殊終端還需要獲取其他一些特殊的信息,如EPHONE 需要CALL SERVER的IP地址,IDT需要控制服務器的IP地址等。這些動態信息是前面幾種主機配置方式所無法完成的。正是基于這些要求,新的主機配置方式應運而生,最早的主機配置方式就是BOOTP協議(即引導程序協議),它是一種較老的系統引導協議,主要用于無盤工作站啟動時從服務器上獲取IP地址和啟動文件名,多與TFTP協議配合使用,后來為了功能的擴展,又發展了DHCP 協議,但DHCP 協議兼容BOOTP協議。BOOTP和RARP類似,是用于相對靜態的環境,其中每個主機都有一個永久的網
7、絡連接。管理人員創建一個BOOTP配置文件來定義每個主機的BOOTP參數。在計算機經常移動和實際計算機數目超過了可獲得的IP主機地址時,這種只提供從主機標識到主機參數的靜態映射就不適用了。DHCP從兩個方式上擴充了BOOTP:第一,DHCP可使計算機用一個消息獲取它所需要的所有配置信息,即傳送配置信息的協議;第二,DHCP允許計算機快速、動態的獲取IP地址,即動態分配IP地址的機制。DHCP支持三種類型的地址分配:自動分配方式中DHCP給主機指定一個永久的IP地址;動態分配方式中DHCP給主機指定一個有時間限制的IP地址,到時間或主機明確表示放棄這個地址時,這個地址可以被其他的主機使用;手工分
8、配方式中主機的IP地址是由網絡管理員指定的,DHCP只是把指定的IP地址告訴主機。在這三種方式中,只有動態分配的方式可以對已經分配給主機但現在此主機已經不用的IP地址重新加以利用。這樣,在給一臺臨時連入網絡的主機分配地址或者在一組不需要永久的IP地址的主機中共享一組有限的IP地址時,動態分配顯得特別有用。當一臺新主機要永久的接入一個網絡時,而網絡的IP地址非常有限,為了將來這臺主機被淘汰時能回收IP地址,這種情況下動態分配也是一個很好的選擇。1.1.2 DHCP協議主機配置的優缺點1、DHCP協議主機配置方式最重要的特征就是整個配置過程自動實現,而且所有配置信息在一個地方集中控制,這就是DHC
9、P SERVER的作用。2、很明顯,DHCP協議采用CLIENT-SERVER方式實現,而且DHCP 協議是基于UDP層之上的應用,DHCP CLIENT將采用知名端口號68,DHCP SERVER采用知名端口號67進行交互。3、最初的BOOTP/DHCP協議是在同一個物理子網中使用廣播方式實現的,無法穿越路由器擴展到不同的物理子網中,也就是要使用DHCP協議的每一個網絡中必須配置一臺DHCP 服務器,為了克服這一缺陷,采用了DHCP RELAY的方式使得BOOTP/DHCP協議能夠穿越路由器實現。4、BOOTP協議主要用于一些較簡單的終端設備,如無盤工作站等,通過BOOTP獲取的信息也就相對
10、較少,但它的CLIENT-SERVER間的交互過程比較簡單。DHCP協議功能較全面,可以獲取的信息也較多,但CLIENT-SERVER間的交互過程比較復雜。下面將會詳細講解。5、DHCP協議一般采用終端的硬件地址(如果是以太網,就是我們常說的MAC地址)來唯一標識一個終端設備。6、DHCP協議通過設置IP地址使用租期,可以達到IP地址的分時復用效果,解決IP地址資源短缺的問題。7、DHCP協議基本上是一個單向驅動協議,SERVER完全是被動的,其動作、行為基本完全由CLIENT的請求行為而激發,即SERVER端無法主動控制CLIENT端。因此其交互性和安全性就沒有PPP協議那么完善,這是DHC
11、P協議的致命缺點。3第2章 協議的報文格式2.1 DHCP協議的封裝DHCP 協議是基于UDP層之上的應用,DHCP CLIENT將采用知名端口號68,DHCP SERVER采用知名端口號67。其報文內容的封裝如圖1所示 鏈路層頭IP頭UDP頭DHCP報文 圖1 DHCP報文封裝格式其中:鏈路層頭:承載報文的鏈路層信息頭,常見的有Ethernet_II格式、802.1Q格式、 IEEE802.3格式、令牌環鏈路層頭格式等。IP頭:標準的IP協議頭,IPV4中長度為20bytes,包括了SrcIp,DstIp等信息。UDP頭:8bytes,包括了SrcPort,DstPort,報文長度及UDP校
12、驗和等信息。DHCP報文:具體的DHCP報文內容。由于DHCP協議是初始化協議,更簡單的說,就是讓終端獲取IP 地址的協議,既然終端連IP地址都沒有,何以能夠發出IP報文呢?SERVER給CLIENT回送的報文該怎么封裝呢?正是為了說明這個問題,上面才會介紹DHCP報文的封裝格式。為了解決這個問題,DHCP報文的封裝采取了如下措施:1、首先鏈路層的封裝必須是廣播形式,即讓在同一物理子網中的所有主機都能夠收到這個報文。在Ethernet_II格式的網絡中,就是DstMac為全1。2、由于終端沒有IP地址,IP頭中的SrcIp規定填為全0。3、當終端發出DHCP請求報文,它并不知道DHCP SER
13、VER的IP地址,因此IP頭中的DstIp填為有限的子網廣播IP全1,以保證DHCP SERVER的IP協議棧不丟棄這個報文。4、上面的措施保證了DHCP SERVER能夠收到終端的請求報文,但僅憑鏈路層和IP層信息,DHCP SERVER無法區分出DHCP報文,因此終端發出的DHCP請求報文的UDP層中的SrcPort 為68,DstPort為67。即DHCP SERVER通過知名端口號67來判斷一個報文是否是DHCP報文5、DHCP SERVER給終端的響應報文將會根據DHCP報文中的內容決定是廣播還是單播,一般都是廣播形式。廣播封裝時,鏈路層的封裝必須是廣播形式,在Ethernet_II
14、格式的網絡中,就是DstMac為全1,IP頭中的DstIp 填為有限的子網廣播IP全1。單播封裝時,鏈路層的封裝是單播形式,在Ethernet_II格式的網絡中,就是DstMac為終端的網卡MAC地址(此MAC地址存在于DHCP報文中)。 IP頭中的DstIp 填為有限的子網廣播IP全1或者是即將分配給用戶的IP地址(當終端能夠接收這樣的IP報文時)。兩種封裝方式中的UDP層都是相同的,SrcPort 為67,DstPort為68。終端通過知名端口號68來判斷一個報文是否是DHCP SERVER的響應報文。2.2 DHCP協議的報文格式DHCP使用BOOTP的報文格式,但修改了一些字段的內容和
15、含義。DHCP報文格式如圖2所示: 圖2 DHCP協議的報文格式 下面詳細介紹DHCP報文內容:“op”字段:表示當前報文是client的請求還是server的應答,為1時表示是client的請求,為2時表示是server的應答。“htype”,“hlen”字段:分別表示client 的網絡硬件地址類型、長度,如“htype”為1,表示client 的網絡硬件是10MB的以太網類型,“hlen”為6,表示client 的網絡硬件地址長度是6bytes(即以太網類型的6bytes的MAC地址)“跳數”字段:表示當前的DHCP報文經過的DHCP RELAY的數目,類似于IP頭中的跳數字段,但含義完
16、全不同,client或server發出DHCP報文時,此字都初始化為0,每經過一個DHCP RELAY,此字段就會加1,此字段的作用是限制DHCP報文不要經過太多的DHCP RELAY,協議規定,當“hops”大于4(現在也有規定為16)時,這個DHCP報文就不能再進行處理,而是丟棄?!笆聞誌D"字段:client每次發送DHCP請求報文時選擇的隨機數,用來匹配server的響應報文是對哪個請求報文的響應。client會丟棄“xid”不匹配的響應報文。“秒數”字段:用來表示client開始DHCP請求后的時間流逝秒數,此字段一般沒有多大意義,最初設計此字段是為了讓DHCP SERVE
17、R在繁忙時,優先處理此字段大的DHCP請求(因為此字段越大說明這個client等的時間就越長)“標志”字段:在 BOOTP中此字段是保留不用的,在DHCP協議中也只使用了其左邊的最高位,其格式如圖3所示: 圖3 DHCP報文中“flags”字段格式 整個字段占16比特,其中,最左邊比特被解釋為廣播響應標識位,所有其它比特保留備用,必須被client設置為0,server和DHCP RELAY忽略這些比特。當client不能接收單播的DHCP響應報文時,必須把廣播響應標識位置1,否則置0。而DHCP SERVER在回響應報文時是廣播還是單播,就將根據此廣播響應標識位是否置位來判斷,目前的clie
18、nt如WINDOWS 98 一般都能接收單播DHCP響應報文?!翱蛻魴CIP地址”字段:表示client自己的IP地址。可以是server分配給client的IP地址,也可以是client已有的IP地址。此字段不為0的原則就是client能夠使用此IP地址接收IP報文。DHCP SERVER發現此字段不為0時,可以直接將響應報文單播給client?!澳愕腎P地址”字段:表示server分配給client的IP地址。當DHCP SERVER響應client的DHCP請求時,將把分配給client的IP地址填入此字段?!胺掌鱅P地址”字段:表示client 獲取啟動配置信息的服務器IP地址,一般是
19、TFTP SERVER 的IP地址?!爸欣^代理IP地址”字段:記錄第一個DHCP RELAY agent的IP地址。當client發出DHCP請求報文后,如果網絡中存在DHCP RELAY,則第一個DHCP RELAY轉發這個DHCP請求報文時,就會把自己的IP地址填入此字段(隨后的DHCP RELAY將不再改寫此字段,只是把“hops”加1)。DHCP 將會根據此字段為用戶分配IP地址,并把響應報文轉發給此DHCP RELAY agent,由DHCP RELAY agent再轉發給client?!翱蛻魴C硬件地址”字段:記錄client的實際硬件地址內容。當client發出DHCP請求報文時,
20、將把自己的網卡硬件地址填入此字段,DHCP SERVER一般都會使用此字段來唯一標識一個client。而且此字段與前面的“htype”“hlen”字段必須一致。如當“htype”“hlen”分別為1和6時,此字段必須填入6bytes的以太網MAC地址?!爸欣^代理IP地址”是DHCP RELAY 的IP地址;“htype”、“hlen”、“客戶機硬件地址”字段分別說明了client 的硬件地址類型、長度和地址內容。“服務器的主機名”字段:記錄client 獲取啟動配置信息的服務器名字。此字段由DHCP SERVER填寫,而且是可選的,如果填寫,必須是一個以0結尾的字符串?!皢游募弊侄危河涗?/p>
21、client 的啟動配置文件名。 此字段由DHCP SERVER填寫,而且是可選的,如果填寫,必須是一個以0結尾的字符串?!斑x項”字段:對于BOOTP,又稱之為“vendor”字段。 此字段中包含了大量可選的終端初始配置信息和網絡配置信息,如決定終端的IP特性配置信息,域名信息,標識終端的特殊信息,終端的默認網關IP地址,DNS 服務器的IP地址,WINS 服務器的IP地址,用戶使用IP地址的有效租期等等信息。正是因為有了此字段,DHCP協議才能夠給client提供大量的配置信息,此字段采用“CLV”方式構成,即Code:標識號,唯一標識后面的信息內容,占1bytes;length:長度,表示
22、后面信息內容的長度,占1bytes; value:信息內容,其長度為 length 所指定,以bytes為單位。選項字段是可選字段,它是變長的,其中對于我們最重要的一個選項是"server identifier",它標識了server 的IP地址,并把它帶給client。 如圖4所示: 圖 4 DHCP報文的“option”字段編碼方式當需要新的信息時,可以按照這種編碼方式申請新的選項即可,目前DHCP協議已經支持即成為標準的option已有近80項,具體內容可以參考RFC1541。由于選項不斷擴展,可以從最新的RFC中得到最新的選項集合。其中最常用的選項包括Dhcp me
23、ssage type, router Ip,DNS Ip, Wins Ip,client id, server id等選項。 Dhcp message type:code = 53, length = 1, value= 1-8,此字段表示DHCP報文類型;router Ip:code = 3, length = IP地址長度, value=client的默認網關的 IP地址;DNS Ip :code = 6, length = IP地址長度的倍數, value= client的DNS服務器的IP地址序列; Wins Ip :code = 44, length = IP地址長度的倍數, val
24、ue= client的WINS服務器的 IP地址序列; client id :code = 61, length = client的網絡硬件地址的長度2, value=“htype”+“hlen”+ client的網絡硬件地址;server id :code = 54, length = IP地址長度, value= DHCP SERVER的IP地址; 對于BOOTP協議,此字段為64bytes,對于DHCP協議,此字段為64-312 bytes,當client想要更長時,可以與DHCP SERVER協商。2.3 DHCP協議報文的種類DHCP協議采用CLIENT-SERVER方式進行交互,其
25、報文格式共有8種,由“選項”字段中的“Dhcp message type ”選項的value值來確定,后面括號中的值即為相應類型的值,具體含義如下:1:DHCPDISCOVER(0x01),此為client開始DHCP過程的第一個報文2:DHCPOFFER(0x02),此為server對DHCPDISCOVER報文的響應3:DHCPREQUEST(0x03),此報文是client開始DHCP過程中對server的DHCPOFFER報文的回應,或者是client續延IP地址租期時發出的報文4:DHCPDECLINE(0x04),當client發現server分配給它的IP地址無法使用,如IP地址
26、沖突時,將發出此報文,通知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),c
27、lient已經獲得了IP地址,發送此報文,只是為了從DHCP SERVER處獲取其他的一些網絡配置信息,如route ip,DNS Ip等,這種報文的應用非常少見。既然DHCP兼容BOOTP,那么如何從報文中區分是DHCP還是BOOTP呢?前面說過,BOOTP協議比DHCP簡單,而且client,server間的交互過程也簡單:一個來回,兩個報文就完成了,而且也沒有IP地址續延的問題(因此采用BOOTP協議進行配置時,就必須一個終端一個IP地址的事先配置好,就沒有DHCP協議那么靈活了)。BOOTP沒有DHCP 那么多的報文類型,因此當發現在一個DHCP報文的“選項”字段中沒有“Dhcp me
28、ssage type ”選項時,那么這個報文就是BOOTP報文。所以可見,DHCP報文“選項”字段中的“Dhcp message type ”選項是個非常重要的參數。9第3章 DHCP協議的實現過程3.1 DHCP CLIENT的行為所有支持DHCP 協議并能夠發起DHCP過程的終端都稱之為DHCP CLIENT,包括普通PC機,各種特殊設備如CABLEMODEM,IDT等。DHCP CLIENT自己必須能夠發出DHCPDISCOVER.、DHCPREQUEST、DHCPDECLINE等報文 (DHCPINFORM報文也是DHCP CLIENT發出,但實際中很少見),并且必須能夠處理從服務器收
29、到的以下幾種報文:DHCPOFFER、DHCPACK和DHCPNAK。當DHCP CLIENT處于初始化狀態,即還沒有獲取IP地址的狀態時,DHCP CLIENT將會發出一個廣播的DHCPDISCOVER報文從而開始DHCP過程,其間與DHCP SERVER的交互過程下面詳述。DHCP CLIENT自己應該具備超時機制,當此次DHCP不成功時,再自動開始新的DHCP過程。而且DHCP CLIENT還要根據“xid”字段來檢查收到的DHCP 響應報文是否與自己發出的請求報文相匹配。一旦DHCP CLIENT獲得一個具有有限使用期限的IP地址后,它將自動維護一個定時器,在IP地址使用期限的50的時
30、刻,自動啟動單播續延IP地址租期的過程,如若續延成功,則使用租期相應向前延長,否則,在IP地址使用期限的87.5的時刻,自動啟動廣播續延IP地址租期的過程,如若續延成功,則使用租期相應向前延長,否則在IP地址使用期限到期時,DHCP CLIENT將不再使用此IP地址,而是開始新的DHCP過程再次申請IP地址。 圖5 DHCP CLIENT 行為圖當DHCP CLIENT曾經獲得過IP地址,然后重啟初始化時,DHCP CLIENT仍優先想使用以前的IP地址,此時,DHCP CLIENT會直接啟動廣播續延IP地址租期的過程,如若續延成功,則使用租期相應向前延長,否則開始新的DHCP過程再次申請IP
31、地址。 DHCP CLIENT的DHCP過程狀態圖如圖5所示。3.2 DHCP SERVER的行為DHCP CLIENT,DHCP SERVER的行為比較簡單,這只是僅從DHCP協議實現的角度來說的。因為在DHCP SERVER上必須提供給DHCP CLIENT分配IP地址和配置相關初始配置信息的功能,也就是通常所說的地址池管理功能,這又是個比較繁雜的工作,但是,這卻不是DHCP 協議本身的工作。除了上述的地址池管理功能外,DHCP Server的行為完全由DHCP客戶端來驅動,因此其行為相對簡單,只需根據收到的DHCP CLIENT的各種請求報文,相應的響應不同的DHCP 響應報文即可。當D
32、HCP SERVER收到DHCPDISCOVER報文后,會從地址池中分配一個空閑IP,并獲得DHCP CLIENT請求的參數,構造DHCPOFFER報文響應DHCP CLIENT;當DHCP SERVER收到DHCPREQUEST報文時,就會根據報文中記錄的DHCP CLIENT的硬件地址查找其地址分配表,如若找到,則響應DHCPACK報文,DHCP CLIENT成功獲得IP地址和配置信息,否則,響應DHCPNAK報文,DHCP CLIENT會自動重新開始DHCP過程;當DHCP SERVER收到DHCPRELEASE報文后,會解除這個IP地址與某個DHCP CLIENT的綁定,回收這個IP地
33、址重新分配;當DHCP SERVER收到DHCPDECLINE報文后,會禁用報文中“客戶機IP地址”字段的IP地址,不再分配這個IP地址。注意: DHCP SERVER應該把收到的請求報文中的“xid”字段原封不動地拷貝到響應報文的“xid”字段,否則DHCP CLIENT不會接受這個響應報文。DHCP SERVER是如何知道給DHCP CLIENT分配哪個網段的IP地址呢?DHCP SERVER收到DHCP請求報文后,將會首先查看“中繼代理IP地址”字段是否為0 ,如果不為0,則就會根據此IP地址所在網段從相應地址池中為CLIENT分配IP地址,并且把響應報文直接單播給這個“中繼代理IP地址
34、”指定的IP地址,就是DHCP RELAY AGENT,而且UDP的目的端口號填為67,而不是68,如果為0,則DHCP SERVER認為CLIENT與自己在同一子網中,將會根據自己的IP地址所在網段從相應地址池中為CLIENT分配IP地址。3.3 DHCP RELAY的行為由于DHCP報文都采用廣播方式,是無法穿越多個子網的,當要想DHCP報文穿越多個子網時,就要有DHCP RELAY的存在。DHCP RELAY可以是路由器,也可以是一臺主機,總之,在具有DHCP RELAY功能的設備中,所有具有UDP目的端口號是67的局部傳遞的UDP信息,都被認為是要經過特殊處理的,所以,DHCP REL
35、AY要監聽UDP目的端口號為67的所有報文。當DHCP RELAY收到一個這樣的報文時,會首先判斷是否是用戶的請求報文,如果是用戶的請求報文,它會先查看“跳數”字段的值,如果該值超過了16,這個報文會被丟棄,目前一般“跳數”字段的缺省值被設置為4,即如果“跳數”的值大于4,就將用戶的請求報文丟棄。如果“跳數”字段的值在規定范圍之內,并且DHCP RELAY決定傳播該報文,它必須檢查“中繼代理IP地址”字段的值,如果這個字段的值為0,則DHCP RELAY就會將接受到請求報文的端口的IP地址填入此字段,如果該端口有多個IP地址,DHCP RELAY會挑選其中的一個并持續用它傳播全部的DHCP報文
36、;如果這個字段的值不是0,則這個字段的值不能被修改,也不能被填充為廣播地址。在這兩種情況下,報文都將被單播到新的目的地(或DHCP SERVER),當然這個目的地(或DHCP SERVER)是可以配置的,以實現DHCP報文穿越多個子網的目的。當DHCP RELAY發現這是DHCP SERVER的響應報文時,它也應當檢查“中繼代理IP地址”字段、“你的IP地址”字段和“客戶機硬件地址”字段等,這些字段給DHCP RELAY提供了足夠的信息將響應報文傳送給客戶機?!爸欣^代理IP地址”字段的值(非0)常常被用來標示一個用來傳播響應報文的邏輯端口,如果這個值不能匹配任何一個與DHCP RELAY直連的
37、邏輯端口,則這個響應報文將被丟棄。同樣DHCP RELAY也會檢查“標志”字段中的廣播標志位的值,如果為1,將廣播封裝好的報文,否則單播封裝好報文后,傳送給DHCP CLIENT,標準的DHCP RELAY的功能相對來說也比較簡單,只是重新封裝、續傳DHCP報文。下面的圖6很好的標示出了對于不同的請求報文,其相應的響應報文的方式。 圖6 不同的請求報文多對應的響應報文方式其中: B表示廣播的標志位 X表示并不關心相應的字段取什么值 normal表示從給定的IP地址進行正常的IP路由轉發或用ARP轉發3.4 DHCP交互過程標準的DHCP server 和client的交互過程如圖7所示: 圖7
38、 DHCP交互過程時序圖 下面首先講解DHCP SERVER與CLIENT的標準交互過程:1、CLIENT首先發出廣播的DHCPDISCOVER報文,廣播的目的是讓DHCP SERVER能夠收到這個請求報文。在這個報文中,CLIENT可以在“選項”字段中加入“request paramter list”選項,表明自己想要獲得的各種參數,而且四個IP地址字段都必須為0。2、由于DHCPDISCOVER報文是廣播,那么所有的DHCP SERVER都能夠收到,所有的DHCP SERVER都會響應一個DHCPOFFER報文,其中“你的IP地址”字段就是DHCP SERVER能夠提供給CLIENT使用的
39、IP地址,而且DHCP SERVER會把自己的IP地址放在“選項”字段中以便CLIENT區分不同的DHCP SERVER,發出此報文后,在DHCP SERVER上就會存在一個已分配IP地址的記錄。3、CLIENT能夠收到所有的DHCPOFFER報文,但CLIEN只能處理其中的一個,一般的原則是CLIENT接收、處理最先收到的那個DHCPOFFER報文。CLIENT會再發出一個廣播的DHCPREQUEST報文,在“選項”字段中會加入選中的DHCP SERVER的IP地址和用戶想要的IP地址,之所以廣播是因為要通知所有的DHCP SERVER進行相應的處理。4、DHCP SERVER收到DHCPR
40、EQUEST報文,判斷“選項”字段中的DHCP SERVER的IP地址是否與自己的地址相同,不相同,則不做任何處理,如果自己發出過DHCPOFFER報文,則清除相應IP地址記錄;當“選項”字段中的DHCP SERVER的IP地址是與自己的IP地址相同時,DHCP SERVER就會響應一個DHCPACK報文,其內容同DHCPOFFER類似,并在“選項”字段中增加了IP地址使用租期選項。5、CLIENT收到DHCPACK報文后(經過上面的處理后,有且只有一個DHCPACK報文),會檢查DHCP SERVER分配給自己的IP地址是否能夠使用,如在以太網類型的網絡中,CLIENT會發出免費的ARP請求
41、來確定DHCP SERVER分配的IP地址是否已經被別人使用,如果可以使用,則CLIENT成功獲得IP地址,并根據IP地址使用租期自動啟動續延過程。6、如果CLIENT發現DHCP SERVER分配的IP地址已經被別人使用,則CLIENT會發出DHCPDECLINE報文通知DHCP SERVER禁用這個IP地址以免引起IP地址沖突。然后CLIENT又開始新的DHCP過程,從第1步開始。7、當CLIENT成功獲取IP地址后,會根據IP地址使用租期自動啟動續延過程,在使用租期過去50時刻處,向DHCP SERVER發送單播DHCPREQUEST報文續延租期,如果成功即收到DHCP SERVER的D
42、HCPACK報文,則租期相應向前延長,如果失敗即沒有收到DHCPACK報文,則CLIENT繼續使用這個IP地址。在使用租期過去87.5時刻處,向DHCP SERVER發送廣播DHCPREQUEST報文續延租期,如果成功即收到DHCP SERVER的DHCPACK報文,則租期相應向前延長;如果失敗即沒有收到DHCPACK報文,則CLIENT繼續使用這個IP地址。在使用租期到期時,CLIENT應自動放棄使用這個IP地址,并開始新的DHCP過程,從第1步開始。8、CLIENT在成功獲取IP地址后,隨時可以通過發送DHCPRELEASE報文釋放自己的IP地址,DHCP SERVER收到DHCPRELE
43、ASE報文后,會回收相應的IP地址重新分配。當存在DHCP RELAY時,所有的DHCP報文都會經過DHCP RELAY進行轉發,整個DHCP交互過程同上面類型,只是在報文封裝時,稍有不同。由上面的敘述可以看出,DHCP SERVER的行為完全由CLIENT來驅動,DHCP SERVER無法控制CLIENT的行為。因此DHCP協議的安全性比較差。16第4章 DHCP在具體組網中的應用實例4.1 DHCP在MA5200中的應用 4.1.1 組網說明及數據規劃DHCP的實際應用,下面結合DHCP在MA5200上的應用來進行說明。在MA5200的動態VLAN接入業務中,用戶的IP地址都是通過DHCP
44、方式分配,并且用戶上網的起點就是進行DHCP過程。為了能夠對用戶進行合法性檢查和標識用戶,MA5200使用VLANID來標識用戶,MA5200接入板支持802.1Q協議,并采用基于端口的VLAN劃分方式來標識用戶。用戶通過支持802.1Q協議的二層交換機接入MA5200,二層交換機的每一個接入物理端口都會打上一個缺省的VLANID,即PVID,同一個接入物理端口下的所有用戶上網時發出的報文都會被二層交換機打上相同的VLANID,MA5200就通過VLANID來控制用戶的合法性。組網圖如下: 圖8 MA5200 VLAN業務組網圖由于VLANID是完全可信的,因此只要在MA5200上限制每個VL
45、ANID下能夠接入的用戶數目,就完全可以控制用戶的數目,不至于出現用戶大量發送非法DHCP報文造成DHCP SERVER地址池中地址耗盡的情況。對于用戶仿冒IP地址和MAC地址的情況,采用了IP-VLAN-MAC三者綁定的方式來唯一標識一個用戶,從而解決這個問題。MA5200上實現了內置或外接DHCP Server功能,將虛模板作為DHCP Relay的接口地址,由于有內置DHCP Server,所以我們一般采用內置的Server,內置DHCP Server的地址可以設置成自環地址或任意的接口地址。MA5200的數據規劃:DHCP Server:(Virtual-templa
46、te 1)/24IP Local Pool:00DNS: Primary-IP: Second-IP: 4.1.2 結合抓報所得數據分析DHCP協議實現原理用戶上網過程如下:1、 用戶開機后,發出DHCPDISCOVER報文; 圖9 用戶開機發出DHCPDiscover廣播報文客戶機在開始啟動的時候沒有地址(假定用戶上網的方式采用DHCP協議動態獲得地址),它就會發出一個DHCPDiscover報文,該報文是廣播報文,所有的具有DHCP Server功能的服務器都會收到該報文。在圖9中我
47、們可以看到該報文在鏈路層中發的確實是廣播報文,在圖10中我們要注意Transaction ID2585989945和DHCP Message Type一項中typeDiscover,前一項表示會話ID,即DHCP Server發回的響應報文中該結構的數值要與發出去的DHCP Discover中的該結構數值一樣,后一項說明DHCP報文類型為Discover類型報文。 圖10 客戶機發出DHCPDiscover報文的幀結構2、MA5200收到此報文后,根據VLANID,用戶的MAC地址來判斷用戶是否合法,若不合法,拒絕此用戶的請求,否則5200記錄用戶信息,續傳報文給內置的DHCP SERVER;
48、3、內置的DHCP SERVER回送DHCPOFFER報文,5200續傳給用戶;從DHCP Server回應的DHCPOffer報文中我們要注意以下幾項:OP Code=2,表示這是DHCP報文中的回應報文; Transaction ID2585989945,表示這個報文是與圖9中的DHCPDiscover報文相關的報文,因為二者標示一致;Client IP Address=,表示客戶機還沒有使用該地址;Your IP Address=表示DHCP Server分配給該客戶機的IP地址; DHCP Message Type一項中typeOffer表示這是一個D
49、HCPOffer報文,是對DHCPDiscover的回應報文;Subnet mask=表示這個地址的網段是一個標準的C類地址網段;Domain Name Server=和表示該用戶可以使用這兩個域名服務器;最主要的是DHCP Server ID一項:它標示了客戶機下一次發出DHCPRequest報文時,哪個DHCP Server會發出回應!詳細的請參見圖11。 圖11 DHCP Server回應的DHCPOffer報文的幀格式4、用戶發出DHCPREQUEST報文,5200續傳給內置的DHCP Server,我們主要注意
50、DHCP Message Type一項中typeRequest表示這是一個請求報文,見圖12; 圖12 DHCP Request報文的幀格式和相關參數 5、內置的DHCP SERVER回送DHCPACK報文,5200 把用戶的IP-VLAN-MAC信息綁定通知業務板用戶上線成功,并續傳報文給用戶,用戶獲得IP地址,我們主要注意DHCP Message Type一項中typeAck表示這是一個對DHCP Requset報文響應的應答報文,并且再一次強調了地址租期,見圖13。圖13 DHCP Server回應的DHCP Ack報文的幀格式和相關 6、用戶下網或IP地址的租約到期,客戶機會發出一個D
51、HCP Release報文,我們主要注意DHCP Message Type一項中typeRelease表示這是一個釋放IP地址的報文,它所對應的代碼值為0x07,見圖14。 圖14 客戶機釋放IP地址時的DHCP Release報文4.2 寬帶產品相關的數據配置4.2.1 ESR8850中與DHCP RELAY相關的數據配置ESR8850地址分配也分為內部分配和外掛DHCP SERVER分配兩種方式,內部分配是PPP方式協商獲得,外部分配是采用DHCP的方式,在此介紹外置方式,內置部分請參看開局指導書。從 標題可以看出,ESR8850實現的是DHCP RELAY的功能,至少目前并不提供內置的D
52、HCP SERVER,所以它的配置比較簡單,只要在相應的接口下配置DHCP SERVER的地址即可。1、配置DHCP RELAY(1)進入接口配置模式接口可以為FE、GE或VE,假設使用的VE2/0/0接口,則執行命令為:ISN8850(config)#interface virtual-ethernet 2/0/0(2)配置接口的DHCP服務器假設DHCP SERVER 的IP地址為17ISN8850(config-virtual-e2/0/0)#ip helper-address 174.2.2 S3526中與DHCP RELAY相關的數據配置S3526系列交換機實現的也是DHCP RELAY的功能,它可支持配置 20個 DHCP 服務器組,每個服務器組可以配置 2個 IP 地址,分別是主服務器地址和備份服務器地址,DHCP服務器組的設置可以讓不同的用戶群到不同的 DHCP服務器組申請 IP 地址,即可以讓某些 VLAN到一個服務器組申請 IP,另外一些 VLAN到另一個服務器組申請 IP 地址,這樣做可以滿足不同的需求,可以為某些特殊用戶提供單獨的DHCP服務,另外也可以使 DHCP服務器遭惡意攻擊引起的影響降到最小范圍。1、配置DHCP RELAY(1)配置 DHCP服
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 漢字找茬活動方案
- 水果小班活動方案
- 樓盤品茶活動方案
- 株洲風箏活動方案
- 歙縣三陽鎮活動方案
- 漢服比賽活動方案
- 母親節好歌傳唱活動方案
- 氣球裝飾公司活動方案
- 比基尼選秀活動方案
- 漢語課堂活動方案
- 冶金企業重大事故隱患判定檢查表
- 2023年藥學考試-中藥學(副高)考試高頻試題(歷年真題)帶答案
- 西北農林科技大學自主招生考試綜合素質測試面試試題答題技巧匯總
- 《導彈制導原理》
- 知行合一-王陽明傳奇課件
- 《綠色建筑概論》整套教學課件
- 2021年中國美術學院輔導員招聘考試題庫及答案解析
- 初中道德與法治學科教學經驗交流
- DB34-T 4289-2022城鎮檢查井蓋安裝管理技術規程
- 年產3萬噸硫酸鉀,1.8萬噸副產工業鹽項目建設可行性研究報告
- 貴州省建筑與裝飾工程計價定額(2023版)
評論
0/150
提交評論