本發(fā)明涉及計(jì)算機(jī)網(wǎng)絡(luò)通信領(lǐng)域,尤其涉及一種IP地址配置方法。
背景技術(shù):
IP(Internet Protocol)意為網(wǎng)絡(luò)之間互連的協(xié)議,是為計(jì)算機(jī)網(wǎng)絡(luò)相互連接進(jìn)行通信而設(shè)計(jì)的協(xié)議,它使連接到因特網(wǎng)中的所有計(jì)算機(jī)網(wǎng)絡(luò)實(shí)現(xiàn)相互通信,規(guī)定了計(jì)算機(jī)在因特網(wǎng)上進(jìn)行通信時(shí)應(yīng)當(dāng)遵守的規(guī)則。任何廠家生產(chǎn)的計(jì)算機(jī)系統(tǒng),只要遵守IP協(xié)議就可以與因特網(wǎng)互連互通。因?yàn)橛辛薎P協(xié)議,因特網(wǎng)迅速發(fā)展成為世界上最大的、開(kāi)放的計(jì)算機(jī)通信網(wǎng)絡(luò)。因此,IP協(xié)議也可以叫做“因特網(wǎng)協(xié)議”。
IP地址(Internet Protocol Address)是指互聯(lián)網(wǎng)協(xié)議地址。IP地址是IP協(xié)議提供的一種統(tǒng)一的地址格式,它為互聯(lián)網(wǎng)上的每一臺(tái)主機(jī)分配一個(gè)唯一的邏輯地址,IP協(xié)議就是使用這個(gè)地址在主機(jī)之間傳遞信息,這是Internet能夠運(yùn)行的基礎(chǔ)。由于有這種唯一的地址,保證了用戶(hù)在連接互聯(lián)網(wǎng)的計(jì)算機(jī)上操作時(shí),能夠高效而且方便地從千千萬(wàn)萬(wàn)臺(tái)計(jì)算機(jī)中選出自己所需的對(duì)象來(lái)。
根據(jù)IP地址分配的方式不同,可分為靜態(tài)分配IP地址和動(dòng)態(tài)分配IP地址。靜態(tài)分配IP地址是指給每一臺(tái)計(jì)算機(jī)都分配一個(gè)固定的IP地址,每次都用同一個(gè)地址。動(dòng)態(tài)分配IP地址指的是在需要的時(shí)候才進(jìn)行IP地址分配的方式,每一次上網(wǎng)時(shí),會(huì)隨機(jī)分配一個(gè)IP地址。目前常用的方式是通過(guò)動(dòng)態(tài)主機(jī)配置協(xié)議(DHCP,Dynamic Host Configuration Protocol)給客戶(hù)端自動(dòng)分配一個(gè)動(dòng)態(tài)IP地址。DHCP是一個(gè)局域網(wǎng)的網(wǎng)絡(luò)協(xié)議,使用UDP協(xié)議工作,通常被應(yīng)用在大型的局域網(wǎng)絡(luò)環(huán)境中,主要作用是集中的管理、分配IP地址,使網(wǎng)絡(luò)環(huán)境中的主機(jī)動(dòng)態(tài)的獲得IP地址、Gateway地址、DNS服務(wù)器地址等信息,并能夠提升地址的使用率。DHCP協(xié)議采用客戶(hù)端/服務(wù)器模型,主機(jī)地址的動(dòng)態(tài)分配任務(wù)由網(wǎng)絡(luò)主機(jī)驅(qū)動(dòng)。當(dāng)DHCP服務(wù)器接收到來(lái)自網(wǎng)絡(luò)主機(jī)申請(qǐng)地址的信息時(shí),才會(huì)向網(wǎng)絡(luò)主機(jī)發(fā)送相關(guān)的地址配置等信息,以實(shí)現(xiàn)網(wǎng)絡(luò)主機(jī)地址信息的動(dòng)態(tài)配置。
在實(shí)際應(yīng)用時(shí),當(dāng)在局域網(wǎng)中靜態(tài)分配IP地址和動(dòng)態(tài)分配IP地址同時(shí)并存時(shí),經(jīng)常會(huì)發(fā)生所設(shè)置的靜態(tài)IP地址與局域網(wǎng)中已有的IP地址沖突的情況。IP地址沖突會(huì)造成網(wǎng)絡(luò)中斷,嚴(yán)重影響網(wǎng)絡(luò)的正常使用。目前常用的解決IP地址沖突的辦法是在終端側(cè)做檢測(cè),檢測(cè)到IP地址沖突后,需要用戶(hù)手動(dòng)查看已分配的IP地址,然后找到未被分配的IP地址并將其設(shè)置為本終端IP地址,這種方法需要人工逐一查找并設(shè)置,效率低下。
基于上述缺點(diǎn),迫切需要一種新的IP地址分配方法,即能高效的檢測(cè)IP地址是否沖突,同時(shí)又能夠在發(fā)生IP地址沖突時(shí),高效的實(shí)現(xiàn)IP地址重設(shè)置。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明針對(duì)現(xiàn)有技術(shù)中網(wǎng)絡(luò)系統(tǒng)IP地址沖突檢測(cè)及重配置方法存在的不足,公開(kāi)了一種IP地址配置方法,即能檢測(cè)IP地址是否沖突,同時(shí)又能夠在發(fā)生IP地址沖突時(shí),高效的實(shí)現(xiàn)IP地址重設(shè)置。
本發(fā)明公開(kāi)的一種IP地址配置方法,應(yīng)用于路由器嵌入式linux系統(tǒng)中,嵌入式linux系統(tǒng)設(shè)有一數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)當(dāng)前局域網(wǎng)絡(luò)中已經(jīng)使用的IP地址,還包括如下步驟:
當(dāng)終端通過(guò)路由器收發(fā)數(shù)據(jù)包時(shí),解析該終端的IP地址,并與數(shù)據(jù)結(jié)構(gòu)中的IP地址進(jìn)行比較,如果比較的結(jié)果顯示該終端的IP地址已被使用,則為終端重新分配IP地址或提供可用IP地址供該終端重新配置。
根據(jù)本發(fā)明的一優(yōu)選實(shí)施例,存儲(chǔ)當(dāng)前局域網(wǎng)絡(luò)中已經(jīng)使用的IP地址的數(shù)據(jù)結(jié)構(gòu)中包含兩個(gè)字段:IP地址和MAC地址,且IP地址和MAC地址一一對(duì)應(yīng)。
根據(jù)本發(fā)明的一優(yōu)選實(shí)施例,數(shù)據(jù)包可包括DHCP數(shù)據(jù)包或者TCP、UDP數(shù)據(jù)包。
根據(jù)本發(fā)明的一優(yōu)選實(shí)施例,在路由器嵌入式linux系統(tǒng)內(nèi)核的netfilter防火墻包過(guò)濾模塊中注冊(cè)HOOK函數(shù),該HOOK函數(shù)注冊(cè)到NF_INET_PRE_ROUTING點(diǎn),負(fù)責(zé)抓取終端收發(fā)的數(shù)據(jù)包。
當(dāng)HOOK函數(shù)抓取到DHCP Offer數(shù)據(jù)包時(shí),判斷DHCP服務(wù)器分配給終端的IP地址是否已被使用;如果已被使用,則系統(tǒng)丟棄該Offer數(shù)據(jù)包,并反饋一個(gè)Decline數(shù)據(jù)包給DHCP服務(wù)器,DHCP服務(wù)器后續(xù)將為終端重新分配IP地址。
如果判斷DHCP服務(wù)器分配給終端的IP地址未被使用,則HOOK函數(shù)直接放行該Offer數(shù)據(jù)包給終端,同時(shí)將該IP地址存入數(shù)據(jù)結(jié)構(gòu)中。
根據(jù)本發(fā)明的一優(yōu)選實(shí)施例,HOOK函數(shù)具有一DHCP地址池全局變量,該HOOK函數(shù)運(yùn)行時(shí),首先會(huì)獲取路由器LAN端的DHCP地址池?cái)?shù)據(jù),并將DHCP地址池?cái)?shù)據(jù)存入該DHCP地址池全局變量中。
根據(jù)本發(fā)明的一優(yōu)選實(shí)施例,當(dāng)HOOK函數(shù)抓取到終端發(fā)送的TCP握手?jǐn)?shù)據(jù)包時(shí),判斷該終端的IP地址是否已被使用;如果已被使用,則系統(tǒng)模擬HTTP服務(wù)器發(fā)送TCP握手?jǐn)?shù)據(jù)包給終端,完成終端與HTTP服務(wù)器的TCP握手過(guò)程;當(dāng)該終端發(fā)送HTTP數(shù)據(jù)包訪(fǎng)問(wèn)網(wǎng)絡(luò)時(shí),路由器向終端提示該IP地址已被占用,并根據(jù)DHCP地址池全局變量?jī)?nèi)容提示當(dāng)前可用IP地址。
如果判斷該終端的IP地址未被使用,則系統(tǒng)放行該終端收發(fā)的數(shù)據(jù)包,同時(shí)將該IP地址存入數(shù)據(jù)結(jié)構(gòu)中。
根據(jù)本發(fā)明的一優(yōu)選實(shí)施例,當(dāng)HOOK函數(shù)抓取到終端發(fā)送的UDP數(shù)據(jù)包時(shí),判斷該終端的IP地址是否已被使用;如果已被使用,則系統(tǒng)向終端提示該IP地址已被占用,并根據(jù)DHCP地址池全局變量?jī)?nèi)容提示當(dāng)前可用IP地址。
如果判斷該終端的IP地址未被使用,則系統(tǒng)將放行該終端收發(fā)的數(shù)據(jù)包,同時(shí)將該IP地址存入數(shù)據(jù)結(jié)構(gòu)中。
通過(guò)以上解決方案,本發(fā)明具有以下有益效果:
通過(guò)在路由器的嵌入式linux系統(tǒng)中使用數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)當(dāng)前局域網(wǎng)絡(luò)中已經(jīng)使用的IP地址,并以此為對(duì)比的參考數(shù)據(jù),同時(shí)通過(guò)解析終端的數(shù)據(jù)包內(nèi)容提取終端IP地址,實(shí)現(xiàn)了在路由器側(cè)檢測(cè)終端IP地址是否沖突,提供了較高的運(yùn)行效率,避免了DHCP服務(wù)器分配與已有靜態(tài)IP地址相同的動(dòng)態(tài)IP地址,或不同終端使用相同的靜態(tài)IP地址。同時(shí),通過(guò)系統(tǒng)提示可用的IP地址,實(shí)現(xiàn)更加高效的IP地址重設(shè)置,減少人工對(duì)比查詢(xún)的工作量,提高IP地址重設(shè)效率。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹。顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明第一實(shí)施例的處理流程圖;
圖2是本發(fā)明第二實(shí)施例當(dāng)終端采用DHCP動(dòng)態(tài)IP分配方式時(shí)的處理流程圖;
圖3是本發(fā)明第二實(shí)施例當(dāng)終端采用靜態(tài)IP設(shè)置方式時(shí)收發(fā)TCP數(shù)據(jù)包的處理流程圖。
圖4是本發(fā)明第二實(shí)施例當(dāng)終端采用靜態(tài)IP設(shè)置方式時(shí)收發(fā)UDP數(shù)據(jù)包的處理流程圖。
具體實(shí)施方式
下面結(jié)合附圖對(duì)本發(fā)明的優(yōu)選實(shí)施例進(jìn)行詳細(xì)闡述,以使本發(fā)明的優(yōu)點(diǎn)和特征能更易于被本領(lǐng)域技術(shù)人員理解,從而對(duì)本發(fā)明的保護(hù)范圍做出更為清楚明確的界定。顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的部分實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖,并獲得其他的實(shí)施方式。
為使圖面簡(jiǎn)潔,各圖中只示意性地表示出了與本發(fā)明相關(guān)的部分,它們并不代表其作為產(chǎn)品的實(shí)際流程或結(jié)構(gòu)。另外,以使圖面簡(jiǎn)潔便于理解,在有些圖中具有相同功能的部分,僅示意性地繪示了其中的部分流程或結(jié)構(gòu)示意,或僅標(biāo)出了其中的一個(gè)。在本文中,“一個(gè)”不僅表示“僅此一個(gè)”,也可以表示“多于一個(gè)”的情形。
本發(fā)明針對(duì)現(xiàn)有技術(shù)中網(wǎng)絡(luò)系統(tǒng)IP地址沖突檢測(cè)及重配置方法存在的不足,公開(kāi)了一種IP地址配置方法,即能檢測(cè)IP地址是否沖突,同時(shí)又能夠在發(fā)生IP地址沖突時(shí),高效的實(shí)現(xiàn)IP地址重設(shè)置。
本發(fā)明適用于計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)領(lǐng)域,可廣泛應(yīng)用于各網(wǎng)絡(luò)系統(tǒng)。
圖1為本發(fā)明第一實(shí)施例的流程圖。如圖1所示,本發(fā)明提出的一種IP地址配置方法,應(yīng)用于路由器嵌入式linux系統(tǒng)中,嵌入式linux系統(tǒng)設(shè)有一數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)當(dāng)前局域網(wǎng)絡(luò)中已經(jīng)使用的IP地址,還包括如下步驟:
當(dāng)終端通過(guò)路由器收發(fā)數(shù)據(jù)包時(shí),解析該終端的IP地址,并與數(shù)據(jù)結(jié)構(gòu)中的IP地址進(jìn)行比較,如果比較的結(jié)果顯示該終端的IP地址已被使用,則為終端重新分配IP地址或提供可用IP地址供該終端重新配置。
進(jìn)一步的,如果比較的結(jié)果顯示該終端的IP地址未被使用,則將該IP地址存入數(shù)據(jù)結(jié)構(gòu)中。
較優(yōu)的,存儲(chǔ)當(dāng)前局域網(wǎng)絡(luò)中已經(jīng)使用的IP地址的數(shù)據(jù)結(jié)構(gòu)中包含兩個(gè)字段:IP地址和MAC地址,且IP地址和MAC地址一一對(duì)應(yīng),以此記錄所有網(wǎng)絡(luò)中已使用的IP地址及該IP地址對(duì)應(yīng)的終端MAC地址。
進(jìn)一步的,終端通過(guò)路由器收發(fā)的數(shù)據(jù)包可以是DHCP數(shù)據(jù)包或者TCP、UDP數(shù)據(jù)包,當(dāng)終端采用DHCP服務(wù)器動(dòng)態(tài)分配IP地址的方式時(shí),終端會(huì)與DHCP服務(wù)器之間交互收發(fā)DHCP數(shù)據(jù)包,以獲得分配的動(dòng)態(tài)IP地址;當(dāng)終端采用靜態(tài)配置IP的方式時(shí),終端在訪(fǎng)問(wèn)互聯(lián)網(wǎng)時(shí)會(huì)與HTTP服務(wù)器進(jìn)行TCP連接的建立,收發(fā)TCP數(shù)據(jù)包,或者直接向HTTP服務(wù)器發(fā)送UDP數(shù)據(jù)包。
依據(jù)圖2-圖4,提出本發(fā)明第二實(shí)施例。本發(fā)明第二實(shí)施例在路由器嵌入式linux系統(tǒng)內(nèi)核的netfilter防火墻包過(guò)濾模塊中注冊(cè)了HOOK函數(shù),負(fù)責(zé)抓取終端收發(fā)的各指定類(lèi)型的數(shù)據(jù)包。該HOOK函數(shù)注冊(cè)到位于數(shù)據(jù)包路由選擇前的NF_INET_PRE_ROUTING點(diǎn),系統(tǒng)根據(jù)HOOK函數(shù)抓取到的數(shù)據(jù)內(nèi)容,解析出終端IP地址,并將解析出的終端IP地址與數(shù)據(jù)結(jié)構(gòu)中的IP地址進(jìn)行比較,如果比較的結(jié)果顯示該終端的IP地址已被使用,則為終端重新分配IP地址或提供可用IP地址供該終端重新配置。
圖2為當(dāng)終端采用DHCP動(dòng)態(tài)IP分配方式時(shí)的處理流程圖,如圖2所示,當(dāng)終端采用DHCP服務(wù)器動(dòng)態(tài)分配IP地址的方式時(shí),終端與DHCP服務(wù)器之間交互收發(fā)DHCP數(shù)據(jù)包,以獲得分配的動(dòng)態(tài)IP地址。HOOK函數(shù)通過(guò)對(duì)DHCPOffer數(shù)據(jù)包的解析來(lái)完成對(duì)IP地址沖突的檢測(cè)及處理。
具體的,HOOK函數(shù)具有一DHCP地址池全局變量,當(dāng)路由器啟動(dòng)后,HOOK函數(shù)首先會(huì)獲取路由器LAN端的DHCP地址池?cái)?shù)據(jù),并將獲取到的地址池?cái)?shù)據(jù)存入該DHCP地址池全局變量中。同時(shí),創(chuàng)建一個(gè)數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)包含兩個(gè)字段:MAC地址和IP地址,其中MAC地址和IP地址一一對(duì)應(yīng)。該數(shù)據(jù)結(jié)構(gòu)命名為IP地址表白名單,該白名單存儲(chǔ)當(dāng)前網(wǎng)絡(luò)中已經(jīng)使用的IP地址。
進(jìn)一步的,當(dāng)終端向DHCP服務(wù)器申請(qǐng)動(dòng)態(tài)IP地址時(shí),DHCP服務(wù)器會(huì)響應(yīng)DHCPOffer數(shù)據(jù)包,HOOK函數(shù)抓取到DHCPOffer數(shù)據(jù)包后,系統(tǒng)解析出DHCP服務(wù)器分配給終端的IP地址,并將該IP地址與IP地址表白名單中的IP地址進(jìn)行比較,如果比較的結(jié)果顯示該終端的IP地址已被使用,則系統(tǒng)丟棄該DHCP Offer數(shù)據(jù)包,同時(shí)反饋一個(gè)Decline數(shù)據(jù)包給DHCP服務(wù)器;終端在未收到DHCP Offer數(shù)據(jù)包的情況下,會(huì)重新向DHCP服務(wù)器申請(qǐng)動(dòng)態(tài)IP地址,DHCP服務(wù)器將再次為終端分配新的IP地址。
進(jìn)一步的,如果系統(tǒng)通過(guò)比較判斷出DHCP服務(wù)器分配給終端的IP地址未被使用,則HOOK函數(shù)將該IP地址存入IP地址表白名單中,同時(shí)直接放行該Offer數(shù)據(jù)包給終端,后續(xù)不在攔截處理該終端的相關(guān)數(shù)據(jù)。
圖3為當(dāng)終端采用靜態(tài)IP設(shè)置方式時(shí)收發(fā)TCP數(shù)據(jù)包的處理流程圖,如圖3所示,當(dāng)終端采用靜態(tài)配置IP的方式時(shí),在終端配置靜態(tài)IP地址時(shí)系統(tǒng)不做IP沖突檢測(cè),只有當(dāng)終端在訪(fǎng)問(wèn)互聯(lián)網(wǎng)時(shí),即與HTTP服務(wù)器進(jìn)行TCP連接的建立,收發(fā)TCP數(shù)據(jù)包或者直接向HTTP服務(wù)器發(fā)送UDP數(shù)據(jù)包時(shí),路由器進(jìn)行IP沖突檢測(cè)及處理。
具體的,當(dāng)HOOK函數(shù)抓取到終端發(fā)送的TCP握手?jǐn)?shù)據(jù)包時(shí),系統(tǒng)解析出終端的IP地址,并將該IP地址與IP地址表白名單中的IP地址進(jìn)行比較,如果比較的結(jié)果顯示該終端的IP地址已被使用,則系統(tǒng)模擬HTTP服務(wù)器向終端發(fā)送TCP握手?jǐn)?shù)據(jù)包,完成終端與HTTP服務(wù)器的TCP握手過(guò)程;當(dāng)該終端繼續(xù)發(fā)送HTTP數(shù)據(jù)包訪(fǎng)問(wèn)網(wǎng)絡(luò)時(shí),路由器會(huì)將該HTTP數(shù)據(jù)包丟棄,同時(shí)通過(guò)網(wǎng)頁(yè)向終端提示該IP地址已被占用,并根據(jù)DHCP地址池全局變量?jī)?nèi)容提示當(dāng)前可用IP地址,供終端重新配置IP地址時(shí)進(jìn)行選擇。
進(jìn)一步的,如果系統(tǒng)通過(guò)比較判斷出該終端的IP地址未被使用,則系統(tǒng)將該IP地址存入IP地址表白名單中,同時(shí)直接放行該數(shù)據(jù)包,后續(xù)不在攔截處理該終端的相關(guān)數(shù)據(jù)。
進(jìn)一步的,圖4為當(dāng)終端采用靜態(tài)IP設(shè)置方式時(shí)收發(fā)TCP數(shù)據(jù)包的處理流程圖。如圖4所示,當(dāng)HOOK函數(shù)抓取到終端發(fā)送的UDP數(shù)據(jù)包時(shí),系統(tǒng)解析出終端的IP地址,并將該IP地址與IP地址表白名單中的IP地址進(jìn)行比較,如果比較的結(jié)果顯示該終端的IP地址已被使用,路由器會(huì)將該UDP數(shù)據(jù)包丟棄,同時(shí)通過(guò)網(wǎng)頁(yè)向終端提示該IP地址已被占用,并根據(jù)DHCP地址池全局變量?jī)?nèi)容提示當(dāng)前可用IP地址,供終端重新配置IP地址時(shí)進(jìn)行選擇。
進(jìn)一步的,如果系統(tǒng)通過(guò)比較判斷出該終端的IP地址未被使用,則系統(tǒng)將該IP地址存入IP地址表白名單中,同時(shí)直接放行該數(shù)據(jù)包,后續(xù)不在攔截處理該終端的相關(guān)數(shù)據(jù)。
進(jìn)一步的,當(dāng)終端斷開(kāi)網(wǎng)絡(luò)時(shí)候,系統(tǒng)收到終端離開(kāi)消息會(huì)將該終端對(duì)應(yīng)的MAC地址和IP地址從IP地址表白名單中清除。
以上,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何不經(jīng)過(guò)創(chuàng)造性勞動(dòng)想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求書(shū)所限定的保護(hù)范圍為準(zhǔn)。