001.DHCP簡介
一 DHCP概念
DHCP指動態主機配置協議,是一個區域網的網路協議,使用UDP協議工作。
二 應用
- 為大量客戶機自動分配地址,提供集中管理
- 減輕管理和維護成本,提高網路配置效率
三 分配的主要資訊
- 網絡卡的IP地址、子網掩碼
- 對應的網路地址、廣播地址
- 預設閘道器地址
- DNS伺服器地址
- 引導檔案、TFTP伺服器地址
四 DHCP流程
順序 | 協議 | 形式 | 備註 |
客戶端尋找伺服器 | DISCOVER | 廣播 | 源地址為0.0.0.0,目標地址為255.255.255.255 |
伺服器提供地址資訊 | OFFER | 廣播 | |
接受並廣播 | DHCP REQUEST |
廣播 |
源地址為0.0.0.0,目標地址為255.255.255.255 |
伺服器確認 | ACK | 廣播 | |
客戶端重新登入 | REQUEST | 廣播 | 續租目的地址為DHCP伺服器地址 |
伺服器確認 |
ACK | 單播 | 續約應答 |
4.1 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廣播。若一直沒有得到迴應,客戶機會將這一廣播包重新發送四次(以2,4,8,16秒為間隔,加上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 Server的IP地址,目標地址為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 Server的OFFER,特別是如果這些主機上安裝有其它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地址完成初始化,從而可以和其他網路中的主機進行通訊。
4.2 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分鐘再進行嘗試。