DHCP工作原理

轉自博客園 https://www.cnblogs.com/ruochenchen/archive/2013/05/18/3085776.html

侵刪!!

1.什麼是DHCP(Dynamic Host Configuration Protocol

  動態主機設置協定(Dynamic Host Configuration Protocol, DHCP)DHCP是一個局域網網絡協議,使用UDP協議工作,其前身是BOOTP協議。當前的DHCP定義可以在RFC 2131中找到,而基於IPv6的建議標準(DHCPv6)可以在RFC 3315中找到。主要有兩個用途:

  • 給內部網絡或網絡服務供應商自動分配IP地址給用戶

  • 給內部網絡管理員作爲對所有電腦作中央管理的手段

2.DHCP是怎樣工作的

 

2.1原理:動態主機設置協定(DHCP)是一種使網絡管理員能夠集中管理和自動分配IP網絡地址的通信協議。在IP網絡中,每個連接Internet的設備都需要分配唯一的IP地址。DHCP使網絡管理員能從中心結點監控和分配IP地址。當某臺計算機移到網絡中的其它位置時,能自動收到新的IP地址。

 

DHCP使用了租約的概念,或稱爲計算機IP地址的有效期。租用時間是不定的,主要取決於用戶在某地聯接Internet需要多久,這對於教育行業和其它用戶頻繁改變的環境是很實用的。通過較短的租期,DHCP能夠在一個計算機比可用IP地址多的環境中動態地重新配置網絡。DHCP支持爲計算機分配靜態地址,如需要永久性IP地址的Web服務器。

 

以上內容可以在維基百科的詞條:DHCP找到更詳細的解答。

 

2.2下面詳細介紹以下DHCP自動分配IP地址的過程:

DHCP統一使用兩個IANA分配的端口作爲BOOTP服務器端使用67/udp,客戶端使用68/udp。

DHCP運行分爲四個基本過程,分別爲發現階段、提供IP、選擇IP租約和確認IP租約。

 

 

  • 發現階段:DHCP客戶機尋找DHCP服務器的階段

 

當DHCP客戶機第一次登錄網絡的時候(也就是客戶機上沒有任何IP地址數據時),它會通過UDP 67端口向網絡上發出一個DHCPDISCOVER數據包(包中包含客戶機的MAC地址和計算機名等信息)。因爲客戶機還不知道自己屬於哪一個網絡,所以封包的源地址爲0.0.0.0,目標地址爲255.255.255.255,然後再附上DHCP discover的信息,向網絡進行廣播,網絡上每一臺安裝了TCP/IP協議的主機都會接收到這種廣播信息,但只有DHCP服務器纔會做出響應。

  • 提供IP地址租用:DHCP服務器提供IP地址的階段

在網絡中接收到DHCPdiscover發現信息的DHCP服務器都會做出響應,它從尚未出租的IP地址中挑選一個分配給DHCP客戶機,DHCP爲客戶保留一個IP地址,然後通過網絡廣播一個DHCPOFFER消息給客戶。該消息包含客戶的MAC地址、服務器提供的IP地址、子網掩碼、租期以及提供IP的DHCP服務器的IP。此時還是使用廣播進行通訊,源IP地址爲DHCP Server的IP地址,目標地址爲255.255.255.255。同時,DHCP Server爲此客戶保留它提供的IP地址,從而不會爲其他DHCP客戶分配此IP地址。

 

由於客戶機在開始的時候還沒有IP地址,所以在其DHCP discover封包內會帶有其MAC地址信息,並且有一個XID編號來辨別該封包,DHCP Server響應的DHCP OFFER封包則會根據這些資料傳遞給要求租約的客戶。

 

  • 選擇階段:即DHCP客戶機選擇某臺DHCP服務器提供的IP地址的階段

如果客戶機收到網絡上多臺DHCP服務器的響應,只會挑選其中一個DHCP OFFER(一般是最先到達的那個),並且會向網絡發送一個DHCP REQUEST廣播數據包(包中包含客戶端的MAC地址、接受的租約中的IP地址、提供此租約的DHCP服務器地址等),告訴所有DHCP Server它將接受哪一臺服務器提供的IP地址,所有其他的DHCP服務器撤銷它們的提供以便將IP地址提供給下一次IP租用請求。此時,由於還沒有得到DHCP Server的最後確認,客戶端仍然使用0.0.0.0爲源IP地址,255.255.255.255爲目標地址進行廣播。

  • 租約確認階段:即DHCP服務器確認所提供的IP地址的階段

當DHCP Server接收到客戶機的DHCP REQUEST之後,會廣播返回給客戶機一個DHCP ACK消息包,表明已經接受客戶機的選擇,並將這一IP地址的合法租用以及其他的配置信息都放入該廣播包發給客戶機。

客戶機在接收到DHCP ACK廣播後,會向網絡發送三個針對此IP地址的ARP解析請求以執行衝突檢測,查詢網絡上有沒有其它機器使用該IP地址;如果發現該IP地址已經被使用,客戶機會發出一個DHCP DECLINE數據包給DHCP Server,拒絕此IP地址租約,並重新發送DHCP discover信息。此時,在DHCP服務器管理控制檯中,會顯示此IP地址爲BAD_ADDRESS。

如果網絡上沒有其它主機使用此IP地址,則客戶機的TCP/IP使用租約中提供的IP地址完成初始化,便將收到的IP地址與客戶端的網卡綁定。從而可以和其他網絡中的主機進行通訊。

 

 

通過以上DHCP工作流程的步驟,就完成了客戶端動態IP地址分配的過程。

  • DHCP客戶機租期續約:

因爲客戶機申請的IP地址是有一定的時間限制的,DHCP服務器向DHCP客戶端分配IP地址稱爲出租,通常都設置有租借期限,所以在地址到期之前客戶機還會向DHCP服務器發送一個續約的請求.

客戶機會在租期過去50%的時候,直接向爲其提供IP地址的DHCP Server發送DHCP REQUEST消息包。如果客戶機接收到該服務器迴應的DHCP ACK消息包,客戶機就根據包中所提供的新的租期以及其它已經更新的TCP/IP參數,更新自己的配置,IP租用更新完成。如果沒有收到該服務器的回覆,則客戶機繼續使用現有的IP地址,因爲當前租期還有50%。

如果在租期過去50%的時候沒有更新,則客戶機將在租期過去87.5%的時候再次向爲其提供IP地址的DHCP聯繫。如果還不成功,到租約的100%時候,客戶機必須放棄這個IP地址,重新申請。

通過第1次分配IP地址之後,DHCP客戶端每次重新登錄網絡時,就不需要再次發送DHCP discover廣播信息了,因爲這時已經知道內網中有一個DHCP服務器的IP地址了,所以就直接發送包含前一次所分配的IP地址的DHCP request信息。當DHCP服務器收到該信息後,會嘗試讓DHCP客戶端繼續使用原來的IP地址,並回答一個DHCP ACK信息。若該IP地址已被使用,則DHCP服務器將發送一個DHCP NACK信息給客戶端,客戶端收到該信息後,將重新發送DHCP discover信息來請求新的IP地址。如果客戶端已知的DHCP服務器IP地址無效,就只有重新發送廣播信息,查找新的DHCP服務器了。

3.小型局域網出現的IP衝突問題
一般的家用路由,小型局域網的路由都採用DHCP自動分配IP地址。

因爲最近宿舍的主機發生經常性的斷網,且右下角伴隨着黃色三角形的感嘆號,須重啓路由才能重新連上,但連上不久就有可能再次衝突。

這個問題的發生,原因在於IP衝突。重置路由,但問題雖然減輕但沒有根本上的解決。

後瞭解到有幾臺手動設置了主機的網絡配置。通過前面DHCP服務器的介紹,我們可以得知,DHCP服務器是隻能確保自己分配了地址不再重複分配,但如果同一個局域網中的客戶機採用手動設置網絡配置IP地址,DHCP服務器是不知情的。所以一旦有人提前手動設定分配某個ip A,而DHCP服務器在分配的時候完全有可能把A再次分配給局域網的另一臺採用自動獲取IP的主機。從而造成兩臺機器發生IP衝突,導致無法上網。

 

 

解決辦法:

 1.局域網內所有主機均採用自動分配IP。(控制面板\網絡和 Internet\網絡連接)

 2.在主機手動設定ip的時候,同時把該IP在路由上設定爲靜態IP,使路由識別此IP只能分配給對應mac地址的主機,從而保留了該IP不會再分給其他的主機。

這裏以宿舍的TP—LINK爲例:
瀏覽器輸入:192.168.1.1 輸入:admin  和密碼admin進入路由器的管理

然後添加mac地址,mac地址進入命令輸入:ipconfig可以獲得。和相對應主機設定的ip地址。

3.綁定ARP與IP綁定,原理和上面的類似,都是把mac地址和相應的ip綁定一起。從而DHCP分配的時候不會衝突。

 

 

還有一種辦法就是關閉DHCP服務,局域網全部採用手動分配。但是這種方法就比較麻煩了。對於新主機的接入也不大方便。

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