tft每日頭條

 > 生活

 > dhcp如何分配一個ip

dhcp如何分配一個ip

生活 更新时间:2026-10-14 22:54:35

dhcp如何分配一個ip(37張圖詳解DHCP)1

DHCP 出現

電腦或手機需要 IP 地址才能上網。大劉有兩台電腦和兩台手機,小美有一台筆記本電腦、一台平闆電腦和兩台手機,老王、阿麗、敏敏也有幾台終端設備。如果為每台設備手動配置 IP 地址,那會非常繁瑣,一點兒也不方便。特别是手機、筆記本電腦、平闆電腦等設備,每移動到一個新的地方,接入不同的網絡,都要重新設置 ip 地址,實在是太麻煩了。

dhcp如何分配一個ip(37張圖詳解DHCP)2

于是就有了 DHCP 協議,會自動配置設備的網絡參數,包括 IP 地址、子網掩碼、網關地址、dns 服務器等,替代手動配置。還能統一 IP 地址分配,方便網絡管理。

dhcp如何分配一個ip(37張圖詳解DHCP)3

DHCP 簡介

DHCP 協議是從 BOOTP 協議發展而來。但 BOOTP 運行在相對靜态的環境中,每台設備配置專門的 BOOTP 參數文件,該文件會在相當長的時間内保持不變。DHCP 從以下兩方面對 BOOTP 進行了擴展:

  • DHCP 允許設備動态地獲取 IP 地址,而不是靜态指定每台主機地址。
  • DHCP 能夠分配其它的配置參數,客戶端僅用一個消息就獲取它所需要的所有配置信息。

dhcp如何分配一個ip(37張圖詳解DHCP)4

大劉他們的設備使用 DHCP 功能後,隻要連接到網絡,就可以進行 TCP/IP 通信。對于路由器和交換機,通常是手動配置 IP 地址等參數。

DHCP 是一種 Client/Server 模式的網絡協議,由 DHCP Client 向 DHCP Server 提出配置申請,DHCP Server 返回為 DHCP Client 分配的配置信息。這裡的 Client 和 Server 是應用程序,可以運行在電腦、服務器、路由器等設備上。

dhcp如何分配一個ip(37張圖詳解DHCP)5

舉個栗子:

大劉的電腦開機後,自動運行 DHCP Client ,DHCP Client 主動向其它設備上的 DHCP Server 提出請求,DHCP Server 根據預先配置的策略,返回相應 IP 配置信息,DHCP Client 使用獲得的 IP 配置信息與其它設備進行通信。

dhcp如何分配一個ip(37張圖詳解DHCP)6

DHCP 分配機制

DHCP 提供了兩種地址分配機制,可以根據網絡需求為不同的 Client 選擇不同的分配策略。

  • 動态分配機制:通過 DHCP 為 Client 分配一個有使用期限的 IP 地址。如果 Client 沒有及時續約,到達使用期限後,這個地址可能會被其它 Client 使用。絕大多數 Client 使用的都是這種動态分配的地址。
  • 靜态分配機制:通過 DHCP 為特定的 Client 分配固定的 IP 地址。固定 IP 地址可以永久使用, Client 通常是打印機、服務器等設備。

dhcp如何分配一個ip(37張圖詳解DHCP)7

在實際情況中,我們發現 DHCP Client 重啟後,也能獲得相同的 IP 地址。DHCP Server 為 DHCP Client 分配 IP 地址時,采用如下的順序:

  1. DHCP Server 中與 DHCP Client 的 MAC 地址靜态綁定的 IP 地址;
  2. DHCP Client 曾經使用過的 IP 地址;
  3. 最先找到的可用 IP 地址。

如果沒找到可用的 IP 地址,就依次查詢超過租期、發生沖突的 IP 地址,如果找到就進行分配,否則報錯處理。

dhcp如何分配一個ip(37張圖詳解DHCP)8

DHCP 系統組成

DHCP 系統由 DHCP Server( DHCP 服務器)、DHCP Client( DHCP 客戶端)、DHCP Relay( DHCP 中繼)等組成。

dhcp如何分配一個ip(37張圖詳解DHCP)9

  • DHCP Server
  • DHCP Server 提供網絡參數給 DHCP Client ,通常是一台提供 DHCP 服務功能的服務器或網絡設備(路由器或三層交換機)。比如:家裡用的無線路由器。

dhcp如何分配一個ip(37張圖詳解DHCP)10

  • DHCP Client
  • DHCP Client 通過 DHCP Server獲取網絡參數,通常是一台主機或網絡設備。比如:大劉的電腦、小美的手機。

dhcp如何分配一個ip(37張圖詳解DHCP)11

  • DHCP Relay
  • 通常情況下,DHCP 采用廣播方式實現報文交互,DHCP 服務僅限在本地網段使用。如果需要跨網段實現 DHCP ,那麼使用 DHCP Relay 技術實現。
  • 在 DHCP Server 和 DHCP Client 之間轉發跨網段 DHCP 報文的設備,通常是三層網絡設備。

dhcp如何分配一個ip(37張圖詳解DHCP)12

DHCP 基本流程

DHCP 協議報文采用 UDP 方式封裝,DHCP Server 偵聽的端口号是 67 ,DHCP Client 的端口号是 68 。DHCP 設備通過發送和接收 UDP 67 和 UPD 68 端口的報文進行協議交互。DHCP 的基本工作流程分為 4 個階段,即發現階段、提供階段、請求階段、确認階段。我們假設大劉的 PC 是一台新電腦,下面将描述 PC 第一次是如何通過 DHCP 獲取 IP 地址的。

dhcp如何分配一個ip(37張圖詳解DHCP)13

為方便描述,DHCP Server 簡稱 小 S ,DHCP Client 簡稱 小 C 。

1、發現階段

小 C 在本地網段中廣播一個 DHCP Discover 報文,目的尋找能夠分配 IP 地址的 小 S 。

dhcp如何分配一個ip(37張圖詳解DHCP)14

2、提供階段

本地網段的 小 S 收到 DHCP Discover 報文後,回應 DHCP Offer 報文。DHCP Offer 報文包含了可用 IP 地址和其它網絡參數。

dhcp如何分配一個ip(37張圖詳解DHCP)15

小 C 通過對比 Discover 報文和 Offer 報文中的 xid 字段是否相同,來判斷 Offer 報文是不是發給自己的。

3、請求階段

小 C 會收到 小 S 發送的 DHCP Offer 報文。如果有多個 小 S ,那麼每個 小 S 都會回應 DHCP Offer 報文。通常 小 C 會選擇最先收到的 Offer 報文,并廣播 DHCP Request 報文來表明哪個 小 S 被選擇,其餘 小 S 就涼涼了。

dhcp如何分配一個ip(37張圖詳解DHCP)16

如果 小 C 在一定時間後一直沒收到 DHCP Offer 報文,那麼它就會重新發送 DHCP Discover 報文。

4、确認階段

小 S 收到 DHCP Request 廣播報文後,發送 DHCP Ack 報文作為回應,其中包含 小 C 的網絡參數。DHCP Ack 報文和之前 DHCP Offer 報文的參數不能有沖突,否則 小 S 會回應一個 DHCP Nak 報文。

dhcp如何分配一個ip(37張圖詳解DHCP)17

當 小 C 收到 DHCP Ack 報文後,會發送免費 ARP 報文進行探測,目的地址為獲得的 IP 地址,如果探測此地址沒有被使用,那麼 小 C 就會使用這個地址,并完成配置。

DHCP 租期

從 DHCP 協議上看,小 S 才有 IP 地址的所有權,而 小 C 隻有 IP 地址的使用權。小 S 每次給 小 C 分配一個 IP 地址時,會約定一個 IP 地址的租期,通常是 24 小時。在租期内,小 C 才能使用相應的 IP 地址。當租期到期後,小 C 将不能繼續使用這個 IP 地址。當然了,在租期還沒到期的時候,小 C 是可以申請續租這個 IP 地址的。

T1 時刻是租期到一半的時候,T2 時刻是租期到 87.5% 的時候。在 T1 時刻 小 C 會單播一個 DHCP Request 報文給 小 S ,請求續租 IP 地址。如果 小 C 收到了 DHCP Ack 回應報文,則說明續租成功。

如果直到 T2 時刻,小 C 都未收到 DHCP Ack 回應報文,那麼會廣播發送一個 DHCP Request 報文,繼續請求續租 IP 地址。如果 小 C 收到了 DHCP Ack 回應報文,則說明續租成功。

如果直到租期到期, 小 C 都未收到 DHCP Ack 回應報文,那麼必須停止使用原來的 IP 地址。 小 C 将從發現階段開始,重新來申請一個 IP 地址。

dhcp如何分配一個ip(37張圖詳解DHCP)18

DHCP Relay

動态獲取 IP 地址的過程中,使用廣播方式發生報文,因此 DHCP 隻适用于 小 C 和 小 S 在同一個子網内的情況。如果為每個網段配置一個 小 S ,這顯然太浪費了。

實際上還有 DHCP Relay 這種角色。小 C 通過 DHCP Relay 實現跨網段與 小 S 通信,獲取 IP 地址。這樣,多個子網上的 小 C 可以使用同一個 小 S ,既節省成本,又方便集中管理。

dhcp如何分配一個ip(37張圖詳解DHCP)19

DHCP Relay 的工作原理如下:

  1. 小 C 發送 DHCP Discover 或 DHCP Request 廣播報文,具有 DHCP Relay 功能的網絡設備收到後,根據配置将報文單播給指定的 小 S ;
  2. 小 S 進行 IP 地址的分配,單播發送給 DHCP Relay ,DHCP Relay 再将配置信息廣播給 小 C ,完成對 小 C 的動态配置。

dhcp如何分配一個ip(37張圖詳解DHCP)20

DHCP 協議報文

前面的内容有提到 DHCP 的一些報文類型,現在講講 DHCP 主要的 8 種報文類型。常見的 5 種報文類型有:DHCP Discover 、DHCP Offer 、DHCP Request 、DHCP Ack 和 DHCP Release ,用得少的 3 種報文類型有:DHCP Nak 、DHCP Decline 和 DHCP Inform 。

  • DHCP Discover 報文
  • 它是 DHCP Client 首次接入網絡,DHCP 交互過程的第一個報文,用來尋找 DHCP Server的請求報文。
  • DHCP Offer 報文
  • 它是 DHCP Server 用來回應 DHCP Discover 報文的,并攜帶網絡參數,包括:IP 地址、子網掩碼、默認網關、DNS 服務器等。
  • DHCP Request 報文
  • 它是 DHCP Client 發送的報文,有三種使用場景:根據策略選擇相應的 DHCP Server,并回應 DHCP Offer 報文;DHCP Client 非首次接入網絡,直接發送 DHCP Request 報文來申請之前使用過的 IP 地址等參數;當 IP 地址的租約到期後,發送 DHCP Request 進行租期更新。
  • DHCP Ack 報文
  • 它是 DHCP Server 對 DHCP Request 報文的回應報文,進行最終确認。DHCP Client 收到這個報文後,才能獲得 IP 地址和相應網絡參數。
  • DHCP Nak 報文
  • 它也是 DHCP Server 對 DHCP Request 報文的回應報文,當 DHCP Request 報文中的各個參數都正确時,回應 DHCP Ack 報文,否則回應 DHCP Nak 報文,告訴 DHCP Client 禁止使用獲得的 IP 地址。
  • DHCP Decline 報文
  • 當 DHCP Client 收到 DHCP Ack 報文後,還會發送免費 ARP 報文,确認申請的 IP 地址是否已經在網絡上使用了。如果 IP 地址已經被其它 Client 使用,那麼 DHCP Client 發送 DHCP Decline 報文,拒絕分配的 IP 地址,并重新向 DHCP Server 申請地址。
  • DHCP Release 報文
  • 當 DHCP Client 想要釋放獲得的 IP 地址時,向 DHCP Server 發送 DHCP Release 報文,DHCP Server 收到報文後,可将這個 IP 地址分配給其它的 Client 。
  • DHCP Inform 報文
  • DHCP Client 通過手動方式獲得 IP 地址後,還想向 DHCP Server 獲取更多網絡參數時,比如:默認網關地址、DNS 服務器地址,DHCP Client 就向 DHCP Server 發送 DHCP Inform 報文進行申請。
DHCP 狀态機

如果把功能各異的 8 種報文串起來,就是整個 DHCP 協議交互流程。前面講的 4 種階段(發現、提供、請求、确認)不能完全展現出來,這就需要使用 DHCP 協議的狀态機。狀态指出下一步使用的報文類型,狀态轉換是通過報文的接收、發送或超時。下面是 Client 的狀态機。

dhcp如何分配一個ip(37張圖詳解DHCP)21

Client 從 INIT 狀态開始,廣播 DHCP Discover 報文。在選擇狀态時,它收到 DHCP Offer 報文,并決定使用哪個地址和 Server 。做出選擇後,通過 DHCP Request 報文進入請求狀态。如果分配的地址和曾使用過的地址不一緻,那麼回應 DHCP Nak 報文進行拒絕,并返回 INIT 狀态;如果分配的地址已經被占用,那麼回應 DHCP Decline 報文進行拒絕,也返回到 INIT 狀态。通常是收到一個需要的地址,回應 DHCP Ack 報文,獲得租期超時值 T1 和 T2 ,并進入綁定狀态,這個時候就可以使用這個地址直到租期到期。當 T1 到期時,進入更新狀态并進行續租申請。如果續租成功,那麼可以收到 DHCP Ack 報文,并返回到綁定狀态;如果續租不成功,那麼在 T2 到期時,再次進行續租申請。如果租期最終到期,那麼 Client 将禁止使用所租用的地址,并返回到 INIT 狀态。

DHCP 網絡實戰

DHCP 協議是為解決網絡問題而生,現在我們就來模拟實際環境,動手操作,驗證下 DHCP 的功能。

DHCP Server 示例網絡拓撲

dhcp如何分配一個ip(37張圖詳解DHCP)22

實驗要求
  • RT(路由器)配置 DHCP Server ,PC 動态獲取 IP 地址等網絡參數
操作步驟

配置思路:

  1. 在 RT 上開啟 DHCP 功能,
  2. 創建一個地址池,
  3. 配置地址池的相關參數,
  4. 在 RT 的接口下引用地址池,實現 DHCP Server 功能。

配置命令:

使用 DHCP 功能之前,先要開啟 DHCP 功能。系統視圖下,使用命令 dhcp enable 啟動 DHCP 功能。

動态分配 IP 地址,就需要有多個可分配的 IP 地址,使用 ip pool ip-pool-name 命令來創建全局地址池,ip-pool-name 表示地址池的名稱。

在全局地址池視圖下,通過命令 network ip-address [ mask { mask | mask-length } ] 配置可分配的 IP 地址段。mask { mask | mask-length } 表示子網掩碼,通常根據設備數量來确定掩碼長度。

有了 IP 地址和子網掩碼,再加上默認網關,終端設備就能網絡互通了。在全局地址池視圖下,使用命令 gateway-list ip-address 配置網關 IP 地址。

網絡互通,還不能正常訪問網站,需要配置 DNS 服務器,用于域名解析。在全局地址池視圖下,使用 dns-list ip-address 配置 DNS 服務器的 IP 地址。

地址池配置中,常用的可選命令如下,可根據需求進行選擇性設置。

lease { day day [ hour hour [ minute minute ] ] | unlimited } :配置 IP 地址的租期,默認租期是 1 天。

excluded-ip-address start-ip-address [ end-ip-address ] :在可分配的地址池中,設置不分配的 IP 地址。比如:地址池是 192.168.100.0/24 ,可設置 192.168.100.1 - 192.168.100.10 不參與地址分配。

static-bind ip-address ip-address mac-address mac-address :為 Client 固定分配一個 IP 地址。

配置完地址池,還需要進行引用,DHCP Server 功能就能正常使用了。在 RT 的接口下配置引用,命令為 dhcp select global 。

dhcp如何分配一個ip(37張圖詳解DHCP)23

功能驗證

配置完成後,理論上是 DHCP 功能正常工作了,實際情況的話,可通過命令 display ip pool name pool-name used,查看地址池的配置情況,和地址分配情況。

在 RT 上查看 DHCP Server 地址分配狀态。

dhcp如何分配一個ip(37張圖詳解DHCP)24

同時也在 PC 上查看動态獲取地址情況,進行雙向驗證。

dhcp如何分配一個ip(37張圖詳解DHCP)25

抓包還可以看到 DHCP 報文交互的詳細過程,同時也是檢驗理論知識是否正确。

dhcp如何分配一個ip(37張圖詳解DHCP)26

這裡我們發現抓包看到的是 DHCP Offer 單播報文,而前面介紹的時候,DHCP Offer 是廣播報文。其實 DHCP Offer 報文有可能是單播,也有可能是廣播。DHCP 在報文的标志字段有一個廣播位,如果 Client 支持接收 Offer 單播報文,那麼 Client 就會将發送報文中的廣播位設為 0 ,否則為 1 。

DHCP Relay 示例網絡拓撲

dhcp如何分配一個ip(37張圖詳解DHCP)27

實驗要求
  • DHCP Client 和 DHCP Server 在不同網段,DHCP Client 通過 DHCP Relay 獲取到 IP 地址等網絡參數。
操作步驟
  1. PC( DHCP Client )開啟 DHCP 功能;

dhcp如何分配一個ip(37張圖詳解DHCP)28

  1. RT1( DHCP Relay )使用 dhcp select relay 命令開啟 DHCP Relay 功能,在 G0/0/1 口下使用 dhcp relay server-ip ip-address 命令,配置 DHCP Server 的 IP 地址;

dhcp如何分配一個ip(37張圖詳解DHCP)29

  1. RT2(DHCP Server)開啟 DHCP 功能,創建地址池并配置相關參數,在接口下引用地址池,實現 DHCP Server 功能。

dhcp如何分配一個ip(37張圖詳解DHCP)30

功能驗證

PC 端能獲取到 IP 配置,并且獲取的配置正确。

dhcp如何分配一個ip(37張圖詳解DHCP)31

在 RT1 的 G0/0/1 抓包,查看 DHCP Client 和 DHCP Relay 的報文交互過程。

dhcp如何分配一個ip(37張圖詳解DHCP)32

在 RT1 的 G0/0/0 抓包,查看 DHCP Server 和 DHCP Relay 的報文交互過程。

dhcp如何分配一個ip(37張圖詳解DHCP)33

DHCP 報文格式

如果想要更深入的了解 DHCP 協議,那就要看它的報文格式。DHCP 設備通過識别報文内容,實現協議功能。

dhcp如何分配一個ip(37張圖詳解DHCP)34

  • op(操作類型):表示報文的格式。當值為 1 時,表示客戶端的請求報文;當值為 2 時,表示服務器的響應報文。
  • htype(硬件類型):不同的硬件類型取不同的值,最常見的以太網,值是 1 。
  • hlen(硬件地址長度):表示硬件地址長度,以太網的值是 6 ,也就是 MAC 地址的長度。
  • hops(跳數):DHCP 報文經過的 DHCP 中繼的數量。
  • xid(交互 ID ):DHCP 客戶端取的随機值,收到 DHCP 服務器的響應報文時,查看 xid 值是否相同,來判斷報文是否是發送給自己的。
  • secs(客戶端啟動秒數):記錄 IP 地址的使用時間。
  • flags(标志):廣播響應标志位,當值為 0 時,表示服務器以單播形式發送響應報文;當值為 1 時,服務器以廣播形式發送響應報文。
  • ciaddr(客戶端 IP 地址):客戶端的 IP 地址,可以是分配的地址,也可以是正在使用的地址,還可以是的 0.0.0.0 。0.0.0.0 是客戶端初始狀态沒有地址的時候,僅用于臨時通信,不是有效的地址。
  • yiaddr(你的 IP 地址):當服務器發送響應報文時,将分配給客戶端的 IP 地址填入這個字段。
  • siaddr(服務器 IP 地址):用來标識服務器的 IP 地址。
  • giaddr(中繼設備 IP 地址):表示 DHCP 中繼的 IP 地址,服務器通過識别這個字段來判斷出客戶端的網段地址,從而選擇合适的地址池,為客戶端分配該網段的 IP 地址。
  • chaddr(客戶端硬件地址):用來标識客戶端的硬件地址,當客戶端發送廣播發現報文時,這個字段就是自己的硬件地址。
  • sname(服務器名):可選項,DHCP 服務器填寫這個字段。
  • file(引導文件名):可選項,DHCP 服務器填寫這個字段。
  • options(可選項):可選項,DHCP 客戶端獲取網絡參數,DHCP 服務器提供網絡參數,都是使用的這個字段。内容有很多,例如:租期、子網掩碼、默認網關地址、DNS 服務器地址等。

拿着 DHCP 報文格式,就可以看懂抓包獲取的報文内容。

DHCP Discover 報文

dhcp如何分配一個ip(37張圖詳解DHCP)35

DHCP Offer 報文

dhcp如何分配一個ip(37張圖詳解DHCP)36

DHCP Request 報文

dhcp如何分配一個ip(37張圖詳解DHCP)37

DHCP Ack 報文

dhcp如何分配一個ip(37張圖詳解DHCP)38

飲水思源:

HCNA網絡技術學習指南 - 華為技術有限公司

路由交換技術 - 杭州華三通信技術有限公司

TCP/IP詳解 卷1:協議 - Kevin R.Fall

高級網絡技術 - 田果

圖解TCP/IP - 竹下隆史

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2026 - www.tftnews.com All Rights Reserved