DHCP工作過程詳解

                             DHCP工作過程詳解

DHCP服務的優缺點:

優點:客戶端可以在dhcp服務器所屬的物理網絡範圍內自動獲得dhcp服務器下發的ip地址。

缺點:路由器不會轉發廣播包,dhcp服務器不能跨物理網絡來實現ip地址的動態下發。

1、客戶端向68端口(bootps)廣播請求配置,

2、服務器向67端口(bootpc)廣播迴應請求。

0.0.0.0地址的作用:

它的作用是幫助路由器發送路由表中無法查詢的包。如果設置了全零網絡的路由,路由表中無法查詢的包都將送到全零網絡的路由中去。

在路由器配置中可用0.0.0.0/0表示默認路由,作用是幫助路由器發送路由表中無法查詢的包。如果設置了全零網絡的路由,路由表中無法查詢的包都將送到全零網絡的路由中去。嚴格說來,0.0.0.0已經不是一個真正意義上的IP地址了。它表示的是這樣一個集合:所有未知的主機和目的網絡。這裏的“未知”是指在本機的路由表裏沒有特定條目指明如何到達

一、DHCP客戶機初始化:

【一定要記住四個過程,四個包,形象一點就是租房的過程,客戶端是租戶,服務端是房東】

1. 尋找DHCP Server

DHCP客戶機第一次登錄網絡的時候(也就是客戶機上沒有任何IP地址數據時),它會通過UDP 67端口向網絡上發出一個DHCPDISCOVER數據包(包中包含客戶機的MAC地址和計算機名等信息)。因爲客戶機還不知道自己屬於哪一個網絡,所以封包的源地址爲0.0.0.0,目標地址爲255.255.255.255,然後再附上DHCP discover的信息,向網絡進行廣播。

DHCP discover的等待時間預設爲1秒,也就是當客戶機將第一個DHCP discover封包送出去之後,在1秒之內沒有得到迴應的話,就會進行第二次DHCP discover廣播。若一直沒有得到迴應,客戶機會將這一廣播包重新發送四次(以24816秒爲間隔,加上1-1000毫秒之間隨機長度的時間)。如果都沒有得到DHCP Server的迴應,客戶機會從169.254.0.0/16這個自動保留的私有IP地址中選用一個IP地址。並且每隔5分鐘重新廣播一次,如果收到某個服務器的響應,則繼續IP租用過程。

2. 提供IP地址租用

DHCP Server監聽到客戶機發出的DHCP discover廣播後,它會從那些還沒有租出去的地址中,選擇最前面的空置IP,連同其它TCP/IP設定,通過UDP 68端口響應給客戶機一個DHCP OFFER數據包(包中包含IP地址、子網掩碼、地址租期等信息)。此時還是使用廣播進行通訊,源IP地址爲DHCP ServerIP地址,目標地址爲255.255.255.255。同時,DHCP Server爲此客戶保留它提供的IP地址,從而不會爲其他DHCP客戶分配此IP地址。

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

3. 接受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客戶機都會無條件接受DHCP ServerOFFER,特別是如果這些主機上安裝有其它TCP/IP相關的客戶機軟件。客戶機也可以用DHCP REQUEST向服務器提出DHCP選擇,這些選擇會以不同的號碼填寫在DHCP Option Field裏面。客戶機可以保留自己的一些TCP/IP設定。

4. 租約確認

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地址完成初始化,從而可以和其他網絡中的主機進行通訊。

Client --------------------->DHCP DISCOVER 

                    DHCP OFFER <------------------- Server

Client --------------------->DHCP REQUEST

                    DHCP ACK <---------------Server

在這客戶端ip獲得的過程租房的過程都是廣播的形式發送報文的。

二、DHCP客戶機租期續約:

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

如果在租期過去50%的時候沒有更新,則客戶機將在租期過去87.5%的時候再次向爲其提供IP地址的DHCP聯繫。如果還不成功,到租約的100%時候,客戶機必須放棄這個IP地址,重新申請。如果此時無DHCP可用,客戶機會使用169.254.0.0/16中隨機的一個地址,並且每隔5分鐘再進行嘗試。

 

169.254.0.0/16是保留地址。如果你的IP地址是自動獲取IP地址,而你在網絡上又沒有找到可用的DHCP服務器。就會得到其中一個IP

Client ------------------------------>DHCP REQUEST

                          DHCP ACK ----------------------->Server

續租的過程中都是以單播的形式發送報文的,

在這還有一個例子:(馬哥講的)

1.ABC爲三個公司的三個部門,中間連接着一個路由器,三個部門都想動態分配地址,於是在每個部門均設立一個dhcp服務器,這樣有點資源浪費,怎麼辦?但是假如Adhcp服務器但是BC的廣播;路由又不給轉發,BC也獲取不到ip,怎麼辦?

 

解決辦法:我們配置路由器成爲DHCP的中繼器(DHCP RelayBC端再次廣播時,路由單播將BC內客戶端的請求發送給A中的DHCP服務器,DHCP服務器再單播發送給路由,路由再廣播給客戶端,然後客戶端Request請求,路由器單播給服務器,服務器單播ACK給路由,路由廣播給客戶端。

注意:dhcp服務器必須提供地址池一定要根自己的網卡在同一個網段中,這表明我們就是給本地網絡提供服務的。

 

發佈了19 篇原創文章 · 獲贊 17 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章