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

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

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

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

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

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

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

一、DHCP 是什么?

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

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

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

二、DHCP 的工作流程

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

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

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

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

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

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

2. 提供階段(Offer)

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

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

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

3. 請(qǐng)求階段(Request)

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

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

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

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

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

在基于 Linux 的嵌入式開(kāi)發(fā)中,使用 DHCP 同樣能極大簡(jiǎn)化設(shè)備的網(wǎng)絡(luò)配置流程。我們可以通過(guò)udhcpd來(lái)實(shí)現(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è)計(jì)資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫(xiě)文章/發(fā)需求
立即登錄

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