網(wǎng)絡(luò)地址轉(zhuǎn)換端口分配方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種網(wǎng)絡(luò)地址轉(zhuǎn)換端口分配方法及系統(tǒng);其方法包括:創(chuàng)建第一端口池緩存區(qū)、第二端口池緩存區(qū)、第一任務(wù)、第二任務(wù);第一任務(wù)從第一端口池緩存區(qū)調(diào)度可用端口資源分配給內(nèi)網(wǎng)用戶;第二任務(wù)調(diào)度內(nèi)網(wǎng)用戶釋放的端口資源存儲(chǔ)到第二端口池緩存區(qū)。本發(fā)明的有益效果是:本發(fā)明的網(wǎng)絡(luò)地址轉(zhuǎn)換端口分配方法及系統(tǒng),通過建立雙端口池緩存區(qū)與雙任務(wù)進(jìn)行循環(huán)操作,兩個(gè)任務(wù)互不干擾的進(jìn)行端口資源調(diào)度,實(shí)現(xiàn)對(duì)端口資源的高效分配與回收,提升了NAT服務(wù)器的性能。
【專利說明】網(wǎng)絡(luò)地址轉(zhuǎn)換端口分配方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于數(shù)據(jù)通信【技術(shù)領(lǐng)域】,尤其涉及一種網(wǎng)絡(luò)地址轉(zhuǎn)換端口分配方法及系統(tǒng)。
【背景技術(shù)】
[0002]NAT (Network Address Translat1n,網(wǎng)絡(luò)地址轉(zhuǎn)換)是1994年提出的用于在專用網(wǎng)內(nèi)部的主機(jī)分配到了本地IP地址(即僅在本專用網(wǎng)內(nèi)使用的專用地址)后又與因特網(wǎng)上的主機(jī)通信(并不需要加密)的一種方法。這種方法需要在專用網(wǎng)連接到因特網(wǎng)的路由器上安裝NAT軟件。裝有NAT軟件的路由器叫做NAT路由器,它至少有一個(gè)有效的外部全球IP地址。這樣,所有使用本地地址的主機(jī)在和外界通信時(shí),都要在NAT路由器上將其本地地址轉(zhuǎn)換成全球IP地址,才能和因特網(wǎng)連接。另外,這種通過使用少量的公有IP地址代表較多的私有IP地址的方式,將有助于減緩可用的IP地址空間的枯竭。NAT不僅能解決了 IP地址不足的問題,而且還能夠有效地避免來自網(wǎng)絡(luò)外部的攻擊,隱藏并保護(hù)網(wǎng)絡(luò)內(nèi)部的計(jì)算機(jī)。NAT的實(shí)現(xiàn)方式有三種,S卩靜態(tài)轉(zhuǎn)換Static Nat、動(dòng)態(tài)轉(zhuǎn)換Dynamic Nat和端口多路復(fù)用OverLoad。靜態(tài)轉(zhuǎn)換是指將內(nèi)部網(wǎng)絡(luò)的私有IP地址轉(zhuǎn)換為公有IP地址,IP地址對(duì)是一對(duì)一的,是一成不變的,某個(gè)私有IP地址只轉(zhuǎn)換為某個(gè)公有IP地址。借助于靜態(tài)轉(zhuǎn)換,可以實(shí)現(xiàn)外部網(wǎng)絡(luò)對(duì)內(nèi)部網(wǎng)絡(luò)中某些特定設(shè)備(如服務(wù)器)的訪問。動(dòng)態(tài)轉(zhuǎn)換是指將內(nèi)部網(wǎng)絡(luò)的私有IP地址轉(zhuǎn)換為公用IP地址時(shí),IP地址是不確定的,是隨機(jī)的,所有被授權(quán)訪問上Internet的私有IP地址可隨機(jī)轉(zhuǎn)換為任何指定的合法IP地址。也就是說,只要指定哪些內(nèi)部地址可以進(jìn)行轉(zhuǎn)換,以及用哪些合法地址作為外部地址時(shí),就可以進(jìn)行動(dòng)態(tài)轉(zhuǎn)換。動(dòng)態(tài)轉(zhuǎn)換可以使用多個(gè)合法外部地址集。當(dāng)ISP提供的合法IP地址略少于網(wǎng)絡(luò)內(nèi)部的計(jì)算機(jī)數(shù)量時(shí)。可以采用動(dòng)態(tài)轉(zhuǎn)換的方式。端口多路復(fù)用(Port addressTranslat1n, PAT)是指改變外出數(shù)據(jù)包的源端口并進(jìn)行端口轉(zhuǎn)換,即端口地址轉(zhuǎn)換(PAT,Port Address Translat1n).采用端口多路復(fù)用方式。內(nèi)部網(wǎng)絡(luò)的所有主機(jī)均可共享一個(gè)合法外部IP地址實(shí)現(xiàn)對(duì)Internet的訪問,從而可以最大限度地節(jié)約IP地址資源。同時(shí),又可隱藏網(wǎng)絡(luò)內(nèi)部的所有主機(jī),有效避免來自internet的攻擊。因此,目前網(wǎng)絡(luò)中應(yīng)用最多的就是端口多路復(fù)用方式。NAT用于私網(wǎng)地址動(dòng)態(tài)轉(zhuǎn)換為公網(wǎng)地址時(shí),通常會(huì)將大量的私網(wǎng)地址轉(zhuǎn)換為一個(gè)或幾個(gè)公網(wǎng)地址,每一個(gè)私網(wǎng)用戶會(huì)分配到一個(gè)共用的公網(wǎng)地址及該地址下的一個(gè)端口號(hào),并通過該地址和端口號(hào)對(duì)公網(wǎng)進(jìn)行訪問,實(shí)現(xiàn)大量私網(wǎng)用戶對(duì)公網(wǎng)的訪問。NAT服務(wù)器在進(jìn)行端口分配時(shí),會(huì)采用五元組方式構(gòu)造映射關(guān)系,即源地址、源端口、目的地址、目的端口、協(xié)議號(hào)只要其中任何一個(gè)不同,就不會(huì)造成資源沖突。五元組方式構(gòu)造映射關(guān)系可以解決通常情況的資源沖突,但在某些比較極端的情況下,如常見的C/S模式的應(yīng)用中,服務(wù)器的地址和端口固定或相對(duì)集中,則私網(wǎng)用戶源端口、目的地址、目的端口、協(xié)議號(hào)均相同,此時(shí)一個(gè)端口對(duì)應(yīng)一個(gè)內(nèi)網(wǎng)地址,一個(gè)公網(wǎng)地址只有65535個(gè)端口,加之其中很多端口還要保留為特殊應(yīng)用,因此可以分配的數(shù)量非常有限,現(xiàn)有以下兩種技術(shù)來進(jìn)行端口資源的獲取:NAT服務(wù)器采用遍歷的方法來獲取端口,獲取后將端口標(biāo)志為已占用,此種方法會(huì)耗費(fèi)大量的時(shí)間來進(jìn)行遍歷,且內(nèi)網(wǎng)用戶越多,性能越差,會(huì)嚴(yán)重影響NAT服務(wù)器的性能。NAT服務(wù)器采用隨機(jī)查找的方法來獲取端口(CN200810239058.6[1]),該技術(shù)會(huì)出現(xiàn)一個(gè)命中率的問題,在內(nèi)網(wǎng)內(nèi)網(wǎng)用戶較多的情況下依然要多次查找才能實(shí)現(xiàn)命中,且無法分配所有端口,資源有限的情況下再次減少可用資源。
【發(fā)明內(nèi)容】
[0003]本發(fā)明的發(fā)明目的是:為了解決以上問題,本發(fā)明提出了一種網(wǎng)絡(luò)地址轉(zhuǎn)換端口分配方法及系統(tǒng),以期解決現(xiàn)有技術(shù)在某些條件下出現(xiàn)的端口映射性能下降和端口資源浪費(fèi)的問題。
[0004]本發(fā)明的技術(shù)方案是:一種網(wǎng)絡(luò)地址轉(zhuǎn)換端口分配方法,包括以下步驟:
[0005]A、創(chuàng)建用于存儲(chǔ)端口資源的第一端口池緩存區(qū)和第二端口池緩存區(qū),并創(chuàng)建用于調(diào)度可用端口資源的第一任務(wù)以及用于調(diào)度釋放的端口資源的第二任務(wù);
[0006]B、第一任務(wù)等待端口資源申請(qǐng),當(dāng)內(nèi)網(wǎng)用戶發(fā)出端口資源申請(qǐng)時(shí),第一任務(wù)從第一端口池緩存區(qū)中調(diào)度可用端口資源分配給內(nèi)網(wǎng)用戶;
[0007]C、第二任務(wù)等待端口資源釋放,當(dāng)內(nèi)網(wǎng)用戶使用完端口資源后釋放時(shí),第二任務(wù)調(diào)度釋放的端口資源存儲(chǔ)到第二端口池緩存區(qū)。
[0008]進(jìn)一步地,所述步驟B中第一任務(wù)從第一端口池緩存區(qū)中調(diào)度可用端口資源分配給內(nèi)網(wǎng)用戶,具體為:所述第一任務(wù)還包括指針成員Pa,所述指針成員Pa指向第一端口池緩存區(qū)中存儲(chǔ)的可用端口資源,所述第一任務(wù)調(diào)取指針成員Pa指向的可用端口資源分配給內(nèi)網(wǎng)用戶。
[0009]進(jìn)一步地,所述步驟B還包括以下步驟:
[0010]B1、第一任務(wù)為內(nèi)網(wǎng)用戶分配端口后,將指針成員Pa指向下一個(gè)可用端口資源,并判斷指針成員Pa指向的可用端口資源是否為空;若可用端口資源不為空,則第一任務(wù)繼續(xù)等待內(nèi)網(wǎng)用戶發(fā)出端口申請(qǐng);若可用端口資源為空,則繼續(xù)判斷第二端口池緩存區(qū)是否為空;若第二端口池緩存區(qū)不為空,則第一任務(wù)指針成員Pa與第二任務(wù)指針成員Pb進(jìn)行交換;若第二端口池緩存區(qū)為空,則第一任務(wù)忽略所有端口資源申請(qǐng),并等待第二任務(wù)發(fā)出通生口 ο
[0011]進(jìn)一步地,所述步驟C中第二任務(wù)調(diào)度釋放的端口資源存儲(chǔ)到第二端口池緩存區(qū),具體為:所述第二任務(wù)還包括指針成員Pb,所述第二任務(wù)調(diào)度釋放的端口資源存儲(chǔ)到第二端口池緩存區(qū),并將指針成員Pb指向第二端口池緩存區(qū)中存儲(chǔ)的端口資源。
[0012]進(jìn)一步地,所述步驟C還包括以下步驟:
[0013]Cl、第二任務(wù)調(diào)度釋放的端口資源存儲(chǔ)到第二端口池緩存區(qū)后,將指針成員Pb指向該端口資源,并判斷指針成員Pb指向的端口資源是否為空;若端口資源為空,則第二任務(wù)繼續(xù)等待內(nèi)網(wǎng)用戶釋放端口資源?’若端口資源不為空,則第二任務(wù)向第一任務(wù)發(fā)送通告并等待內(nèi)網(wǎng)用戶釋放端口資源。
[0014]進(jìn)一步地,所述第一任務(wù)與第二任務(wù)進(jìn)行交換具體為:第二任務(wù)調(diào)度釋放的端口資源存儲(chǔ)到第一端口池緩存區(qū),第一任務(wù)從第二端口池緩存區(qū)調(diào)度可用端口資源分配給內(nèi)網(wǎng)用戶。
[0015]進(jìn)一步地,所述第一端口池緩存區(qū)和第二端口池緩存區(qū)中存儲(chǔ)的端口資源都為鏈狀數(shù)據(jù)結(jié)構(gòu)。
[0016]本發(fā)明還提出了一種網(wǎng)絡(luò)地址轉(zhuǎn)換端口分配系統(tǒng),包括:創(chuàng)建模塊,判斷模塊和調(diào)度模塊;
[0017]所述創(chuàng)建模塊用于創(chuàng)建用于存儲(chǔ)端口資源的第一端口池緩存區(qū)和第二端口池緩存區(qū),并創(chuàng)建用于調(diào)度可用端口資源的第一任務(wù)以及用于調(diào)度釋放的端口資源的第二任務(wù);
[0018]所述判斷模塊用于在第一任務(wù)為內(nèi)網(wǎng)用戶分配端口后判斷第一端口池緩存區(qū)內(nèi)的端口資源是否為空及在第二任務(wù)調(diào)度釋放的端口資源后判斷第二端口池緩存區(qū)內(nèi)的端口資源是否為空;
[0019]所述調(diào)度模塊用于根據(jù)第一任務(wù)和第二任務(wù)調(diào)度端口資源。
[0020]進(jìn)一步地,所述第一任務(wù)還包括指針成員Pa,所述指針成員Pa指向第一端口池緩存區(qū)中存儲(chǔ)的可用端口資源,所述第一任務(wù)調(diào)取指針成員Pa指向的可用端口資源分配給內(nèi)網(wǎng)用戶。
[0021]進(jìn)一步地,所述第二任務(wù)還包括指針成員Pb,所述第二任務(wù)調(diào)度釋放的端口資源存儲(chǔ)到第二端口池緩存區(qū),并將指針成員Pb指向第二端口池緩存區(qū)中存儲(chǔ)的端口資源。
[0022]本發(fā)明的有益效果是:本發(fā)明的網(wǎng)絡(luò)地址轉(zhuǎn)換端口分配方法及系統(tǒng),通過建立雙端口池緩存區(qū)與雙任務(wù)進(jìn)行循環(huán)操作,兩個(gè)任務(wù)互不干擾的進(jìn)行端口資源調(diào)度,端口分配任務(wù)不會(huì)受端口回收任務(wù)的影響,分配過程中不會(huì)產(chǎn)生優(yōu)先級(jí)翻轉(zhuǎn),不會(huì)出現(xiàn)端口分配失敗的情況,也不會(huì)因?yàn)橛脩魯?shù)量的增加導(dǎo)致端口分配速率下降,實(shí)現(xiàn)對(duì)端口資源的高效分配與回收,提升了 NAT服務(wù)器的性能。
【專利附圖】
【附圖說明】
[0023]圖1是本發(fā)明的網(wǎng)絡(luò)地址轉(zhuǎn)換端口分配方法流程示意圖。
[0024]圖2是本發(fā)明實(shí)施例中步驟SI的示意圖。
[0025]圖3是本發(fā)明實(shí)施例中第一任務(wù)和第二任務(wù)分別調(diào)度端口資源的示意圖。
[0026]圖4是本發(fā)明實(shí)施例中第一任務(wù)與第二任務(wù)交換前的示意圖。
[0027]圖5是本發(fā)明實(shí)施例中第一任務(wù)與第二任務(wù)交換后的示意圖。
[0028]圖6是本發(fā)明的網(wǎng)絡(luò)地址轉(zhuǎn)換端口分配系統(tǒng)示意圖。
【具體實(shí)施方式】
[0029]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0030]如圖1所示,為本發(fā)明的網(wǎng)絡(luò)地址轉(zhuǎn)換端口分配方法流程示意圖。一種網(wǎng)絡(luò)地址轉(zhuǎn)換端口分配方法,包括以下步驟:
[0031]A、創(chuàng)建用于存儲(chǔ)端口資源的第一端口池緩存區(qū)和第二端口池緩存區(qū),并創(chuàng)建用于調(diào)度可用端口資源的第一任務(wù)以及用于調(diào)度釋放的端口資源的第二任務(wù);
[0032]B、第一任務(wù)等待端口資源申請(qǐng),當(dāng)內(nèi)網(wǎng)用戶發(fā)出端口資源申請(qǐng)時(shí),第一任務(wù)從第一端口池緩存區(qū)中調(diào)度可用端口資源分配給內(nèi)網(wǎng)用戶;
[0033]C、第二任務(wù)等待端口資源釋放,當(dāng)內(nèi)網(wǎng)用戶使用完端口資源后釋放時(shí),第二任務(wù)調(diào)度釋放的端口資源存儲(chǔ)到第二端口池緩存區(qū)。
[0034]其中,步驟B中第一任務(wù)從第一端口池緩存區(qū)中調(diào)度可用端口資源分配給內(nèi)網(wǎng)用戶,具體為:所述第一任務(wù)還包括指針成員Pa,所述指針成員Pa指向第一端口池緩存區(qū)中存儲(chǔ)的可用端口資源,所述第一任務(wù)調(diào)取指針成員Pa指向的可用端口資源分配給內(nèi)網(wǎng)用戶;
[0035]步驟C中第二任務(wù)調(diào)度釋放的端口資源存儲(chǔ)到第二端口池緩存區(qū),具體為:所述第二任務(wù)還包括指針成員Pb,所述第二任務(wù)調(diào)度釋放的端口資源存儲(chǔ)到第二端口池緩存區(qū),并將指針成員Pb指向第二端口池緩存區(qū)中存儲(chǔ)的端口資源。
[0036]步驟B中,當(dāng)任務(wù)的成員指針交換后,第一任務(wù)從第二端口池緩存區(qū)中調(diào)度可用端口資源分配給內(nèi)網(wǎng)用戶。步驟C中,當(dāng)任務(wù)交換后,第二任務(wù)從第一端口池緩存區(qū)中調(diào)度可用端口資源分配給內(nèi)網(wǎng)用戶。
[0037]本發(fā)明的網(wǎng)絡(luò)地址轉(zhuǎn)換端口分配方法及系統(tǒng),通過建立雙端口池緩存區(qū)與雙任務(wù)進(jìn)行循環(huán)操作,兩個(gè)任務(wù)互不干擾的進(jìn)行端口資源調(diào)度,端口分配任務(wù)不會(huì)受端口回收任務(wù)的影響,分配過程中不會(huì)產(chǎn)生優(yōu)先級(jí)翻轉(zhuǎn),不會(huì)出現(xiàn)端口分配失敗的情況,也不會(huì)因?yàn)橛脩魯?shù)量的增加導(dǎo)致端口分配速率下降,實(shí)現(xiàn)對(duì)端口資源的高效分配與回收,提升了 NAT服務(wù)器的性能。
[0038]在步驟A創(chuàng)建第一端口池緩存區(qū)、第二端口池緩存區(qū)、第一任務(wù)和第二任務(wù)中,本發(fā)明為了實(shí)現(xiàn)對(duì)端口資源進(jìn)行合理高效的分配,保障NAT服務(wù)器在各種情況下均能高效的進(jìn)行網(wǎng)絡(luò)地址轉(zhuǎn)換,使用戶充分高效的使用外網(wǎng)資源,創(chuàng)建第一端口池緩存區(qū)、第二端口池緩存區(qū)、第一任務(wù)和第二任務(wù)。第一端口池緩存區(qū)和第二端口池緩存區(qū)都為鏈狀數(shù)據(jù)結(jié)構(gòu),第一端口池緩存區(qū)及所述第二端口池緩存區(qū)都用于存儲(chǔ)端口資源;第一任務(wù)用于調(diào)度可用端口資源,它包括一個(gè)指針成員Pa,指針成員Pa用于指向第一端口池緩存區(qū)中存儲(chǔ)的可用端口資源;第二任務(wù)用于調(diào)度釋放的端口資源,它包括一個(gè)指針成員Pb,指針成員Pb用于指向第二端口池緩存區(qū)中存儲(chǔ)的端口資源。為了保證在不改變NAT協(xié)議規(guī)定的情況下,實(shí)現(xiàn)第一任務(wù)和第二任務(wù)分別對(duì)端口資源進(jìn)行調(diào)度時(shí),資源的調(diào)度不會(huì)受到釋放端口資源的干擾,本發(fā)明設(shè)定第一端口池緩存區(qū)為最大端口數(shù),設(shè)定第二端口池緩存區(qū)為空,設(shè)定第一任務(wù)的指針成員Pa指向第一端口池緩存區(qū)尾部的端口資源,設(shè)定第二任務(wù)的指針成員Pb指向第二端口池緩存區(qū)尾部的端口資源。
[0039]如圖2所示,為本發(fā)明實(shí)施例中步驟SI的示意圖。本發(fā)明實(shí)施例中設(shè)定第一端口池緩存區(qū)大小為0-65535,將序號(hào)O作為尾部,依次排列至65535 ;設(shè)定第二端口池緩存區(qū)為空(NULL);第一任務(wù)的指針成員Pa指向第一端口池緩存區(qū)中的端口資源O;第二任務(wù)的指針成員Pb指向?yàn)榭?。由于部分端口資源需要為特殊應(yīng)用進(jìn)行保留,本發(fā)明對(duì)第一端口池緩存區(qū)進(jìn)行設(shè)定時(shí)可以過濾掉保留端口資源,而將第一端口池緩存區(qū)設(shè)定為端口數(shù)。第一端口池緩存區(qū)的端口序列可以為有序序列,也可以為無序序列;第一端口池緩存區(qū)首尾端口的序號(hào)也可以對(duì)換。本發(fā)明實(shí)施例中設(shè)定第一任務(wù)的指針成員Pa指向第一端口池緩存區(qū)尾部,設(shè)定第二任務(wù)的指針成員Pb指向第二端口池緩存區(qū)尾部,第一任務(wù)的優(yōu)先級(jí)高于第二任務(wù)。根據(jù)本發(fā)明的網(wǎng)絡(luò)地址轉(zhuǎn)換端口分配方法的不用應(yīng)用需求,也可以設(shè)定第二任務(wù)的優(yōu)先級(jí)高于第一任務(wù)。
[0040]在步驟B第一任務(wù)等待端口資源申請(qǐng),當(dāng)內(nèi)網(wǎng)用戶發(fā)出端口資源申請(qǐng)時(shí),第一任務(wù)從第一端口池緩存區(qū)中調(diào)度可用端口資源分配給內(nèi)網(wǎng)用戶中,本發(fā)明當(dāng)沒有端口資源申請(qǐng)時(shí),第一任務(wù)處于等待端口資源申請(qǐng)狀態(tài)。當(dāng)內(nèi)網(wǎng)用戶發(fā)出端口資源申請(qǐng)時(shí),本發(fā)明的第一任務(wù)通過調(diào)用指針成員Pa從第一端口池緩存區(qū)中獲取端口資源,并將獲取得到的端口資源分配給內(nèi)網(wǎng)用戶;分配完成后,第一端口池緩存區(qū)將該端口資源從第一端口池緩存區(qū)中刪除,第一任務(wù)將指針成員Pa指向第一端口池緩存區(qū)中下一個(gè)端口資源。
[0041]如圖3所示,為本發(fā)明實(shí)施例中第一任務(wù)和第二任務(wù)分別調(diào)度端口資源的示意圖。本發(fā)明實(shí)施例中第一任務(wù)利用指針成員Pa按照從O到65535依次從第一端口池緩存區(qū)中調(diào)度端口資源,并根據(jù)內(nèi)網(wǎng)用戶發(fā)出的端口資源申請(qǐng),將端口資源201分配給內(nèi)網(wǎng)用戶;分配完成后,指針成員Pa指向端口資源200。
[0042]本發(fā)明的步驟B還包括以下步驟:
[0043]B1、第一任務(wù)為內(nèi)網(wǎng)用戶分配端口后,將指針成員Pa指向下一個(gè)可用端口資源,并判斷指針成員Pa指向的可用端口資源是否為空;若可用端口資源不為空,則第一任務(wù)繼續(xù)等待內(nèi)網(wǎng)用戶發(fā)出端口申請(qǐng);若可用端口資源為空,則繼續(xù)判斷第二端口池緩存區(qū)是否為空;若第二端口池緩存區(qū)不為空,則第一任務(wù)與第二任務(wù)進(jìn)行交換;若第二端口池緩存區(qū)為空,則第一任務(wù)忽略所有端口資源申請(qǐng),并等待第二任務(wù)發(fā)出通告。第一任務(wù)與第二任務(wù)進(jìn)行交換具體為:第二任務(wù)調(diào)度釋放的端口資源存儲(chǔ)到第一端口池緩存區(qū),并將指針成員Pb指向第一端口池緩存區(qū)中存儲(chǔ)的端口資源;第一任務(wù)從第二端口池緩存區(qū)調(diào)度可用端口資源分配給內(nèi)網(wǎng)用戶,將指針成員Pa指向下一個(gè)可用端口資源。如圖4所示,為本發(fā)明實(shí)施例中第一任務(wù)與第二任務(wù)交換前的示意圖。第一任務(wù)的指針成員Pa指向第一端口池緩存區(qū)中的端口資源為空,第二任務(wù)的指針成員Pb指向第二端口池緩存區(qū)中的端口資源不為空;如圖5所示,為本發(fā)明實(shí)施例中第一任務(wù)與第二任務(wù)交換后的示意圖,第一任務(wù)通過調(diào)用指針成員Pa從第二端口池緩存區(qū)中獲取端口資源,并將獲取得到的端口資源分配給內(nèi)網(wǎng)用戶,第二任務(wù)調(diào)度釋放的端口資源存儲(chǔ)到第一端口池緩存區(qū),并將指針成員Pb指向第二端口池緩存區(qū)中存儲(chǔ)的端口資源。
[0044]在步驟C第二任務(wù)等待端口資源釋放,當(dāng)內(nèi)網(wǎng)用戶使用完端口資源后釋放時(shí),第二任務(wù)調(diào)度釋放的端口資源存儲(chǔ)到第二端口池緩存區(qū)中,第二任務(wù)還包括指針成員Pb,當(dāng)內(nèi)網(wǎng)用戶使用完端口資源后釋放時(shí),第二任務(wù)調(diào)度釋放的端口資源存儲(chǔ)到第二端口池緩存區(qū),并將指針成員Pb指向第二端口池緩存區(qū)中存儲(chǔ)的端口資源。在第二任務(wù)將指針成員Pb指向第二端口池緩存區(qū)尾部時(shí),需要對(duì)第二任務(wù)的指針成員Pb指向的端口資源進(jìn)行判斷,即判斷第二端口池緩存區(qū)是否為空;若第二任務(wù)的指針成員Pb指向的端口資源為空,則第二任務(wù)繼續(xù)等待內(nèi)網(wǎng)用戶釋放端口資源;若第二任務(wù)的指針成員Pb指向的端口資源不為空,則第二任務(wù)向第一任務(wù)發(fā)送通告,表明此時(shí)第二端口池緩存區(qū)已經(jīng)存儲(chǔ)有端口資源,并等待內(nèi)網(wǎng)用戶釋放端口資源。
[0045]如圖6所示,為本發(fā)明的網(wǎng)絡(luò)地址轉(zhuǎn)換端口分配系統(tǒng)示意圖。本發(fā)明還提出了一種網(wǎng)絡(luò)地址轉(zhuǎn)換端口分配系統(tǒng),包括:創(chuàng)建模塊,判斷模塊和調(diào)度模塊。創(chuàng)建模塊用于創(chuàng)建第一端口池緩存區(qū)、第二端口池緩存區(qū)、第一任務(wù)和第二任務(wù),所述第一端口池緩存區(qū)用于存儲(chǔ)端口資源,所述第二端口池緩存區(qū)用于存儲(chǔ)端口資源,所述第一任務(wù)用于調(diào)度可用端口資源,所述第二任務(wù)用于調(diào)度釋放的端口資源;判斷模塊用于在第一任務(wù)為內(nèi)網(wǎng)用戶分配端口后判斷第一端口池緩存區(qū)內(nèi)的端口資源是否為空及在第二任務(wù)調(diào)度釋放的端口資源后判斷第二端口池緩存區(qū)內(nèi)的端口資源是否為空;調(diào)度模塊用于根據(jù)第一任務(wù)和第二任務(wù)調(diào)度端口資源。
[0046]本發(fā)明的網(wǎng)絡(luò)地址轉(zhuǎn)換端口分配系統(tǒng)首先利用創(chuàng)建模塊創(chuàng)建第一端口池緩存區(qū)、第二端口池緩存區(qū)、第一任務(wù)和第二任務(wù),第一端口池緩存區(qū)及所述第二端口池緩存區(qū)都用于存儲(chǔ)端口資源,第一端口池緩存區(qū)和第二端口池緩存區(qū)內(nèi)存儲(chǔ)的端口資源都為鏈狀數(shù)據(jù)結(jié)構(gòu),第一任務(wù)用于調(diào)度可用端口資源,它包括指針成員Pa,指針成員Pa用于指向第一端口池緩存區(qū)中存儲(chǔ)的可用端口資源;第二任務(wù)用于調(diào)度釋放的端口資源,它包括指針成員Pb,指針成員Pb用于指向第二端口池緩存區(qū)中存儲(chǔ)的端口資源;同時(shí)設(shè)定第一端口池緩存區(qū)為最大端口數(shù),設(shè)定第二端口池緩存區(qū)為空,設(shè)定第一任務(wù)的指針成員Pa指向第一端口池緩存區(qū)尾部的端口資源,設(shè)定第二任務(wù)的指針成員Pb指向第二端口池緩存區(qū)尾部端口資源。
[0047]當(dāng)內(nèi)網(wǎng)用戶發(fā)出端口資源申請(qǐng)時(shí),本發(fā)明的調(diào)度模塊通過第一任務(wù)的指針成員Pa從第一端口池緩存區(qū)中獲取端口資源,并將獲取得到的端口資源分配給內(nèi)網(wǎng)用戶;分配完成后,第一任務(wù)將該端口資源從第一端口池緩存區(qū)中刪除,并將指針成員Pa指向第一端口池緩存區(qū)中下一個(gè)端口資源。當(dāng)內(nèi)網(wǎng)用戶釋放端口資源后,調(diào)度模塊通過第二任務(wù)的指針成員Pb獲取被釋放的端口資源,并將獲取得到的被釋放端口資源添加到第二端口池緩存區(qū)尾部;添加完成后,第二任務(wù)將指針成員Pb指向第二端口池緩存區(qū)尾部,即指向該端口資源。第一任務(wù)將指針成員Pa指向第一端口池緩存區(qū)中下一個(gè)端口資源后,判斷模塊判斷下一個(gè)端口資源是否為空。若下一個(gè)端口資源為不為空,則第一任務(wù)繼續(xù)等待內(nèi)網(wǎng)用戶發(fā)出端口資源申請(qǐng);若下一個(gè)端口資源為空,則判斷模塊繼續(xù)判斷第二任務(wù)的指針成員Pb指向的端口資源是否為空。若第二任務(wù)的指針成員Pb指向的端口資源不為空,則將第一任務(wù)與第二任務(wù)進(jìn)行交換,即調(diào)度模塊通過第二任務(wù)調(diào)度內(nèi)網(wǎng)用戶釋放的端口資源,存儲(chǔ)到第一端口池緩存區(qū),并將第二任務(wù)的指針成員Pb指向第一端口池緩存區(qū)尾部;同時(shí)調(diào)度模塊將第一任務(wù)的指針成員Pa指向第二端口池緩存區(qū)尾部,并通過第一任務(wù)從第二端口池緩存區(qū)調(diào)度端口資源分配給內(nèi)網(wǎng)用戶;若第二任務(wù)的指針成員Pb指向的端口資源為空,則第二任務(wù)向第一任務(wù)發(fā)送通告,拒絕所有端口資源申請(qǐng),并等待內(nèi)網(wǎng)用戶釋放端口資源。
[0048]本領(lǐng)域的普通技術(shù)人員將會(huì)意識(shí)到,這里所述的實(shí)施例是為了幫助讀者理解本發(fā)明的原理,應(yīng)被理解為本發(fā)明的保護(hù)范圍并不局限于這樣的特別陳述和實(shí)施例。本領(lǐng)域的普通技術(shù)人員可以根據(jù)本發(fā)明公開的這些技術(shù)啟示做出各種不脫離本發(fā)明實(shí)質(zhì)的其它各種具體變形和組合,這些變形和組合仍然在本發(fā)明的保護(hù)范圍內(nèi)。
【權(quán)利要求】
1.一種網(wǎng)絡(luò)地址轉(zhuǎn)換端口分配方法,其特征在于,包括以下步驟: A、創(chuàng)建用于存儲(chǔ)端口資源的第一端口池緩存區(qū)和第二端口池緩存區(qū),并創(chuàng)建用于調(diào)度可用端口資源的第一任務(wù)以及用于調(diào)度釋放的端口資源的第二任務(wù); B、第一任務(wù)等待端口資源申請(qǐng),當(dāng)內(nèi)網(wǎng)用戶發(fā)出端口資源申請(qǐng)時(shí),第一任務(wù)從第一端口池緩存區(qū)或第二端口池緩存區(qū)中調(diào)度可用端口資源分配給內(nèi)網(wǎng)用戶; C、第二任務(wù)等待端口資源釋放,當(dāng)內(nèi)網(wǎng)用戶使用完端口資源后釋放時(shí),第二任務(wù)調(diào)度釋放的端口資源存儲(chǔ)到第二端口池緩存區(qū)或第一端口池緩存區(qū)。
2.如權(quán)利要求1所述的網(wǎng)絡(luò)地址轉(zhuǎn)換端口分配方法,其特征在于:所述步驟B中第一任務(wù)從第一端口池緩存區(qū)中調(diào)度可用端口資源分配給內(nèi)網(wǎng)用戶,具體為:所述第一任務(wù)還包括指針成員Pa,所述指針成員Pa指向第一端口池緩存區(qū)中存儲(chǔ)的可用端口資源,所述第一任務(wù)調(diào)取指針成員Pa指向的可用端口資源分配給內(nèi)網(wǎng)用戶。
3.如權(quán)利要求2所述的網(wǎng)絡(luò)地址轉(zhuǎn)換端口分配方法,其特征在于:所述步驟B還包括以下步驟: B1、第一任務(wù)為內(nèi)網(wǎng)用戶分配端口后,將指針成員Pa指向下一個(gè)可用端口資源,并判斷指針成員Pa指向的可用端口資源是否為空;若可用端口資源不為空,則第一任務(wù)繼續(xù)等待內(nèi)網(wǎng)用戶發(fā)出端口申請(qǐng);若可用端口資源為空,則繼續(xù)判斷第二端口池緩存區(qū)是否為空;若第二端口池緩存區(qū)不為空,則第一任務(wù)指針成員Pa與第二任務(wù)指針成員Pb進(jìn)行交換;若第二端口池緩存區(qū)為空,則第一任務(wù)忽略所有端口資源申請(qǐng),并等待第二任務(wù)發(fā)出通告。
4.如權(quán)利要求1所述的網(wǎng)絡(luò)地址轉(zhuǎn)換端口分配方法,其特征在于:所述步驟C中第二任務(wù)調(diào)度釋放的端口資源存儲(chǔ)到第二端口池緩存區(qū),具體為:所述第二任務(wù)還包括指針成員Pb,所述第二任務(wù)調(diào)度釋放的端口資源存儲(chǔ)到第二端口池緩存區(qū),并將指針成員Pb指向第二端口池緩存區(qū)中存儲(chǔ)的端口資源。
5.如權(quán)利要求4所述的網(wǎng)絡(luò)地址轉(zhuǎn)換端口分配方法,其特征在于:所述步驟C還包括以下步驟: Cl、第二任務(wù)調(diào)度釋放的端口資源存儲(chǔ)到第二端口池緩存區(qū)后,將指針成員Pb指向該端口資源,并判斷指針成員Pb指向的端口資源是否為空;若端口資源為空,則第二任務(wù)繼續(xù)等待內(nèi)網(wǎng)用戶釋放端口資源;若端口資源不為空,則第二任務(wù)向第一任務(wù)發(fā)送通告并等待內(nèi)網(wǎng)用戶釋放端口資源。
6.如權(quán)利要求1-5所述的網(wǎng)絡(luò)地址轉(zhuǎn)換端口分配方法,其特征在于,所述第一任務(wù)與第二任務(wù)進(jìn)行交換具體為:第二任務(wù)調(diào)度釋放的端口資源存儲(chǔ)到第一端口池緩存區(qū),第一任務(wù)從第二端口池緩存區(qū)調(diào)度端口資源分配給內(nèi)網(wǎng)用戶。
7.如權(quán)利要求1-6所述的網(wǎng)絡(luò)地址轉(zhuǎn)換端口分配方法,其特征在于:所述第一端口池緩存區(qū)和第二端口池緩存區(qū)中存儲(chǔ)的端口資源都為鏈狀數(shù)據(jù)結(jié)構(gòu)。
8.—種網(wǎng)絡(luò)地址轉(zhuǎn)換端口分配系統(tǒng),其特征在于,包括:創(chuàng)建模塊,判斷模塊和調(diào)度模塊; 所述創(chuàng)建模塊創(chuàng)建用于存儲(chǔ)端口資源的第一端口池緩存區(qū)和第二端口池緩存區(qū),并創(chuàng)建用于調(diào)度可用端口資源的第一任務(wù)以及用于調(diào)度釋放的端口資源的第二任務(wù); 所述判斷模塊用于在第一任務(wù)為內(nèi)網(wǎng)用戶分配端口后判斷第一端口池緩存區(qū)內(nèi)的端口資源是否為空及在第二任務(wù)調(diào)度釋放的端口資源后判斷第二端口池緩存區(qū)內(nèi)的端口資源是否為空; 所述調(diào)度模塊用于根據(jù)第一任務(wù)和第二任務(wù)調(diào)度端口資源。
9.如權(quán)利要求8所述的網(wǎng)絡(luò)地址轉(zhuǎn)換端口分配系統(tǒng),其特征在于:所述第一任務(wù)還包括指針成員Pa,所述指針成員Pa指向第一端口池緩存區(qū)中存儲(chǔ)的可用端口資源,所述第一任務(wù)調(diào)取指針成員Pa指向的可用端口資源分配給內(nèi)網(wǎng)用戶。
10.如權(quán)利要求8所述的網(wǎng)絡(luò)地址轉(zhuǎn)換端口分配系統(tǒng),其特征在于:所述第二任務(wù)還包括指針成員Pb,所述第二任務(wù)調(diào)度釋放的端口資源存儲(chǔ)到第二端口池緩存區(qū),并將指針成員Pb指向第二端口池緩存區(qū)中存儲(chǔ)的端口資源。
【文檔編號(hào)】H04L29/12GK104519150SQ201410851514
【公開日】2015年4月15日 申請(qǐng)日期:2014年12月31日 優(yōu)先權(quán)日:2014年12月31日
【發(fā)明者】馬聰 申請(qǐng)人:邁普通信技術(shù)股份有限公司