上一篇文章主要說了一下知識點中的IP地址的考點,這一篇我打算說說DHCP獲取IP地址過程中捕獲的報文的這個考點,都是自己的理解,有錯誤歡迎指正。
DHCP是應用層協議,UDP是傳輸層協議,IP是網絡層協議,以太網是鏈路層協議。數據在網絡上傳輸的時候要自頂向下逐層封裝的,典型的DHCP過程是這樣的:
1:客戶機向服務器發送DHCP_DISCOVER報文,申請IP。
2:服務器向客戶機返會DHCP_OFFER報文,指定一個將要分配的IP。
3:客戶機向服務器發送DHCP_REQUEST報文,請求這個IP。
4:服務器PING幾次(一般是3次)這個IP,如果沒得到響應的話,就說明這個IP現在空閑,可以分配給客戶機, 所以向客戶機發送DHCP_ACK報文,確認可以分配。如果得到相應,則發送DHCP_NAK報文,拒絕分配。
5:如果客戶端收到DHCP_ACK,責發送一次免費ARP,判斷這個IP是否已經被用。沒有被用的話則綁定這個服務
器分配來的IP,否則向服務器發送DHCP_DECLINE報文,拒絕這次分配。并重新執行第一步。
如果收到的是DHCP_NAK,則直接重新執行第一步。
客戶機申請IP之前確實沒有IP,DHCP_DISCOVER報文都是以廣播形式發送的,IP頭里的目的地址是255.255.255.255,源地址是0.0.0.0。鏈路層目的地址是FF-FF-FF-FF-FF-FF,源地址是自己的mac地址。這樣服務器收到客戶端發來的DISCOVER報文之后,會根據源mac地址向客戶機發送單播的DHCP_OFFER報文。
在看一下需要抓取的DHCP報文:
客戶發出的IP租用請求報文
DHCP客戶機初始化TCP/IP,通過UDP端口67向網絡中發送一個DHCPDISCOVER廣播包,請求租用IP地址。該 廣播包中的源IP地址為0.0.0.0,目標IP地址為255.255.255.255;包中還包含客戶機的MAC地址和計算機名。
DHCP回應的IP租用提供報文
任何接收到DHCPDISCOVER廣播包并且能夠提供IP地址的DHCP服務器,都會通過UDP端口68給客戶機回應一個DHCPOFFER廣播包,提供一個IP地址。該廣播包的源IP地址為DCHP服務器IP,目標IP地址為255.255.255.255;包中還包含提供的IP地址、子網掩碼及租期等信息。
客戶選擇IP租用報文
客戶機從不止一臺DHCP服務器接收到提供之后,會選擇第一個收到的DHCPOFFER包,并向網絡中廣播一個 DHCPREQUEST消息包,表明自己已經接受了一個DHCP服務器提供的IP地址。該廣播包中包含所接受的IP地址和服務器的IP地址。 所有其他的DHCP服務器撤消它們的提供以便將IP地址提供給下一次IP租用請求。
DHCP服務器發出IP租用確認報文
被客戶機選擇的DHCP服務器在收到DHCPREQUEST廣播后,會廣播返回給客戶機一個DHCPACK消息包,表明已經接受客戶機的選擇,并將這一IP地址的合法租用以及其他的配置信息都放入該廣播包發給客戶機。
客戶配置成功后發出的公告報文
客戶機在收到DHCPACK包,會使用該廣播包中的信息來配置自己的TCP/IP,則租用過程完成,客戶機可以在網絡中通信。
至此一個客戶獲取IP的DHCP服務過程基本結束,不過客戶獲取的IP一般是用租期,到期前需要更新租期,這個過程是通過租用更新數據包來完成的。
客戶IP租用更新報文
(1)在當前租期已過去50%時,DHCP客戶機直接向為其提供IP地址的DHCP服務器發送DHCPREQUEST消息包。如果客戶機接收到該服務器回應的DHCPACK消息包,客戶機就根據包中所提供的新的租期以及其它已經更新的TCP/IP參數,更新自己的配置,IP租用更新完成。如果沒收到該服務器的回復,則客戶機繼續使用現有的
IP地址,因為當前租期還有50%。
(2)如果在租期過去50%時未能成功更新,則客戶機將在當前租期過去87.5%時再次向為其提供IP地址的DHCP聯系。如果聯系不成功,則重新開始IP租用過程。
(3)如果DHCP客戶機重新啟動時,它將嘗試更新上次關機時擁有的IP租用。如果更新未能成功,客戶機將嘗試聯系現有IP租用中列出的缺省網關。如果聯系成功且租用尚未到期,客戶機則認為自己仍然位于與它獲得現有IP租用時相同的子網上(沒有被移走)繼續使用現有IP地址。 如果未能與缺省網關聯系成功,客戶機則認為自己已經被移到不同的子網上,將會開始新一輪的IP租用過程。
DHCP客戶機在發出IP租用請求的DHCPDISCOVER廣播包后,將花費1秒鐘的時間等待DHCP服務器的回應,如果1秒鐘沒有服務器的回應,它會將這一廣播包重新廣播四次(以2,4,8和16秒為間隔,加上1~1000毫秒之間隨機長度的時間)。四次之后,如果仍未能收到服務器的回應,則運行Windows 2000的DHCP客戶機將從169.254.0.0/16這個自動保留的私有IP地址(APIPA)中選用一個IP地址,而運行其他操作系統的DHCP客戶機將無法獲得IP地址。DHCP客戶機仍然每隔5分鐘重新廣播一次,如果收到某個服務器的回應,則繼續IP租用過程。
對于DHCP在獲取IP地址時的報文,簡單的進行整理和解釋,部分資料來源于網絡,如有錯誤 歡迎指出!多謝!