• 正文
    • 一、DHCP 是什么?
    • 二、DHCP 的工作流程
    • 三、在嵌入式開發(fā)中使用 DHCP
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

嵌入式設(shè)備聯(lián)網(wǎng)的 “捷徑” ——DHCP 詳解

04/22 10:40
547
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

大家好,我是雜燴君。之前我們分享的:嵌入式Linux設(shè)備開啟無線AP/無線接入點中有用到udhcpd

udhcpd?是一個輕量級的 DHCP (Dynamic Host Configuration Protocol,動態(tài)主機配置協(xié)議服務(wù)器實現(xiàn)。通常用于資源受限的嵌入式系統(tǒng)或小型網(wǎng)絡(luò)環(huán)境中。

它是 Universal DHCP Daemon 的縮寫,旨在為設(shè)備提供基本的 DHCP 服務(wù),具有占用資源少、配置簡單等特點。

本篇文章我們來分享DHCP的相關(guān)知識。

一、DHCP 是什么?

簡單來說,DHCP 就像網(wǎng)絡(luò)世界里的 “貼心管家”。

在一個復(fù)雜的網(wǎng)絡(luò)環(huán)境中,比如智能家居系統(tǒng),有大量設(shè)備需要接入網(wǎng)絡(luò)。每個設(shè)備要正常聯(lián)網(wǎng),都得有個獨一無二的 IP 地址,就好比每棟房子都要有唯一的門牌號,這樣數(shù)據(jù)才能準(zhǔn)確送達。

DHCP 的職責(zé),就是自動給這些設(shè)備分配 IP 地址,同時提供子網(wǎng)掩碼、默認(rèn)網(wǎng)關(guān)、DNS 服務(wù)器地址等關(guān)鍵網(wǎng)絡(luò)配置信息,讓設(shè)備能迅速、無誤地接入網(wǎng)絡(luò),無需人工干預(yù)。減少人為錯誤,還能靈活應(yīng)對設(shè)備移動、網(wǎng)絡(luò)擴展等變化。

二、DHCP 的工作流程

DHCP 的工作流程可分為四個關(guān)鍵階段:發(fā)現(xiàn)(Discover)、提供(Offer)、請求(Request)確認(rèn)(Ack)。

假設(shè)智能部署了大量嵌入式設(shè)備,用于生產(chǎn)監(jiān)控、設(shè)備控制等?,F(xiàn)在,新一批智能傳感器到貨,需要接入工廠的局域網(wǎng)。工廠網(wǎng)絡(luò)中有一臺 DHCP 服務(wù)器,負(fù)責(zé)為所有設(shè)備分配網(wǎng)絡(luò)配置。

1. 發(fā)現(xiàn)階段(Discover)

當(dāng)新的智能傳感器首次接入工廠網(wǎng)絡(luò),它對網(wǎng)絡(luò)環(huán)境一無所知,不知道 DHCP 服務(wù)器在哪。

于是,傳感器會在網(wǎng)絡(luò)中發(fā)送一個特殊的廣播包,這個包就像在大聲呼喊:“有沒有 DHCP 服務(wù)器呀?我需要上網(wǎng),請給我分配網(wǎng)絡(luò)配置!”

廣播包的目的 IP 地址是 255.255.255.255,這意味著網(wǎng)絡(luò)中的所有設(shè)備都能收到,但只有 DHCP 服務(wù)器會響應(yīng)。

2. 提供階段(Offer)

工廠網(wǎng)絡(luò)中的 DHCP 服務(wù)器收到傳感器的 Discover 包后,會從預(yù)先設(shè)定的 IP 地址池中挑選一個尚未分配的 IP 地址,然后向傳感器發(fā)送一個 Offer 包。

這個 Offer 包就像 DHCP 服務(wù)器在回應(yīng):“我這兒有個 IP 地址,給你用吧,還有配套的網(wǎng)絡(luò)配置信息?!?/p>

Offer 包中除了分配的 IP 地址,還包含子網(wǎng)掩碼、默認(rèn)網(wǎng)關(guān)、DNS 服務(wù)器地址等。同時,DHCP 服務(wù)器會在內(nèi)部記錄中標(biāo)記這個 IP 地址已預(yù)分配給該傳感器。

3. 請求階段(Request)

智能傳感器可能會收到多個 DHCP 服務(wù)器的 Offer 包(雖然在工廠這種單一網(wǎng)絡(luò)環(huán)境中不太常見,但在復(fù)雜網(wǎng)絡(luò)中可能發(fā)生)。

不管收到幾個,傳感器只會選擇其中一個 Offer 包,并向?qū)?yīng)的 DHCP 服務(wù)器發(fā)送一個 Request 包,意思是:“我就要你給的這個 IP 地址啦!” 這個 Request 包同樣是廣播包,目的是通知網(wǎng)絡(luò)中的其他 DHCP 服務(wù)器,自己已選定 IP 地址,其他服務(wù)器可收回它們提供的地址。

4. 確認(rèn)階段(Ack)

DHCP 服務(wù)器收到傳感器的 Request 包后,會發(fā)送一個 Ack 包給傳感器,相當(dāng)于回應(yīng):“好的,這個 IP 地址歸你用了,配置信息確認(rèn)無誤?!盇ck 包再次包含完整的網(wǎng)絡(luò)配置信息,確認(rèn)傳感器可使用該 IP 地址。此時,傳感器成功獲取 IP 地址和其他配置,能正常接入工廠網(wǎng)絡(luò),開始數(shù)據(jù)采集和傳輸工作。

三、在嵌入式開發(fā)中使用 DHCP

在基于 Linux 的嵌入式開發(fā)中,使用 DHCP 同樣能極大簡化設(shè)備的網(wǎng)絡(luò)配置流程。我們可以通過udhcpd來實現(xiàn) DHCP 功能。

udhcpd的配置文件可參考udhcpd源碼下的udhcpd.conf:

我們只保留如下內(nèi)容:

# The start?and?end of the IP lease block
start ? ? ? ? ??192.168.3.2
end ? ? ? ? ? ??192.168.3.254

# The interface that udhcpd will use
interface ? ? ? wlan0

opt ? ? dns ? ??114.114.114.114
option ?subnet ?255.255.255.0
opt ? ? router ?192.168.3.1
option ?domain ?local
option ?lease ??864000? ? ?#?10?days of seconds

該文件主要配置了:

    所能分配的IP地址的范圍為:192.168.3.2~192.168.3.254網(wǎng)卡接口:wlan0網(wǎng)關(guān)地址:192.168.3.1

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄

本公眾號專注于嵌入式技術(shù),包括但不限于C/C++、嵌入式、物聯(lián)網(wǎng)、Linux等編程學(xué)習(xí)筆記,同時,公眾號內(nèi)包含大量的學(xué)習(xí)資源。歡迎關(guān)注,一同交流學(xué)習(xí),共同進步!