DHCP源碼分析-系統概述

     先名詞解釋下:

     DHCP:動態主機配置協議(Dynamic Host Configuration Protocol),是一個局域網的網絡協議,使用UDP協議工作
它的前身是BOOTP(Bootstrap Protocol)初始引導協議。


     BOOTP則可以自動地爲那些主機設定TCP/IP環境。但BOOTP有一個缺點:您在設定前須事先獲得客戶端的硬體位址,而且,與IP的對應是靜態的。


     比較起BOOTP,DHCP透過"租約"的概念,有效且動態的分配客戶端的TCP/IP設定。


     DHCP主要使用67,68兩個端口,客戶端向68端口(bootps)廣播請求配置,服務器向67端口(bootpc)廣播迴應請求
546端口是DHCP failover用來做“雙機熱備”的,也叫失效備援。可以理解爲宕機時切換用的。


     分析的源碼版本基於ISCDHCP-4.2.3rc1,可用簡單有效的方式提供設備需要的IP地址。ISC DHCP是開源軟件,實現了動態主機配置協議IP網絡連接。ISCDHCP解決方案支持IPv4和IPv6,適用於大容量和高可靠性的應用程序。


     源碼下載地址:ftp://ftp.isc.org/isc/dhcp/dhcp-4.2.3rc1/


      在 DHCP 協議中,系統主要分爲三個模塊:DHCP 服務器、DHCP 客戶端和 DHCP 中繼。


      DHCP服務器的作用是能夠接收並解析DHCP客戶端直接發送或經由DHCP中繼轉發的 DHCP 請求報文,根據報文請求的內容並結合管理員的配置策略,爲 DHCP 客戶端進行一定範圍內的IP 地址租約或網絡參數分配,或對 IP 地址租約進行續約,或釋放客戶端不再需要的 IP 地址租約,從而保證該 IP 地址能夠及時分配給其它有需要的 DHCP 客戶端


      DHCP 客戶端是用來獲取 IP 地址或其它網絡資源的主機,它會維持一個有限狀態機,一旦啓動 DHCP 客戶端 DHCP 功能,它就會在狀態機的控制下完成 IP 地址租約的申請、刷新和釋放等功能,同時也會完成對其它自身所需的網絡資源的獲取。


      DHCP 中繼用於連接不在同一子網中的 DHCP 客戶端和 DHCP 服務器,中繼的存在,使得組網時不必在每個子網中都設置 DHCP 服務器,從而大大節省了 DHCP 服務器資源,擴大了DHCP 服務器的輻射範圍


      DHCP 服務器能夠記錄爲 DHCP 客戶端分配的網絡資源信息,並從客戶端獲取唯一的標識將客戶端和它分配到的 IP 地址信息進行綁定,從而保證IP 地址不會發生衝突。例如:可以獲取客戶端的硬件地址(也即 hardware address,一般對於一個網卡來說,出廠之後具有唯一的硬件地址)作爲唯一標識。


       DHCP服務器可以分配給DHCP 客戶端一個具有一定期限的 IP 地址租約來供其使用,它的實現機制是這樣的客戶端在它發送的 DHCP 請求報文中通過選項來告知服務器它需要使用的 IP 地址租期,而服務器可以根據其配置來決定具體的租約週期,客戶端會在租期到期之前向服務器提出租約刷新的請求,而服務器所要做的就是保證在租期過期之前不要將該租約重複分配給其它客戶端。當租約過期時,服務器不必馬上將改租約分配給其它客戶端,可以繼續保留一段時間,從而當之前的客戶端重新向服務器發送報文時,能夠分配給它曾經使用過的 IP 地址。


            


整體參考:

[1]        RFC_2131

[2]        RFC_2132

[3]        RFC_3315

[4]        Linux環境下的DHCP服務器設計與實現


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