DHCP(動態主機配置協議)協議用於向TCP/IP網絡中的互聯網主機提供配置信息。它是在BOOTP(BOOTP)的基礎上開發的,增加了重用網絡地址的自動分配能力和額外的配置選項,同時DHCP保留了BOOTP的中繼代理功能。
第2章:協議介紹
Dhcp(動態主機配置協議)協議是基於BOOTP協議的。
基於,其功能是向TCP/IP網絡中的Internet主機提供配置信息。
DHCP采用客戶端/服務器模式,客戶端向服務器申請配置(包括分配的IP地址,
子網掩碼、默認網關等參數),服務器根據策略返回相應的配置信息。
DHCP消息被UDP封裝為傳輸層協議。
DHCP 2部分:
1,DHCP中繼功能,將DHCP服務器指定的配置信息發送給主機;;
2.服務器功能,為主機分配網絡地址和其它配置參數。
DHCP IP分配方法:
1,自動分配,給首次連接網絡的部分主機分配壹個固定的IP地址。這個地址
會被這個主機長期使用。
2、動態分配,DHCP服務器為主機指定壹個IP地址,同時指定地址。
有租賃期限。如果租期到了,客戶必須重新申請地址。這是客戶。
最常見的申請地址的方法;
3.手動分配。網絡管理員為少數特定主機指定固定的IP地址。
DHCP指定地址的優先級分類:
1.IP地址靜態綁定到DHCP服務器地址池中客戶端的MAC地址。
2.客戶端使用的地址。當客戶端再次申請地址時,客戶端發送DHCP Discover。
消息,其地址選項將包含最後使用的IP地址,除非該IP地址被分配或該地址
執行了其他不可用的操作(例如,此IP地址被禁止等。),否則客戶端會重新制作。
使用這個地址。
3.客戶端在“請求的IP地址”選項中指定的IP地址(如果該地址在地址池中)。
,並且尚未分配,則將該地址分配給客戶端。
4.依次搜索DHCP地址池中可供分配的IP地址,最先找到的可用IP地址優先級高。
第3章:DHCP消息格式
消息中每個字段的含義
“選項”字段是壹個可變長度字段,DHCP客戶端必須能夠接收長度為312字節的消息。
“選項”域中的DHCP消息,即DHCP客戶端必須能夠接受長度至少為576字節的IP消息。
DHCP客戶端可以通過“最大DHCP消息大小”選項協商最大DHCP消息大小。
長度。
標誌格式:
b:最左邊的位,廣播標誌;;
MBZ:剩下的位是留作將來使用的。
第4章:DHCP消息構造和發送
DHCP使用UDP協議的端口號。
DHCP消息被UDP封裝為傳輸層協議。從客戶端到服務器的DHCP消息被發送到。
DHCP服務器的端口號是67,從服務器發送到客戶端再到DHCP客戶端的報文的端口號是68。
DHCP選項
DHCP消息需要包含壹系列選項,即選項列表。選項列表基於
壹個4字節的魔字開始,後面是壹系列選項,以壹個“end”選項結束。
客戶端ID
DHCP定義了壹個標識客戶端的選項,即“客戶端標識符”選項。客戶必須
選擇壹個可以在物理網絡中唯壹標識您自己的值,以填寫客戶端ID選項的值。壹旦
該值被初始化,並且不能在隨後的消息交互中被改變。建議使用客戶端的MAC地址作為客戶端ID。
價值。
服務器ID
DHCP定義了壹個標識服務器的選項,即“服務器標識符”選項。計算機網絡服務器
選擇您自己的IP地址作為服務器ID。如果壹個DHCP服務器有多個IP地址,它可以隨意選擇。
壹個用作服務器ID,但建議使用客戶端可以到達的IP地址。例如,當服務器和客戶端位於同壹個地方時。
當有網段時,最好選擇該網段的地址作為服務器ID。如果客戶端向服務器發送單播消息,目的地址將使用服務器ID值。
客戶端發送的消息的源IP地址。
在客戶端獲得IP地址之前,它發送的消息的源IP(指IP頭中的源IP字段)必須是
填寫0。
廣播標誌
標誌,1位用作廣播標誌,後面的15位保留,必須設置為0。
當軟件不能有效地配置其自身IP協議的IP地址時,客戶端可能無法處理接收到的單播。
文本,此時,客戶端在發送Discover和Request消息時必須將廣播標誌位置設置為1、Server或Relay。
當代理收到這樣的消息時,它必須向客戶端回復廣播消息。
如果客戶端可以處理廣播消息,它將廣播標誌位置0,服務器或中繼代理將接收到它。
發現和請求的消息,可以用單播消息回復,目的IP地址由服務器分配給。
客戶端的IP地址,即消息中yiaddr(您的IP地址)字段的值。當然是服務器或者中繼代理。
也可以通過廣播回復。
在服務器端處理ciaddr和giaddr字段
Ciaddr,客戶端IP地址,只有客戶端處於綁定、續訂和重新綁定狀態,並且
只有當它能夠響應ARP請求時才能被填充;
giaddr,中繼代理IP地址;
1.如果服務器收到的消息的giaddr字段不為0(即表示消息是通過中繼代理進行的。
轉發的消息),那麽它會以單播的方式回復,它的目的地址是giaddr字段的值;
2.如果服務器收到的消息的giaddr字段為0,ciaddr字段不為0(也就是說,意味著客戶端已經有效。
配置了自己的IP地址),那麽它會單播回復,目的地址是ciaddr word。
段的值;
3.如果服務器接收到的消息的giaddr字段為0,ciaddr字段為0,並且廣播標誌位不為0(也就是說
Ming客戶端還沒有配置自己的IP地址,此時還不能處理單播消息),那麽它將被廣泛使用。
通過廣播回復;
4.如果服務器收到的消息的giaddr字段為0,則ciaddr字段為0,廣播標誌位為0(即描述
盡管客戶端沒有配置自己的IP地址,但此時它可以處理單播消息),然後它將使用
單播回復(建議單播回復,當然也可以廣播回復)。
交易ID
Xid(事務id)是由客戶端選擇的隨機數,用於在服務器和客戶端之間交換消息。
這場比賽。
客戶端必須采用相應的算法,保證自己的xid值盡可能與其他客戶端的xid值不同。
也就是最小化相同的概率。
選項過載
在DHCP報頭中,sname和file字段都占用更多的字節,如果這兩個字段在壹條消息中
如果其中壹兩個不包含信息,空間就浪費了。為此,DHCP可以將選項內容擴展到sname和文件字。
在段落中。DHCP定義了壹個過載選項。如果有過載選項,告訴它。
接收方sname和file字段失去了它們原來的含義,代表選項。
消息類型
DHCP在消息類型選項中定義消息類型。
消息類型選項的格式如下:
選項代碼:長度為1字節,取值為53,表示報文類型選項;;
選項長度:長度為1字節,其值為1,表示選項值字段的長度為1字節;
選項值:長度為1字節,其值標識DHCP的報文類型。
RFC2131中定義了以下八條DHCP消息:
類型描述
1 DHCPDISCOVER
2 DHCPOFFER
3 DHCPREQUEST
4 DHCPDECLINE
5 DHCPACK
6 DHCPNAK
7 DHCPRELEASE
8 DHCPINFORM
DHCP服務器可以從客戶端接收的消息有:DHCPDISCOVER,DHCPREQUEST,
DHCPDECLINE、DHCPRELEASE和DHCPINFORM;
DHCP客戶端可以從服務器接收的消息有:DHCPOFFER、DHCPACK和DHCPNAK。
DHCPDISCOVER
當服務器從客戶端接收到DHCPDISCOVER消息時,服務器將為該客戶端選擇壹個網絡。
網絡地址,如果沒有可用的地址,那麽服務器會向系統管理員報告;如果有可用的地址,則服務器
將為客戶端選擇壹個可用的地址,選擇機制是:
1,服務器地址池中靜態綁定客戶端MAC地址的IP地址;
2.客戶端以前使用的過期或釋放的地址(如果該地址在地址池中可用)。
地址,並且還沒有被分配,那麽這個地址被分配給客戶端;
3.客戶端在“請求的IP地址”選項中指定的IP地址。如果這個地址是壹個地址,
池中的有效地址,並且它還沒有被分配,那麽這個地址被分配給客戶端;
4.根據特定的選擇方法,將地址池中有效的未分配的新地址分配給客戶端。
使用。
租期選擇機制:
1.如果客戶端請求DHCPDISCOVER中指定的租約期限,則客戶端是否已被
如果指定了網絡地址,服務器將被指定為請求的租期;
2.如果客戶端沒有請求指定租期,並且客戶端已經分配了壹個網絡地址,則
服務器會將此地址以前使用的租期分配給此地址;
3.如果客戶端沒有請求指定租期,並且沒有為客戶端分配網絡地址,則
服務器將指定本地默認租期。
DHCPREQUEST
DHCPREQUEST表示客戶端響應來自服務器的DHCPOFFER消息,並檢查之前分配的網絡。
解決或延長現有租約。如果DHCPREQUEST消息包含“服務器標識符”選項,則
此消息用於響應DHCPOFFER,否則,此消息用於請求檢查和擴展現有的。
租賃的。
如果DHCPREQUEST中的客戶端使用了“客戶端標識符”選項,則所有後續的
在所有消息中使用相同的“客戶標識符”;如果DHCPDISCOVER消息包含需求參數列
表,那麽這個參數列表應該包含在後續消息中。
DHCPACK中的配置參數不應與DHCPOFFER消息沖突,但應與客戶端使用的配置參數沖突。
該數字是DHCPACK消息中的配置參數。
DHCPDECLINE
如果客戶端發現服務器建議的網絡地址已被使用,客戶端會將其發送給服務器。
DHCPDECLINE消息,服務器必須將該網絡地址標記為不可用,並通知本地系統。
管理員可能遇到的配置問題。
客戶端檢查服務器分配的地址是否已被使用的方法:客戶端從服務器接收ACK消息,
在配置自己的IP地址等參數之前,發送免費ARP,檢查網絡中是否啟用了IP地址。
使用。
DHCPRELEASE
如果客戶端不再需要使用其指定的地址,客戶端將向服務器發送DHCPRELEASE報告。
收到DHCPRELEASE後,服務器會標記這個網絡地址不再分配,但是服務器要保留。
記錄客戶端的初始化參數,以便將來對客戶端可能重用該地址做出響應。
DHCPINFORM
當客戶端配置了自己的IP地址,但想要配置其他參數時,它會將其發送到服務器。
DHCPINFORM消息,請求其他參數配置。
當接收到DHCPINFORM消息時,服務器直接將DHCPACK發送到消息“ciaddr”字段中給出的地址。
消息。服務器不必隨時間發送租約,也不應該填寫“yiaddr”字段。
DHCPOFFER
服務器接收DHCPDISCOVER消息,並用DHCPOFFER消息進行響應。DHCPOFFER
該消息應該包括“yiaddr”域的可用網絡地址和DHCP選項的其他配置參數。分配新地址時
,服務器應該確認所提供的網絡地址沒有被其他客戶端使用(服務器可以通過發送方向來劃分。
用地址的ICMP回應請求來確認所分配的地址未被使用)。
DHCPACK & ampDHCPNAK
如果服務器提供的配置參數是可接受的,則客戶端記錄該服務器的地址,並且
將該地址寫入DHCPREQUEST的“服務器標識符”字段,並以廣播的形式發送出去。如果它被接收,
DHCPREQUEST消息中的配置參數有效,服務器將響應DHCPACK消息。壹次
當收到DHCPACK時,客戶端將被初始化並進入綁定狀態。
如果DHCPREQUEST消息中的配置參數無效,服務器將用壹個參數來響應。
DHCPNAK消息。