dhcpd是dhcp服務器端後臺進程文件,dhcpd後臺程序總是讀取配置文件 /etc/dhcpd.conf。
一,守護進程的基本流程
dhcpd基本流程爲:
main()
{
/ *設置isc和dns庫管理* /
/ *建立客戶分類系統* /
/ *初始化omapi系統* /
/ *爲通用對象設置OMAPI封裝器* /
/ *爲各種服務器數據庫內部對象建立OMAPI封裝器* /
/ *記錄標準錯誤* /
/ *解析命令行參數* /
/ *如果選項有,獲得用戶和組信息* /
/ *繞過ISC組聲明* /
/ *默認DHCP/BOOTP端口。* /
/ *dhcp選項域設置初始化* /
/ *在解析之前添加ddn更新枚舉類型* /
/ *設置各種鉤子函數* /
/ *設置標準名稱服務更新例程。* /
/ *初始化icmp支持* /
/ *讀取dhcpd.conf文件…* /
/ *啓動數據庫* /
/ *發現所有網絡接口,並初始化它們* /
/ *成爲守護進程的第一部分* /
/ *成爲會話的引導,並獲得pid* /
/ *接收數據包並調用dispatch()函數調度* /
}
二,DHCP服務器工作流程
1,初始化DHCP服務器。
2,初始化請求模塊,監聽客戶請求。
3,當客戶請求到來時,調用處理線程來處理應答客戶端請求。
4,處理線程處理完請求信息,返回給客戶端處理結果。等待下一個客戶請求。
在處理請求模塊中調用dispatch()函數,根據不同類型的包,接收和調度packet。處理請求模塊在處理任務時,首先根據包類型的不同,調用do_packet/do_packet6函數分析處理客戶請求信息包,若調用do_packet則先判斷請求包的類型是bootp還是dhcp。最後,分別調用bootp子模塊和dhcp/dhcpv6子模塊進行處理,如下: