华为数通笔记-DHCP
DHCP背景
隨著網絡規模的不斷擴大,網絡復雜度不斷提升,網絡中的終端設備例如主機、手機、平板等,位置經常變化。終端設備訪問網絡時需要配置IP地址、網關地址、DNS服務器地址等。采用手工方式為終端配置這些參數非常低效且不夠靈活。
IETF于1993年發布了DHCP(Dynamic Host Configuration Protocol,動態主機配置協議)。DHCP實現了網絡參數配置的自動化,降低客戶端的配置和維護成本。
本課程介紹DHCP工作原理、應用場景和簡單配置。
手工配置主機IP地址、網絡掩碼、網關地址、DNS服務器地址等網絡參數時,需要經過地址規劃、地址分配、地址配置、地址維護等復雜的操作流程。這使地址分配靈活性差,IP地址資源利用低,同時較大的工作量導致配置容易出錯,對人員素質要求較高。
?
DHCP的基本概念
DHCP是一種用于集中對用戶IP地址進行動態管理和配置的協議。
DHCP采用C/S(Client/Server,客戶端/服務器)通信模式,協議報文基于UDP的方式進行交互,采用67(DHCP服務器)和68(DHCP客戶端)兩個端口號:
- 正常工作時由客戶端向服務器提出配置申請。
- 服務器返回為客戶端分配的IP地址等相應的配置信息。
DHCP相對于手工配置有如下優點:
- 效率高
- 靈活性強
- 易于管理
網絡終端設備,例如主機、打印機、筆記本電腦、手機和AP,作為DHCP客戶端,向DHCP服務器請求分配相關網絡參數。DHCP服務器響應DHCP客戶端請求進行動態分配。
DHCP工作原理
DHCP客戶端首次接入網絡的工作原理
發現階段,即DHCP客戶端發現DHCP服務器的階段。
- DHCP客戶端發送DHCP DISCOVER報文來發現DHCP服務器。DHCP DISCOVER報文中攜帶了客戶端的MAC地址、需要請求的參數列表選項、廣播標志位等信息。
??? 2. 提供階段,即DHCP服務器提供網絡配置信息的階段。
- 服務器接收到DHCP DISCOVER報文后,選擇跟接收DHCP DISCOVER報文接口的IP地址處于同一網段的地址池,并且從中選擇一個可用的IP地址,然后通過DHCP OFFER報文發送給DHCP客戶端。
??? 3. 選擇階段,即DHCP客戶端選擇IP地址的階段。
- 如果有多個DHCP服務器向DHCP客戶端回應DHCP OFFER報文,則DHCP客戶端一般只接收第一個收到的DHCP OFFER報文,然后以廣播方式發送DHCP REQUEST報文,該報文中包含客戶端想選擇的DHCP服務器標識符和客戶端IP地址。
??? 4.確認階段,即DHCP服務器確認所分配IP地址的階段。
- DHCP客戶端收到DHCP ACK報文,會廣播發送免費ARP報文,探測本網段是否有其他終端使用服務器分配的IP地址。(檢測是否有沖突)
在確認階段,兩種情況可能出現IP地址的沖突:
- DHCP服務器收到DHCP DISCOVER報文時,給客戶端分配IP地址前會發送Ping探測,如果能Ping通則標識該地址不可用,并選擇其他IP地址分配給客戶端。
- DHCP客戶端獲取IP地址成功后,會立即發送免費ARP報文,如果收到響應,則發送DHCP DECLINE報文通知DHCP服務器該IP地址沖突,DHCP服務器標識該地址不可用,客戶端發送DHCP DISCOVER報文重新申請IP地址。
兩次檢測地址沖突,客戶端ARP免費報文,服務端ping探測
DHCP報文格式
重要字段說明:
- Op(op code):表示報文的類型,取值為1或2,含義如下:
- 1:客戶端請求報。
- 2:服務器響應報文。
- Secs(seconds):由客戶端填充,表示從客戶端開始獲得IP地址或IP地址續借后所使用了的秒數,缺省值為3600s。
- Flags:客戶端請求服務器發送響應報文的形式,只有最高位有意義,其余15位置0。最高位為0時請求發送單播響應,最高位為1時請求發送廣播響應。
- Yiaddr(your client ip address):表示服務器分配給客戶端的IP地址。當服務器進行DHCP響應時,將分配給客戶端的IP地址填入此字段。
- Siaddr(server ip address):DHCP服務器的IP地址。
- Chaddr(client hardware address):客戶端的MAC地址。
- Options:DHCP通過此字段包含了服務器分配給終端的配置信息。
- DHCP報文中Options字段為可變長度字段,最多為312Byte,此字段包含了DHCP報文類型,服務器分配給終端的配置信息,如網關IP地址,DNS服務器的IP地址,客戶端可以使用IP地址的有效租期等信息。
- Options字段由Type、Length和Value三部分組成。其中Type字段取值范圍1~255。常見的Options如下表所示:
?
Htype (hardware type): 表示硬件地址的類型。
Hlen(hardware length): 表示硬件地址的長度。
Hops(hops): 表示當前DHCP報文經過的DHCP Relay數目。該字段由客戶端設置為0,每經過一個DHCP Relay時,該字段加1。此字段的作用是限制DHCP報文所經過的DHCP Relay數目。
Xid:表示DHCP客戶端選取的隨機數,使DHCP服務器的回復與DHCP客戶端的報文相關聯。
Sname(server host name): 表示客戶端獲取配置信息的服務器名字。此字段由DHCP服務器填寫,是可選的。如果填寫,必須是一個以0結尾的字符串。
File(file name): 表示客戶端啟動DHCP相關配置的文件名。此字段由DHCP服務器填寫,隨著DHCP地址分配的同時下發至客戶端。本字段是可選的,如果填寫,必須是一個以0結尾的字符串。
DHCP的消息類型
DHCP報文通過Options選項中的Type=53來表示DHCP的報文類型。如下圖所示,當Type=53,Length=1,Value取值從01到08分別表示不同的DHCP報文類型。
1-DHCP DISCOVER:DHCP客戶端首次登錄網絡時進行DHCP交互過程發送的第一個消息,用來尋找DHCP服務器。
2-DHCP OFFER:DHCP服務器用來響應DHCP DISCOVER消息,此消息攜帶了各種配置信息。???
3-DHCP REQUEST:DHCP客戶端廣播請求回應DHCP服務器OFFER消息;DHCP客戶端重啟廣播確認之前的IP地址等配置信息;續租。
4-DHCP DECLINE:當客戶端發現服務器分配給它的IP地址發生沖突時會通過發送此消息來通知服務器。
5-DHCP ACK:DHCP服務器對客戶端的DHCP REQUEST消息的確認響應消息。
6-DHCP NAK:服務器對客戶端的DHCP REQUEST消息的拒絕響應消息。
7-DHCP RELEASE:客戶端可通過發送此消息主動釋放服務器分配給它的IP地址。
8-DHCP INFORM:DHCP客戶端獲取IP地址后,如果需要向DHCP服務器獲取更為詳細的配置信息(網關地址、DNS服務器地址),則向DHCP服務器發送DHCP INFORM請求消息。
?
Options自定義選項字段介紹
除了標準協議中規定的字段選項外,還有部分選項內容沒有統一規定,統稱為用戶自定義選項,例如Option 82和Option 43。
- Option 82稱為中繼代理信息選項。
- Option 82中可以包含最多255個Sub-Option,若定義了Option 82,至少要定義一個Sub-Option。
- DHCP中繼或DHCP Snooping設備接收到DHCP客戶端發送給DHCP服務器的請求報文后,在該報文中添加Option 82,并轉發給DHCP服務器。管理員可以從Option 82中獲得DHCP客戶端的信息,例如DHCP客戶端所連接交換機端口的VLAN ID、二層端口號、中繼設備的MAC地址等。
- Option 43稱為廠商特定信息選項。
- DHCP服務器和DHCP客戶端通過Option 43交換廠商特定的信息。當DHCP服務器接收到請求Option 43信息的DHCP請求報文(Option 55中帶有Option 43參數)后,將在回復報文中攜帶Option 43,為DHCP客戶端分配廠商指定的信息。
- 在WLAN組網中,AP作為DHCP客戶端,DHCP服務器可以為AP指定AC的IP地址,以方便AP與AC建立連接。
目前option 82中常用的Sub-Option如下:
- Sub-Option 1:為代理鏈路id(即circuit id)子項。子選項通常在DHCP中繼設備上配置,定義了在傳輸報文的時候要攜帶DHCP客戶端所連接交換機端口的vlan-id及二層端口號。通常Sub-Option 1與Sub-Option 2子選項要共同使用來標識DHCP源端的信息。
- Sub-Option 2:代理遠程id(即remote?id)子項。該子選項也通常在DHCP中繼設備上配置,定義了在傳輸報文的時候要攜帶中繼設備的mac地址信息。
- 和Sub-Option 5:為鏈路選擇(link selection)子項,該選項中包含了DHCP中繼添加的ip地址。這樣DHCP server在分配ip地址給DHCP客戶端的時候就可以分配與該地址同網段的ip地址。
Option 43應用舉例
在WLAN三層組網中,當AP上線時,需要獲取AC的IP地址,并與AC之間建立CAPWAP隧道。
AP的IP地址通過DHCP服務器分配,當AC的IP地址與AP不在同一個廣播域,AP無法通過廣播的方式獲取AC的IP地址,則CAPWAP隧道無法建立成功。
AP通過DHCP報文中的Option 43選項字段獲取AC的IP地址,當AP獲取AC的IP地址后,可以進一步完成CAPWAP隧道的建立,從而實現AP上線。
DHCP地址續租
DHCP客戶端根據IP地址的剩余租期的不同而產生不同形式的續租請求。
當租期達到50%(T1)時,DHCP客戶端會自動以單播的方式向DHCP服務器發送DHCP REQUEST報文,請求更新IP地址租期。如果收到DHCP服務器回應的DHCP ACK報文,則租期更新成功。
當租期達到87.5%(T2)時,如果仍未收到DHCP服務器的應答,DHCP客戶端會自動以廣播的方式向DHCP服務器發送DHCP REQUEST報文,請求更新IP地址租期。如果收到DHCP服務器回應的DHCP ACK報文,則租期更新成功。
如果租期時間到時都沒有收到服務器的回應,客戶端停止使用此IP地址,重新發送DHCP DISCOVER報文請求新的IP地址。
?
DHCP服務器給每個分配給客戶端的IP地址定義一個使用期限,該使用期限被稱為租期。在租期到期前,DHCP客戶端如果仍需要使用該IP地址,可以請求延長租期;如果不需要,可以主動釋放該IP地址。在沒有其他空閑地址可用的情況下,DHCP服務器會把客戶端主動釋放的IP地址分配給其他客戶端。
DHCP客戶端無論在T1還是T2時刻發送DHCP REQUEST報文后,如果收到DHCP NAK報文,則重新發送DHCP DISCOVER報文請求新的IP地址。
客戶端在租期時間到之前,如果用戶不想使用分配的IP地址(例如客戶端網絡位置需要變更),會觸發DHCP客戶端向DHCP服務器發送DHCP RELEASE報文,通知DHCP服務器釋放IP地址的租期。DHCP服務器會保留這個DHCP客戶端的配置信息,將IP地址列為曾經分配過的IP地址中,以便后續重新分配給該客戶端或其他客戶端。客戶端可以通過發送DHCP INFORM報文向服務器請求更新配置信息。
思考:為什么每次電腦被分配的IP地址都是同一個呢?
DHCP客戶端重用曾經使用過的地址
DHCP客戶端非首次接入網絡時,可以重用曾經使用過的地址。例如,網絡中的主機作為DHCP客戶端,在關機再開機的過程中,需要重新獲取相關網絡參數,則可以請求分配曾經使用過的IP地址。
- 客戶端廣播發送包含前一次分配的IP地址的DHCP REQUEST報文,報文中的Option 50(請求的IP地址選項)字段填入曾經使用過的IP地址。
- DHCP服務器收到DHCP REQUEST報文后,根據DHCP REQUEST報文中攜帶的MAC地址來查找有沒有相應的租約記錄。如果有則返回DHCP ACK報文,通知DHCP客戶端可以繼續使用這個IP地址,如果沒有租約記錄,則不響應。
DHCP分配IP地址順序
DHCP服務器按照如下次序為客戶端選擇IP地址:
- DHCP服務器的數據庫中與客戶端MAC地址靜態綁定的IP地址。
- 客戶端以前曾經使用過的IP地址,即客戶端發送的請求報文中請求IP地址選項的地址。
- 在DHCP地址池中,順序查找可供分配的空閑IP地址,最先找到的IP地址。
- 如果在DHCP地址池中未找到可供分配的空閑IP地址,則依次查詢超過租期、發生沖突的IP地址,如果找到可用的IP地址,則進行分配,否則報告錯誤。
?
DHCP Relay
隨著網絡規模的不斷擴大,網絡設備不斷增多,企業內不同的用戶可能分布在不同的網段,一臺DHCP服務器在正常情況下無法滿足多個網段的地址分配需求。如果還需要通過DHCP服務器分配IP地址,則需要跨網段發送DHCP報文。
DHCP Relay即DHCP中繼,它是為解決DHCP服務器和DHCP客戶端不在同一個廣播域而提出的,提供了對DHCP廣播報文的中繼轉發功能,能夠把DHCP客戶端的廣播報文“透明地”傳送到其它廣播域的DHCP服務器上,同樣也能夠把DHCP服務器端的應答報文“透明地”傳送到其它廣播域的DHCP客戶端。
DHCP Relay報文格式
DHCP Relay主要負責轉發DHCP客戶端與DHCP服務器之間的DHCP報文,所以DHCP Relay的報文格式只是把DHCP的報文部分字段做了相應的修改,報文格式沒有發生變化,如下圖所示:
Hops:表示當前的DHCP報文經過的DHCP中繼的數目。該字段由客戶端或服務器設置為0,每經過一個DHCP中繼時,該字段加1。
Giaddr(gateway ip address):表示第一個DHCP中繼的IP地址。當客戶端發出DHCP請求時,第一個DHCP中繼在將DHCP請求報文轉發給DHCP服務器時,會把自己的IP地址填入此字段。
Hops字段的作用是限制DHCP報文所經過的DHCP中繼數目。服務器和客戶端之間的DHCP中繼數目不能超過16個,也就是Hops值不能大于16,否則DHCP報文將被丟棄。
Giaddr字段,dhCP服務器會根據此字段來判斷出客戶端所在的網段地址,從而選擇合適的地址池,為客戶端分配該網段的IP地址。服務器還會根據此地址將響應報文發送給此DHCP中繼,再由DHCP中繼將此報文轉發給客戶端。若在到達DHCP服務器前經過了多個DHCP中繼,該字段作為客戶端所在的網段的標記,填充了第一個DHCP中繼的IP地址后不會再變更,只是每經過一個DHCP中繼,hops字段的數值會加1。
DHCP Relay工作原理
有中繼場景時DHCP客戶端首次接入網絡的工作原理:
發現階段:DHCP中繼接收到DHCP客戶端廣播發送的DHCP DISCOVER報文后,通過路由轉發將DHCP報文單播發送到DHCP服務器或下一跳中繼。
提供階段:DHCP服務器根據DHCP DISCOVER報文中的Giaddr字段選擇地址池為客戶端分配相關網絡參數,DHCP中繼收到DHCP OFFER報文后,以單播或組播方式發送給DHCP Client。
選擇階段:中繼接收到來自客戶端的DHCP REQUEST報文的處理過程同“發現階段”。
確認階段:中繼接收到來自服務器的DHCP ACK報文的處理過程同“提供階段”。
?
1.DHCP中繼收到DHCP DISCOVER報文后,處理規則為:
- 檢查DHCP報文中的Hops字段,如果大于16,則丟棄DHCP報文;否則,將Hops字段加1(表明經過一次DHCP中繼),并繼續下面的操作。
- 檢查DHCP報文中的Giaddr字段。如果是0,將Giaddr字段設置為接收DHCP DISCOVER報文的接口IP地址。如果不是0,則不修改該字段,繼續下面的操作。
- 將DHCP報文的目的IP地址(開始為廣播地址)改為DHCP服務器或下一跳中繼的IP地址,源地址改為中繼連接客戶端的接口地址,通過路由轉發將DHCP報文單播發送到DHCP服務器或下一跳中繼。
2.DHCP服務器接收到DHCP DISCOVER報文后,選擇與報文中Giaddr字段為同一網段的地址池,并為客戶端分配IP地址等參數,然后向Giaddr字段標識的DHCP中繼單播發送DHCP OFFER報文,DHCP中繼收到DHCP OFFER報文后,會進行如下處理:
- 檢查報文中的Giaddr字段,如果不是接口的地址,則丟棄該報文;否則,繼續下面的操作。
- DHCP中繼檢查報文的廣播標志位(flag)。如果廣播標志位為1,則將DHCP OFFER報文廣播發送給DHCP客戶端;否則將DHCP OFFER報文單播發送給DHCP客戶端。
DHCP配置
基于全局地址池配置
基于接口配置
?
dhcp中繼
DHCP Snooping
?
總結
以上是生活随笔為你收集整理的华为数通笔记-DHCP的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ug建模减速器_UG齿轮减速器建模方法
- 下一篇: eclipse jad 反编译class