新聞中心
### 探究linux DHCP代碼的奧秘

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專(zhuān)注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、重慶小程序開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了開(kāi)封免費(fèi)建站歡迎大家使用!
`Linux DHCP`(動(dòng)態(tài)主機(jī)配置協(xié)議)協(xié)議是Linux系統(tǒng)與互聯(lián)網(wǎng)連接必不可少的一環(huán),它主要負(fù)責(zé)網(wǎng)絡(luò)分配IP地址、網(wǎng)關(guān)地址等,使我們?cè)诨ヂ?lián)網(wǎng)自由訪問(wèn)資源。它的實(shí)現(xiàn)主要依靠`DHCP Client`與`DHCP Server`之間的關(guān)聯(lián)來(lái)實(shí)現(xiàn),那么有關(guān)它的代碼奧秘到底是什么呢?
首先先介紹一下Linux DHCP的原理。`DHCP Client`在請(qǐng)求連接網(wǎng)絡(luò)時(shí),向本地網(wǎng)絡(luò)發(fā)出`DCHP Discover`(發(fā)現(xiàn))報(bào)文,在網(wǎng)絡(luò)中,這個(gè)報(bào)文由`DHCP Server`接收,并返回`DHCP Offers`(發(fā)型)報(bào)文,告訴`DHCP Client`可使用的`IP range`,`DHCP Client`選擇其中一組`IP`然后再發(fā)出`DHCP Request`(請(qǐng)求)報(bào)文,最后`DHCP Server`收到報(bào)文后就會(huì)分配一個(gè)地址,并返回一個(gè)`DHCP Acknowledge`(確認(rèn))報(bào)文給`DHCP Client`表示IP已經(jīng)生效,最后客戶端就可以正常使用此地址建立網(wǎng)絡(luò)連接了。
現(xiàn)在我們來(lái)看看DHCP的C程序?qū)崿F(xiàn)例子,下面這段代碼可以實(shí)現(xiàn)分配IP給一臺(tái)客戶端:
“`C
#include
#include
#include
#include
#include
#include
#include
int main(int argc, char **argv)
{
//創(chuàng)建一個(gè)UDP socket
int DHCP_sock = socket(AF_INET, SOCK_DGRAM, 0);
//設(shè)置socket選項(xiàng) SO_BROADCAST
int optval = 1;
setsockopt(DHCP_sock, SOL_SOCKET, SO_BROADCAST,
&optval, sizeof(optval));
//填充服務(wù)端地址
struct sockaddr_in server;
server.sin_family = AF_INET;
server.sin_port = htons(67);
server.sin_addr.s_addr = inet_addr(“255.255.255.255”);
//分配IP給用戶—發(fā)送offer報(bào)文
struct in_addr ip_addr;
sprintf(ip_addr.s_addr, “%s”, “172.20.18.20”);
sendto(DHCP_sock, (char*)&ip_addr, sizeof(struct in_addr) ,
0, (struct sockaddr *)&server, sizeof(server);
//接受客戶的Request報(bào)文,后期可以添加功能
//……
//發(fā)送確認(rèn)報(bào)文
sendto(DHCP_sock, “ack”, strlen(“ack”), 0,
(struct sockaddr *)&server, sizeof(server);
return 0;
}
從上面的代碼中可以看出,Linux DHCP的實(shí)現(xiàn)原理也就是生成`DHCP Discover`,`DHCP Offers`,`DHCP Request`和 `DHCP Acknowledgement`報(bào)文,然后分別發(fā)送給`DHCP Server`和`DHCP Client`,以完成IP地址的分配。
總的來(lái)說(shuō),`Linux DHCP`的代碼實(shí)現(xiàn)原理非常的簡(jiǎn)單,它的`客戶端`負(fù)責(zé)發(fā)送`DHCP Discover`并處理`DHCP Server`的`Offer`,而`DHCP Server`負(fù)責(zé)分配IP并發(fā)出`DHCP Acknowledge`,那么我們能根據(jù)上述原理將其實(shí)現(xiàn)出來(lái)。
成都創(chuàng)新互聯(lián)科技有限公司,是一家專(zhuān)注于互聯(lián)網(wǎng)、IDC服務(wù)、應(yīng)用軟件開(kāi)發(fā)、網(wǎng)站建設(shè)推廣的公司,為客戶提供互聯(lián)網(wǎng)基礎(chǔ)服務(wù)!
創(chuàng)新互聯(lián)(www.cdcxhl.com)提供簡(jiǎn)單好用,價(jià)格厚道的香港/美國(guó)云服務(wù)器和獨(dú)立服務(wù)器。創(chuàng)新互聯(lián)成都老牌IDC服務(wù)商,專(zhuān)注四川成都IDC機(jī)房服務(wù)器托管/機(jī)柜租用。為您精選優(yōu)質(zhì)idc數(shù)據(jù)中心機(jī)房租用、服務(wù)器托管、機(jī)柜租賃、大帶寬租用,可選線路電信、移動(dòng)、聯(lián)通等。
當(dāng)前文章:探究LinuxDHCP代碼的奧秘(linuxdhcp代碼)
瀏覽路徑:http://fisionsoft.com.cn/article/djiiihe.html


咨詢(xún)
建站咨詢(xún)
