DHCP協議

本文轉自:http://network.51cto.com/art/201406/441752.htm

DHCP協議: Dynamic Host Configuration Protocol﹐動態主機配置協議。DHCP是一個局域網的網絡協議,使用UDP協議工作,主要有兩個用途:給內部網絡或網絡服務供應商自動分配IP地址,給用戶或者內部網絡管理員作爲對所有計算機作中央管理的手段

DHCP Client:DHCP客戶端,通過DHCP協議請求IP地址的客戶端。DHCP客戶端是接口級的概念,如果一個主機有多個以太接口,則該主機上的每個接口都可以配置成一個DHCP 客戶端。交換機上每個Vlan接口也可以配置成一個DHCP客戶端。

DHCP Server:DHCP 服務端,負責爲DHCP客戶端提供IP地址,並且負責管理分配的IP地址。

DHCP Relay:DHCP中繼器,DHCP客戶端跨網段申請IP地址的時候,實現DHCP報文的轉發功能。

DHCP Security:DHCP安全特性,實現合法用戶IP地址表的管理功能

DHCP Snooping:DHCP監聽,記錄通過二層設備申請到IP地址的用戶信息

工作原理
這裏寫圖片描述

發現階段:

即DHCP客戶端尋找DHCP服務端的過程,對應於客戶端發送DHCP Discovery,因爲DHCP Server對應於DHCP客戶端是未知的,所以DHCP 客戶端發出的DHCP Discovery報文是廣播包,源地址爲0.0.0.0目的地址爲255.255.255.255。網絡上的所有支持TCP/IP的主機都會收到該DHCP Discovery報文,但是隻有DHCP Server會響應該報文。

如果網絡中存在多個DHCP Server,則多個DHCP Server均會回覆該DHCP Discovery報文。

如果同一個vlan內沒有DHCP Server,而該VlanIf配置了DHCP Relay功能,則該Vlanif即爲DHCP中繼,DHCP中繼會將該DHCP報文的源IP地址修改爲該Vlanif的IP地址,而目的地址則爲DHCP Relay配置的DHCP Server的IP地址。同時修改DHCP報文中,giaddress爲VlanIf的IP地址。並以單播將DHCP Discovery發送到DHCP Server端。

DHCP Server 提供階段

DHCP Server提供階段,即爲DHCP Server響應DHCP Discovery所發的DHCP Offer階段

DHCP Server收到DHCP Discovery報文後,解析該報文請求IP地址所屬的Subnet。並從dhcpd.conf文件中與之匹配的subnet中取出一個可用的IP地址(從可用地址段選擇一個IP地址後,首先發送ICMP報文來ping該IP地址,如果收到該IP地址的ICMP報文,則拋棄該IP地址,重新選擇IP地址繼續進行ICMP報文測試,直到找到一個網絡中沒有人使用的IP地址,用以達到防治動態分配的IP地址與網絡中其他設備IP地址衝突,這個IP地址衝突檢測機制,可配置),設置在DHCP Discovery報文中yiaddress字段中,表示爲該客戶端分配的IP地址,並且爲該Lease設置該Subnet配置的Option,例如默認leases租期,最大租期,router等信息。

DHCP從地址池中選擇IP地址,以如下優先級進行選擇:

1、當前已經存在的Ip Mac的對應關係

2、Client以前的IP地址

3、讀取Discovery報文中的Requested Ip Address Option的值,如果存在並且IP地址可用

4、從配置的Subnet中選擇IP地址:

DHCP Server解析DHCP Discovery請求的IP所屬的Subnet,首先看該DHCP Discovery報文中giaddress是否有DHCP Relay,如果有,則從giaddress所述的subnet中可用IP地址段中獲取,並分配IP。如果giaddress沒有IP地址,則從該DHCP Server綁定的接口的IP地址所屬的網段分配IP地址。

DHCP Client 選擇階段:

DHCP Client收到若干個DHCP Server響應的DHCP Offer報文後,選擇其中一個DHCP Server作爲目標DHCP Server。選擇策略通常爲選擇第一個響應的DHCP Offer報文所屬的DHCP Server。

然後以廣播方式回答一個DHCP Request報文,該報文中包含向目標DHCP請求的IP地址等信息。之所以是以廣播方式發出的,是爲了通知其他DHCP Server自己將選擇該DHCP Server所提供的IP地址

DHCP Server確認階段:

當DHCP Server收到DHCP Client發送的DHCP Request後,確認要爲該DHCP Client提供的IP地址後,便向該DHCP Client響應一個包含該IP地址以及其他Option的報文,來告訴DHCP Client可以使用該IP地址了。然後DHCP Client即可以將該IP地址與網卡綁定。另外其他DHCP Server都將收回自己之前爲DHCP Client提供的IP地址。

DHCP Client重新登錄網絡:

當DHCP Client重新登錄後,發送一個以包含之前DHCP Server分配的IP地址信息的DHCP Request報文,當DHCP Server收到該請求後,會嘗試讓DHCP客戶端繼續使用該IP地址。並回答一個ACK報文

但是如果該IP地址無法再次分配給該DHCP Client後,DHCP回覆一個NAK報文,當DHCP Client收到該NAK報文後,會重新發送DHCP Discovery報文來重新獲取IP地址。

DHCP Client更新租約

DHCP獲取到的IP地址都有一個租約,租約過期後,DHCP Server將回收該IP地址,所以如果DHCP Client如果想繼續使用該IP地址,則必須更新租約。更新的方式就是,噹噹前租約期限過了一半後,DHCP Client都會發送DHCP Renew報文來續約租期。

DHCP報文格式:

這裏寫圖片描述

OP:若是client送給server的封包,設爲1,反向爲2;
Htype:硬件類別,ethernet爲1;
Hlen:硬件長度,ethernet爲6;
Hops:若數據包需經過router傳送,每站加1,若在同一網內,爲0;
Transaction ID:事務ID,是個隨機數,用於客戶和服務器之間匹配請求和相應消息;
Seconds:由用戶指定的時間,指開始地址獲取和更新進行後的時間;
Flags:從0-15bits,最左一bit爲1時表示server將以廣播方式傳送封包給 client,其餘尚未使用;
Ciaddr:用戶IP地址;
Yiaddr:客戶IP地址;
Siaddr:用於bootstrap過程中的IP地址;
Giaddr:轉發代理(網關)IP地址;
Chaddr:client的硬件地址;
Sname:可選server的名稱,以0x00結尾;
File:啓動文件名;
Options:,廠商標識,可選的參數字段

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