你知道你的電腦IP地址是如何獲取的嗎?一文帶你搞懂DHCP動態主機配置協議

你知道你的電腦IP地址是如何獲取的嗎?一文帶你搞懂DHCP動態主機配置協議
前言服務器

前面介紹了應用層的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服務器進行報文交互。

你知道你的電腦IP地址是如何獲取的嗎?一文帶你搞懂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地址續租:

你知道你的電腦IP地址是如何獲取的嗎?一文帶你搞懂DHCP動態主機配置協議

在使用租期超過50%時刻處DHCP Client會以單播形式向DHCP Server發送DHCP Request報文來續租IP地址。

一、若是DHCP Client成功收到DHCP Server發送的DHCP ACK報文,則按相應時間延長IP地址租期;

二、若是沒有收到DHCP Server發送的DHCP ACK報文,則DHCP Client繼續使用這個IP地址。
你知道你的電腦IP地址是如何獲取的嗎?一文帶你搞懂DHCP動態主機配置協議

在使用租期超過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報文類型和報文格式:
你知道你的電腦IP地址是如何獲取的嗎?一文帶你搞懂DHCP動態主機配置協議

DHCP 協議提供了多種類型的報文,可是基本格式是相同的,不一樣類型的報文只是報文中的某些字段值不一樣。

DHCP 報文的基本格式如圖所示:

你知道你的電腦IP地址是如何獲取的嗎?一文帶你搞懂DHCP動態主機配置協議

上圖中每一個字段含義以下:

  • op:報文的操做類型。分爲請求報文和響應報文。客戶端發送給服務器的包爲請求報文,值爲 1;服務器發送給客戶端的包爲響應報文,值爲 2。

  • htype:DHCP 客戶端的 MAC 地址類型。MAC 地址類型實際上是指明網絡類型,htype 值爲 1 時表示爲最多見的以太網 MAC 地址類型。

  • hlen:硬件地址長度。以太網 MAC 地址長度爲 6 個字節,即 hlen 值爲 6。

  • hops:跳數,DHCP 報文通過的中繼數量。每通過一個路由器,該字段就會增長 1。若是沒有通過路由器,則值爲 0(同一網內)。

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 報文中顯示,其餘報文中顯示爲空。

  • options:可選選項,格式爲「代碼+長度+數據」。

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地址

一、搭建拓撲圖以下:

你知道你的電腦IP地址是如何獲取的嗎?一文帶你搞懂DHCP動態主機配置協議

二、配置PC1的IP地址獲取方式爲DHCP

你知道你的電腦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地址獲取狀況。

你知道你的電腦IP地址是如何獲取的嗎?一文帶你搞懂DHCP動態主機配置協議

能夠看到PC1獲取了IP地址爲10.1.1.254,子網掩碼爲255.255.255.0,DNS服務器地址爲10.1.1.2。

7 Wireshark抓包獲取 DHCP 請求 IP 地址時的每種報文。

以下圖所示爲DHCP的四次握手的交互報文

你知道你的電腦IP地址是如何獲取的嗎?一文帶你搞懂DHCP動態主機配置協議

你知道你的電腦IP地址是如何獲取的嗎?一文帶你搞懂DHCP動態主機配置協議

一、該數據包是客戶端向服務器發送的 DHCP Discover 數據包。

你知道你的電腦IP地址是如何獲取的嗎?一文帶你搞懂DHCP動態主機配置協議

在上圖中,因爲當前客戶端尚未 IP 地址,因此源 IP 地址爲 0.0.0.0;客戶端是向網絡中全部服務器進行發送,使用的是廣播包,因此目標 IP 地址爲 255.255.255.255。

二、該數據包是 DHCP 服務器收到客戶端 DHCP Discover 廣播包後返回的 DHCP Offer 包。

你知道你的電腦IP地址是如何獲取的嗎?一文帶你搞懂DHCP動態主機配置協議

因爲是 DHCP 服務器給 DHCP 客戶端發送提供的地址信息。所以,報文中應該包含 DHCP 服務器提供給客戶端的 IP 地址信息,這裏爲 10.1.1.254;提供給客戶端的子網掩碼信息這裏爲 255.255.255.0。

三、該數據包是 DHCP 客戶端向網絡中全部 DHCP 服務器主機發出的 DHCP Request 消息。

你知道你的電腦IP地址是如何獲取的嗎?一文帶你搞懂DHCP動態主機配置協議

因爲此時客戶端尚未真正擁有IP地址,所以源 IP 地址仍然爲 0.0.0.0,該數據包是用來通知全部服務器的,以廣播形式發出,所以目標 IP 地址爲 255.255.255.255。

四、DHCP ACK 數據包是 DHCP 服務器給客戶端發送的確認數據包。

你知道你的電腦IP地址是如何獲取的嗎?一文帶你搞懂DHCP動態主機配置協議

能夠看到服務器標識地址爲 10.1.1.1,因此捕獲的數據包的源 IP 地址爲 10.1.1.1。目標地址爲提供的 IP 地址 10.1.1.254。

相關文章
相關標籤/搜索