天天看點

伺服器封包協定号,DHCP協定的租約确認和封包格式

對于DHCP協定我們總是有很多内容需要介紹。在之前我們已經對概念、結構和工作流程有了一定的了解了。這裡,我們将要在流程中補充一部分知識,另外在對DHCP協定的封包格式進行重點講述。

租約确認

當 DHCP伺服器接收到用戶端的 DHCPrequest 之後,會向用戶端發出一個 DHCPACK 響應,以确認IP租約的正式生效,也就結束了一個完整的 DHCP工作過程。

DHCP發放流程***次登入之後: 一旦 DHCP用戶端成功地從伺服器哪裡取得 DHCP租約之後,除非其租約已經失效并且IP位址也重新設定回 0.0.0.0 ,否則就無需再發送 DHCPdiscover 資訊了,而會直接使用已經租用到的IP位址向之前之 DHCP伺服器發出 DHCPrequest 資訊,DHCP伺服器會盡量讓用戶端使用原來的IP位址,如果沒問題的話,直接響應 DHCPack 來确認則可。如果該位址已經失效或已經被其它機器使用了,伺服器則會響應一個 DHCPNACK 封包給用戶端,要求其從新執行 DHCPdiscover。

至于IP的租約期限卻是非常考究的,并非如我們租房子那樣簡單, 以 NT 為例子:DHCP工作站除了在開機的時候發出 DHCPrequest 請求之外,在租約期限一半的時候也會發出 DHCPrequest ,如果此時得不到 DHCP伺服器的确認的話,工作站還可以繼續使用該IP;當租約期過了87.5%時,如果客戶機仍然無法與當初的DHCP伺服器聯系上,它将與其它DHCP伺服器通信。如果網絡上再沒有任何DHCP協定伺服器在運作時,該客戶機必須停止使用該IP位址,并從發送一個Dhcpdiscover資料包開始,再一次重複整個過程。要是您想退租,可以随時送出 DHCPRELEASE 指令解約,就算您的租約在前一秒鐘才獲得的。

跨網絡的 DHCP運作 從前面描述的過程中,我們不難發現:DHCPDISCOVER 是以廣播方式進行的,其情形隻能在同一網絡之内進行,因為 router 是不會将廣播傳送出去的。但如果 DHCP伺服器安設在其它的網絡上面呢?由于 DHCP用戶端還沒有IP環境設定,是以也不知道 Router 位址,而且有些 Router 也不會将 DHCP廣播封包傳遞出去,是以這情形下 DHCPDISCOVER 是永遠沒辦法抵達 DHCP伺服器那端的,當然也不會發生 OFFER 及其它動作了。要解決這個問題,我們可以用 DHCPAgent (或 DHCPProxy )主機來接管客戶的 DHCP請求,然後将此請求傳遞給真正的 DHCP伺服器,然後将伺服器的回複傳給客戶。這裡,Proxy 主機必須自己具有路由能力,且能将雙方的封包互傳對方。

若不使用 Proxy,您也可以在每一個網絡之中安裝 DHCP伺服器,但這樣的話,一來裝置成本會增加,而且,管理上面也比較分散。當然喽,如果在一個十分大型的網絡中,這樣的均衡式架構還是可取的。端視您的實際情況而定了。

DHCP協定封包格式

以下為各字段的簡要說明:

OP 若是 client 送給 server 的封包,設為 1 ,反向為 2 。

HTYPE 硬體類别,Ethernet 為 1 。

HLEN 硬體位址長度, Ethernet 為 6 。

HOPS 若封包需經過 router 傳送,每站加 1 ,若在同一網内,為 0 。

TRANSACTION ID DHCPREQUEST 時産生的數值,以作 DHCPREPLY 時的依據。

SECONDS Client 端啟動時間(秒)。

FLAGS 從 0 到 15 共 16 bits ,最左一 bit 為 1 時表示 server 将以廣播方式傳送封包給 client ,其餘尚未使用。

ciaddr 要是 client 端想繼續使用之前取得之IP位址,則列于這裡。

yiaddr 從 server 送回 client 之DHCPOFFER與 DHCPACK 封包中,此欄填寫配置設定給 client 的IP位址。

siaddr 若 client 需要透過網絡開機,從 server 送出之 DHCPOFFER、DHCPACK、DHCPNACK 封包中,此欄填寫開機程式代碼所在 server 之位址。

giaddr 若需跨網域進行 DHCP協定發放,此欄為 relay agent 的位址,否則為 0 。 chaddr Client 之硬體位址。 sname Server 之名稱字元串,以 0x00 結尾。 file 若 client 需要透過網絡開機,此欄将指出開機程式名稱,稍後以 TFTP 傳送。 options 允許廠商定議選項(Vendor-Specific Area),以提供更多的設定資訊(如:Netmask、Gateway、DNS、等等)。其長度可變,同時可攜帶多個選項,每一選項之***個 byte 為資訊代碼,其後一個 byte 為該項資料長度,***為項目内容。 CODE LEN VALUE 此字段完全相容 BOOTP,同時擴充了更多選項。其中,DHCP封包可利用編碼為 0x53 之選項來設定封包類别: 項值 類别 1 DHCPDISCOVER 2DHCPOFFER3 DHCPREQUEST 4 DHCPDECLIENT 5 DHCPACK 6 DHCPNACK 7 DHCPRELEASE DHCP協定的選項非常多,有空請查閱 RFC 或相關文獻,并好好了解,這裡不再叙述了。

【責任編輯:佟媛微 TEL:(010)68476606】

點贊 0