前言服務器
前面介紹了應用層的DNS協議 你知道上網時輸入的URL是怎麼解析成IP地址的嗎?一文帶你搞懂DNS,咱們知道了DNS能夠將域名映射成IP地址。網絡
今天給你們介紹下應用層另外一個協議——動態主機配置協議DHCP。ide
咱們的PC在和網絡中的其餘終端通訊時須要獲取一個IP地址,這個IP地址能夠手動配置,也能夠經過DHCP協議動態獲取。今天就來看下咱們的PC是如何動態獲取到IP地址的?3d
正文代理
1 爲何須要DHCP動態分配IP地址? DHCP和手動配置IP的優缺點?code
手動配置IP地址server
操做簡單,可是在局域網容易形成IP地址衝突,若是終端數量較多須要一臺臺配置,工做量大。blog
使用DHCP動態分配IP地址:dns
能夠減小管理員的工做量,避免用戶手工配置網絡參數時形成的地址衝突。接口
2 什麼是DHCP協議
DHCP(動態主機配置協議)是應用層的網絡協議,能夠用於給客戶端動態分配IP地址和子網掩碼。DHCP基於服務器-客戶端的模式進行工做。
3 DHCP的工做原理
DHCP協議是基於客戶端-服務器模式的,爲了動態獲取IP地址和子網掩碼配置信息,DHCP客戶端須要和DHCP服務器進行報文交互。
一、DHCP客戶端發送DHCP Discover廣播報文來發現DHCP服務器。(詢問誰能夠爲我分配IP地址。)
二、DHCP服務器在收到DHCP Discover報文後,會選取一個未分配的IP地址,向DHCP客戶端發送DHCP提供報文(DHCP Offer),此報文中包含IP地址等配置信息。若是存在多個DHCP服務器,每一個DHCP服務器都會響應。(告訴DHCP客戶端我能夠給你提供服務)
三、若是有多個DHCP服務器向DHCP客戶端發送DHCP提供報文,DHCP客戶端將會選擇收到的第一個DHCP提供報文,而後發送DHCP Request報文,報文中包含請求的IP地址。(告訴全部的DHCP服務器我選擇哪一個服務器給我分配的地址)
四、DHCP服務器在收到DHCP Request報文後,會迴應一個DHCP Ack報文。(告訴DHCP客戶端我知道了)
地址衝突檢測:
DHCP客戶端收到DHCP Ack報文後,會發送免費ARP報文,檢查網絡中是否有其餘主機使用分配的IP地址。
一、若是指定時間內沒有收到ARP應答,DHCP客戶端會使用這個IP地址。
二、若是有主機使用該IP地址,DHCP客戶端會向DHCP服務器發送DHCP拒絕報文,通知服務器該IP地址已被佔用。而後DHCP客戶端會向服務器從新申請一個IP地址。
DHCP地址續租:
在使用租期超過50%時刻處DHCP Client會以單播形式向DHCP Server發送DHCP Request報文來續租IP地址。
一、若是DHCP Client成功收到DHCP Server發送的DHCP ACK報文,則按相應時間延長IP地址租期;
二、若是沒有收到DHCP Server發送的DHCP ACK報文,則DHCP Client繼續使用這個IP地址。
在使用租期超過87.5%時刻處,DHCP Client會以廣播形式向DHCP Server發送DHCP Request報文來續租IP地址。
一、若是DHCP Client成功收到DHCP Server發送的DHCP ACK報文,則按相應時間延長IP地址租期;
二、若是沒有收到DHCP Server發送的DHCP ACK報文,則DHCP Client繼續使用這個IP地址,直到IP地址使用租期到期時,DHCP Client纔會向DHCP Server發送DHCP Release報文來釋放這個IP地址,並開始新的IP地址申請過程。
注意:
從上面咱們知道DHCP客戶端經歷了從DHCP服務器動態獲取IP地址,續租IP地址到最後釋放IP地址的生命週期。
4 DHCP報文類型和報文格式:
DHCP 協議提供了多種類型的報文,可是基本格式是相同的,不一樣類型的報文只是報文中的某些字段值不一樣。
DHCP 報文的基本格式如圖所示:
上圖中每一個字段含義以下:
op:報文的操做類型。分爲請求報文和響應報文。客戶端發送給服務器的包爲請求報文,值爲 1;服務器發送給客戶端的包爲響應報文,值爲 2。
htype:DHCP 客戶端的 MAC 地址類型。MAC 地址類型實際上是指明網絡類型,htype 值爲 1 時表示爲最多見的以太網 MAC 地址類型。
hlen:硬件地址長度。以太網 MAC 地址長度爲 6 個字節,即 hlen 值爲 6。
xid:事務 ID。客戶端發起一次請求時選擇的隨機數,用來標識一次地址請求過程。在一次請求中全部報文的 xid 都是同樣的。
secs:DHCP 客戶端從獲取到 IP 地址或者續約過程開始到如今所過去的時間,以秒爲單位。在沒有得到 IP 地址前,該字段始終爲 0。
flags:BOOTP 標誌位。只使用第 0 比特位,是廣播應答標識位,用來標識 DHCP 服務器應答報文是採用單播仍是廣播發送。其中,0 表示採用單播發送方式,1 表示採用廣播發送方式。其他位還沒有使用。
ciaddr:DHCP 客戶端的 IP 地址。僅在 DHCP 服務器發送的 ACK 報文中顯示,在其餘報文中均顯示爲 0。這是由於在獲得 DHCP 服務器確認前,DHCP 客戶端尚未分配到 IP 地址。
yiaddr:DHCP 服務器分配給客戶端的 IP 地址。僅在 DHCP 服務器發送的 Offer 和 ACK 報文中顯示,其餘報文中顯示爲 0。
siaddr:爲 DHCP 客戶端分配 IP 地址等信息的其餘 DHCP 服務器 IP 地址。僅在 DHCP Offer、DHCP ACK 報文中顯示,其餘報文中顯示爲 0。
giaddr:轉發代理(網關)IP 地址,DHCP 客戶端發出請求報文後通過的第一個 DHCP 中繼的 IP 地址。若是沒有通過 DHCP 中繼,則顯示爲 0。
chaddr:DHCP 客戶端的 MAC 地址。在每一個報文中都會顯示對應 DHCP 客戶端的 MAC 地址。
sname:爲客戶端分配 IP 地址的服務器名稱(DNS 域名格式)。只在 DHCP Offer 和 DHCP ACK 報文中顯示發送報文的 DHCP 服務器名稱,其餘報文顯示爲 0。
file:DHCP 服務器爲 DHCP 客戶端指定的啓動配置文件名稱及路徑信息。僅在 DHCP Offer 報文中顯示,其餘報文中顯示爲空。
5 DHCP的應用場景:
在大型網絡中,會有大量的主機或設備須要獲取IP地址等網絡參數時,使用DHCP協議動態分配地址。
6 實戰:
DHCP地址池
在作實驗前先講下DHCP地址池。
DHCP服務器的地址池是用來定義分配給主機的IP地址範圍,DHCP支持配置兩種地址池,包括全局地址池和接口地址池。
一、接口地址池爲鏈接到同一網段的主機或終端分配IP地址。
能夠在服務器的接口下執行dhcp select interface命令,配置DHCP服務器採用接口地址池的DHCP服務器模式爲客戶端分配IP地址。
二、全局地址池爲全部鏈接到DHCP服務器的終端分配IP地址。
能夠在服務器的接口下執行dhcp select global命令,配置DHCP服務器採用全局地址池的DHCP服務器模式爲客戶端分配IP地址。
接口地址池的優先級比全局地址池高。配置了全局地址池後,若是又在接口上配置了地址池,客戶端將會從接口地址池中獲取IP地址。
實驗配置:在ENSP模擬器上模擬客戶端經過DHCP獲取IP地址
一、搭建拓撲圖以下:
二、配置PC1的IP地址獲取方式爲DHCP
三、在R1路由器下作DHCP配置,採用接口地址池分配IP地址:
# dhcp enable # interface Ethernet0/0/0 ip address 10.1.1.1 255.255.255.0 dhcp select interface dhcp server excluded-ip-address 10.1.1.2 dhcp server lease day 3 hour 0 minute 0 dhcp server dns-list 10.1.1.2 #
dhcp enable命令用來使能DHCP功能。在配置DHCP服務器時,必須先執行dhcp enable命令,才能配置DHCP的其餘功能並生效。
dhcp select interface命令用來關聯接口和接口地址池,爲鏈接到接口的主機提供配置信息。在本示例中,接口Ethernet 0/0/0被加入接口地址池中。
dhcp server dns-list命令用來指定接口地址池下的DNS服務器地址。
dhcp server excluded-ip-address命令用來配置接口地址池中不參與自動分配的IP地址範圍。
dhcp server lease命令用來配置DHCP服務器接口地址池中IP地址的租用有效期限功能。缺省狀況下,接口地址池中IP地址的租用有效期限爲1天。
四、配置完成後經過ipconfig命令在PC1上查看IP地址獲取狀況。
能夠看到PC1獲取了IP地址爲10.1.1.254,子網掩碼爲255.255.255.0,DNS服務器地址爲10.1.1.2。
7 Wireshark抓包獲取 DHCP 請求 IP 地址時的每種報文。
以下圖所示爲DHCP的四次握手的交互報文
一、該數據包是客戶端向服務器發送的 DHCP Discover 數據包。
在上圖中,因爲當前客戶端尚未 IP 地址,因此源 IP 地址爲 0.0.0.0;客戶端是向網絡中全部服務器進行發送,使用的是廣播包,因此目標 IP 地址爲 255.255.255.255。
二、該數據包是 DHCP 服務器收到客戶端 DHCP Discover 廣播包後返回的 DHCP Offer 包。
因爲是 DHCP 服務器給 DHCP 客戶端發送提供的地址信息。所以,報文中應該包含 DHCP 服務器提供給客戶端的 IP 地址信息,這裏爲 10.1.1.254;提供給客戶端的子網掩碼信息這裏爲 255.255.255.0。
三、該數據包是 DHCP 客戶端向網絡中全部 DHCP 服務器主機發出的 DHCP Request 消息。
因爲此時客戶端尚未真正擁有IP地址,所以源 IP 地址仍然爲 0.0.0.0,該數據包是用來通知全部服務器的,以廣播形式發出,所以目標 IP 地址爲 255.255.255.255。
四、DHCP ACK 數據包是 DHCP 服務器給客戶端發送的確認數據包。
能夠看到服務器標識地址爲 10.1.1.1,因此捕獲的數據包的源 IP 地址爲 10.1.1.1。目標地址爲提供的 IP 地址 10.1.1.254。