tft每日頭條

 > 生活

 > dhcp如何分配一個ip

dhcp如何分配一個ip

生活 更新时间:2024-11-25 15:47:08

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 簡稱 小 SDHCP 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 DiscoverDHCP OfferDHCP RequestDHCP AckDHCP Release ,用得少的 3 種報文類型有:DHCP NakDHCP DeclineDHCP 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-2024 - www.tftnews.com All Rights Reserved