專利名稱:一種限制用戶使用代理上網(wǎng)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及TCP/IP通訊協(xié)議技術(shù),應(yīng)用在接入服務(wù)器上,用來(lái)防止非授權(quán)用戶通過(guò)代理服務(wù)器上網(wǎng)。
背景技術(shù):
目前接入服務(wù)器在對(duì)用戶的數(shù)據(jù)報(bào)文進(jìn)行處理的時(shí)候,在判斷該報(bào)文是由合法的IP地址發(fā)來(lái)的后,都對(duì)它進(jìn)行正常的轉(zhuǎn)發(fā)。但是,這里存在一個(gè)問(wèn)題,即當(dāng)一個(gè)用戶申請(qǐng)了一個(gè)合法的帳號(hào)后(即對(duì)應(yīng)一個(gè)合法的IP地址,可能通過(guò)靜態(tài)分配,也可能是動(dòng)態(tài)分配)。如果該用戶在具有合法IP地址的主機(jī)上安裝了代理服務(wù)器,然后為多個(gè)沒(méi)有申請(qǐng)合法帳號(hào)的主機(jī)提供代理服務(wù),按照代理服務(wù)器的實(shí)現(xiàn)原理,在接入服務(wù)器上是無(wú)法區(qū)分一個(gè)數(shù)據(jù)包是由合法的IP地址發(fā)來(lái)的,還是由合法IP地址所代理的非授權(quán)用戶主機(jī)發(fā)來(lái)的。因?yàn)榉鞘跈?quán)的主機(jī)發(fā)來(lái)的數(shù)據(jù)包在通過(guò)代理服務(wù)器實(shí)現(xiàn)代理操作的過(guò)程中,它的源IP地址變成了代理服務(wù)器的合法的IP地址,因此通過(guò)接入服務(wù)器是能得到正常轉(zhuǎn)發(fā)的。而由于接入服務(wù)器在性能上要求對(duì)用戶數(shù)據(jù)包進(jìn)行線速轉(zhuǎn)發(fā),因此也就決定了它不能對(duì)每個(gè)數(shù)據(jù)包進(jìn)行更深入地分析處理,因此,導(dǎo)致了多個(gè)非授權(quán)用戶可以通過(guò)在一個(gè)授權(quán)用戶上安裝代理服務(wù)器而實(shí)現(xiàn)同時(shí)上網(wǎng),由于多個(gè)非授權(quán)用戶同時(shí)上網(wǎng)時(shí)占用的網(wǎng)絡(luò)帶寬要高于單個(gè)用戶時(shí)的情況;因此,如果對(duì)這種通過(guò)安裝代理上網(wǎng)方式不加限制的話,這部分非授權(quán)用戶將占用大量的網(wǎng)絡(luò)帶寬,嚴(yán)重影響正常用戶的網(wǎng)絡(luò)性能,并給網(wǎng)絡(luò)運(yùn)營(yíng)商帶來(lái)?yè)p失。
發(fā)明內(nèi)容
本發(fā)明解決的技術(shù)問(wèn)題是提供一種可以限制用戶使用代理上網(wǎng)的方法,避免大量非授權(quán)用戶主機(jī)通過(guò)以合法帳號(hào)的用戶為代理上網(wǎng),保證了正常用戶的網(wǎng)絡(luò)性能。
本發(fā)明所述的限制用戶使用代理上網(wǎng)的方法可以以下面的方式實(shí)現(xiàn)步驟一,通過(guò)統(tǒng)計(jì)的方法,計(jì)算出一個(gè)合理的,單個(gè)用戶上網(wǎng)所能發(fā)起的TCP(傳輸控制協(xié)議)連接最大個(gè)數(shù);步驟二,接入服務(wù)器對(duì)用戶數(shù)據(jù)包進(jìn)行處理的過(guò)程中,計(jì)算某個(gè)IP地址發(fā)起的TCP連接個(gè)數(shù);步驟三,判斷上述IP地址的TCP連接個(gè)數(shù)是否超過(guò)設(shè)定的單用戶TCP連接最大個(gè)數(shù);步驟四,如果超過(guò)了,丟棄新的TCP建鏈包;如果沒(méi)有超過(guò),接受新的TCP建鏈包。
本發(fā)明所述的限制用戶使用代理上網(wǎng)的方法還可以如下的步驟實(shí)現(xiàn)步驟一,通過(guò)統(tǒng)計(jì)的方法,計(jì)算出一個(gè)合理的,單個(gè)用戶上網(wǎng)所能發(fā)起的DNS(域名解析服務(wù))請(qǐng)求最大個(gè)數(shù);步驟二,接入服務(wù)器對(duì)用戶數(shù)據(jù)包進(jìn)行處理的過(guò)程中,計(jì)算某個(gè)IP地址發(fā)起的DNS請(qǐng)求個(gè)數(shù);步驟三,判斷上述IP地址的DNS請(qǐng)求個(gè)數(shù)是否超過(guò)設(shè)定的單用戶DNS請(qǐng)求最大個(gè)數(shù);步驟四,如果超過(guò)了,丟棄新的UDP(用戶數(shù)據(jù)報(bào)協(xié)議)報(bào)文;如果沒(méi)有超過(guò),接受新的UDP報(bào)文。
采用本發(fā)明所述的方法,一方面對(duì)網(wǎng)絡(luò)處理器上的微碼改動(dòng)很少,另一方面由于只需要分析到數(shù)據(jù)包中的TCP/UDP報(bào)頭,對(duì)系統(tǒng)的線速轉(zhuǎn)發(fā)性能的影響也不大。此外,單個(gè)用戶可同時(shí)發(fā)起的TCP連接最大個(gè)數(shù)和DNS服務(wù)請(qǐng)求最大個(gè)數(shù)可以根據(jù)實(shí)際運(yùn)行情況通過(guò)網(wǎng)管命令動(dòng)態(tài)設(shè)置。在通過(guò)統(tǒng)計(jì)的方法獲得一個(gè)合理的單用戶最大可同時(shí)發(fā)起的TCP連接個(gè)數(shù)和DNS請(qǐng)求個(gè)數(shù)值后,該種方法可以很好地滿足網(wǎng)絡(luò)運(yùn)營(yíng)商限制非授權(quán)用戶使用代理服務(wù)器上網(wǎng)的需求,保證了正常用戶的網(wǎng)絡(luò)性能,使網(wǎng)絡(luò)運(yùn)營(yíng)商的損失降低到最小。
圖1是本發(fā)明接入服務(wù)器用戶側(cè)網(wǎng)絡(luò)處理器對(duì)TCP建鏈報(bào)文的處理流程。
圖2是本發(fā)明接入服務(wù)器用戶側(cè)網(wǎng)絡(luò)處理器對(duì)TCP拆鏈報(bào)文的處理流程。
圖3是本發(fā)明接入服務(wù)器用戶側(cè)網(wǎng)絡(luò)處理器對(duì)DNS報(bào)文的處理流程。
圖4是本發(fā)明接入服務(wù)器用戶側(cè)網(wǎng)絡(luò)處理器中用戶信息表中DNS請(qǐng)求定時(shí)老化、刷新的操作處理流程。
具體實(shí)施例方式
下面結(jié)合
本發(fā)明的具體實(shí)現(xiàn)過(guò)程目前用戶上網(wǎng)主要使用常用的幾種應(yīng)用層協(xié)議,如HTTP(HypertextTransfer Protocol,WWW服務(wù)程序所用的協(xié)議),F(xiàn)TP(File TransferProtocol,文件傳輸協(xié)議),TELNET(遠(yuǎn)程登錄),SMTP(Simple Message Transfer Protocol,簡(jiǎn)單郵件傳輸協(xié)議),POP(Post Office Protocol,郵局協(xié)議)等,而這幾種應(yīng)用層協(xié)議都是基于TCP之上的。用戶每次瀏覽一個(gè)網(wǎng)頁(yè),每次啟動(dòng)一個(gè)FTP應(yīng)用,每次發(fā)起一個(gè)TELNET連接或每次收發(fā)一個(gè)Email,都需要建立一個(gè)或者多個(gè)TCP連接。因此,理論上可以得出,多個(gè)非授權(quán)用戶同時(shí)使用代理服務(wù)器上網(wǎng)時(shí),由這個(gè)代理服務(wù)器發(fā)起的TCP連接個(gè)數(shù)肯定要多于單個(gè)用戶所發(fā)起的TCP連接個(gè)數(shù)。本發(fā)明的方法就是通過(guò)統(tǒng)計(jì)的方法,計(jì)算出一個(gè)合理的,單個(gè)用戶上網(wǎng)所能發(fā)起的TCP連接最大個(gè)數(shù)。然后,在接入服務(wù)器對(duì)用戶數(shù)據(jù)包進(jìn)行處理的過(guò)程中,判斷對(duì)應(yīng)某個(gè)IP地址發(fā)起的TCP連接個(gè)數(shù)是否超過(guò)了這個(gè)最大連接個(gè)數(shù)。如果超過(guò)了,我們就認(rèn)為該IP地址對(duì)應(yīng)的主機(jī)安裝了代理服務(wù)器,我們要對(duì)其上網(wǎng)進(jìn)行限制;否則,我們就認(rèn)為該IP地址發(fā)來(lái)的IP報(bào)文是正常數(shù)據(jù)包,對(duì)其進(jìn)行正常的轉(zhuǎn)發(fā)操作。
采用限制合法用戶TCP最大連接個(gè)數(shù)的步驟如下第一步接入服務(wù)器用戶側(cè)網(wǎng)絡(luò)處理器對(duì)TCP建鏈報(bào)文的處理。
本步驟又可以包括下列步驟1.在接入服務(wù)器用戶側(cè)的線卡上,網(wǎng)絡(luò)處理器判斷收到的數(shù)據(jù)報(bào)文是否是TCP的建鏈包,即分析TCP包頭中的SYN位是否為1。
2.如果是TCP建鏈包,提取TCP包頭中的源IP地址和源端口號(hào)。并根據(jù)用戶信息表中的信息,判斷該TCP連接是否是一條新的連接。如果是新的連接,判斷同該源IP地址相關(guān)的,正在使用的TCP連接個(gè)數(shù)是否已經(jīng)達(dá)到了系統(tǒng)規(guī)定的最大連接個(gè)數(shù)。
3.如果此時(shí),同該源IP地址相關(guān)的TCP連接個(gè)數(shù)已經(jīng)達(dá)到了系統(tǒng)規(guī)定的最大值,則丟棄該新的TCP建鏈包;否則,將該IP包的源IP端口號(hào)添加到用戶信息表中(對(duì)應(yīng)一個(gè)新的TCP連接);同時(shí),將同該IP地址相關(guān)的TCP連接個(gè)數(shù)加一,用于下一次比較操作。
4.如果步驟3中的后一種情況成立,則接入服務(wù)器正常轉(zhuǎn)發(fā)用戶的數(shù)據(jù)包。
第二步接入服務(wù)器用戶側(cè)網(wǎng)絡(luò)處理器對(duì)TCP拆鏈報(bào)文的處理。
1.在接入服務(wù)器用戶側(cè)的線卡上,網(wǎng)絡(luò)處理器判斷收到是否是TCP的拆鏈包,即分析TCP包頭中的FIN位是否為1。
2.如果是TCP建鏈包,提取TCP包頭中的源IP地址和源端口號(hào)。并從對(duì)應(yīng)的用戶信息表中的刪除相應(yīng)的TCP連接記錄信息,并將對(duì)應(yīng)該IP地址的正在使用的TCP連接個(gè)數(shù)減一。
3.正常轉(zhuǎn)發(fā)該報(bào)文。
另外,目前用戶上網(wǎng)時(shí),無(wú)論是瀏覽一個(gè)網(wǎng)頁(yè),啟動(dòng)一個(gè)FTP應(yīng)用,或發(fā)起一個(gè)telnet連接,或收發(fā)一個(gè)Email,都需要給出對(duì)方的IP地址。而在實(shí)際的情況下,為了使用上的方便,用戶使用的都是域名(Domain name)。既用戶上網(wǎng)時(shí)的每一個(gè)連接請(qǐng)求,都需要進(jìn)行一次域名解析服務(wù)(DNS)。該服務(wù)使用UDP報(bào)文來(lái)承載,域名服務(wù)器的端口號(hào)為53。因此,理論上可以得出,多個(gè)非授權(quán)用戶同時(shí)使用代理服務(wù)器上網(wǎng)時(shí),由這個(gè)代理服務(wù)器發(fā)起的域名解析請(qǐng)求個(gè)數(shù)肯定要多于單個(gè)用戶所發(fā)起的域名解析請(qǐng)求個(gè)數(shù)。因此,可以通過(guò)統(tǒng)計(jì)的方法,計(jì)算出一個(gè)合理的,單個(gè)用戶上網(wǎng)所能發(fā)起的DNS請(qǐng)求最大個(gè)數(shù)。然后,在接入服務(wù)器對(duì)用戶數(shù)據(jù)包進(jìn)行處理的過(guò)程中,判斷對(duì)應(yīng)某個(gè)IP地址發(fā)起的DNS請(qǐng)求個(gè)數(shù)是否超過(guò)了這個(gè)最大請(qǐng)求個(gè)數(shù)。如果超過(guò)了,我們就認(rèn)為該IP地址對(duì)應(yīng)的主機(jī)安裝了代理服務(wù)器,我們要對(duì)其上網(wǎng)進(jìn)行限制;否則,我們就認(rèn)為該IP地址發(fā)來(lái)的IP報(bào)文是正常數(shù)據(jù)包,對(duì)其進(jìn)行正常的轉(zhuǎn)發(fā)操作。
采用限制合法用戶DNS最大請(qǐng)求個(gè)數(shù)的步驟如下第一步接入服務(wù)器用戶側(cè)網(wǎng)絡(luò)處理器對(duì)DNS請(qǐng)求報(bào)文的處理。
本步驟又可以包括下列步驟1.在接入服務(wù)器用戶側(cè)的線卡上,網(wǎng)絡(luò)處理器判斷收到是否是UDP報(bào)文,如果是UDP報(bào)文,分析它的目的端口號(hào)是否為53。
2.如果是UDP報(bào)文,并且它的目的端口號(hào)也為53,則根據(jù)用戶信息表中記錄的信息,判斷該用戶當(dāng)前發(fā)起的DNS請(qǐng)求是否已經(jīng)達(dá)到了系統(tǒng)規(guī)定的最大個(gè)數(shù)。
3.如果此時(shí),同該源IP地址相關(guān)的DNS請(qǐng)求個(gè)數(shù)已經(jīng)達(dá)到了系統(tǒng)規(guī)定的最大值,則丟棄該UDP報(bào)文;否則,將該IP包的源IP端口號(hào)添加到用戶信息表中(對(duì)應(yīng)一個(gè)新的DNS請(qǐng)求),并給該記錄打上時(shí)間戳標(biāo)志。同時(shí),同該IP地址相關(guān)的DNS請(qǐng)求個(gè)數(shù)加一,用于下一次比較操作。
4.如果步驟3中的后一種情況成立,則接入服務(wù)器正常轉(zhuǎn)發(fā)用戶的數(shù)據(jù)包。
第二步用戶側(cè)網(wǎng)絡(luò)處理器對(duì)用戶數(shù)據(jù)表中的DNS請(qǐng)求記錄老化操作。
該步驟的詳細(xì)描述如下由于UDP協(xié)議不是面向連接的協(xié)議,它沒(méi)有建鏈和拆鏈操作。所以,本發(fā)明中設(shè)計(jì)了一個(gè)定時(shí)刷新操作函數(shù)。網(wǎng)絡(luò)處理器為用戶信息表中各個(gè)用戶的每個(gè)DNS請(qǐng)求記錄打上時(shí)間戳標(biāo)志,然后系統(tǒng)定時(shí)輪循,對(duì)每條DNS記錄執(zhí)行老化操作。對(duì)于每次老化操作后,時(shí)間戳值超過(guò)有效時(shí)限的DNS記錄,在用戶信息表中刪除,并將同該用戶相關(guān)的當(dāng)前有效的DNS請(qǐng)求個(gè)數(shù)減1。即通過(guò)該方法,將每個(gè)用戶在某一個(gè)時(shí)間段內(nèi)發(fā)起的DNS請(qǐng)求個(gè)數(shù)控制在某個(gè)最大值的范圍內(nèi)。
對(duì)于以上兩種實(shí)施方式既可以在系統(tǒng)中分別獨(dú)立采用,也可以結(jié)合起來(lái)完成限制用戶使用代理上網(wǎng)。
利用本發(fā)明提供的方法,不需對(duì)接入服務(wù)器現(xiàn)有的實(shí)現(xiàn)流程做大的修改,對(duì)于限制TCP最大連接個(gè)數(shù)的方式,只需要在網(wǎng)絡(luò)處理器的用戶信息表中增加授權(quán)用戶當(dāng)前正在使用的TCP連接個(gè)數(shù)記數(shù)值以及授權(quán)用戶當(dāng)前正在使用的TCP連接列表(可通過(guò)記錄對(duì)應(yīng)TCP連接的源端口號(hào)實(shí)現(xiàn))即可。用戶側(cè)網(wǎng)絡(luò)處理器微碼中只需要添加幾條指令,用來(lái)解析進(jìn)來(lái)的TCP數(shù)據(jù)包的包頭,判斷是否是建鏈,拆鏈包;以及對(duì)應(yīng)的用戶信息表中的連接記錄的添加,刪除操作,對(duì)應(yīng)的連接個(gè)數(shù)的加1,減1操作即可。對(duì)于限制DNS最大請(qǐng)求個(gè)數(shù)的方式,只需要在網(wǎng)絡(luò)處理器的用戶信息表中增加授權(quán)用戶當(dāng)前正在使用的DNS請(qǐng)求個(gè)數(shù)記數(shù)值以及授權(quán)用戶當(dāng)前發(fā)起的DNS請(qǐng)求記錄列表(可通過(guò)記錄對(duì)應(yīng)的UDP連接的源端口號(hào)實(shí)現(xiàn))即可。用戶側(cè)網(wǎng)絡(luò)處理器微碼中需要添加幾條指令,用來(lái)解析進(jìn)來(lái)的UDP數(shù)據(jù)包的包頭,判斷是否是DNS報(bào)文;對(duì)用戶信息表中的相應(yīng)的DNS請(qǐng)求記錄執(zhí)行添加,刪除操作;對(duì)應(yīng)的連接個(gè)數(shù)的加1,減1操作;系統(tǒng)輪詢對(duì)用戶信息表中各個(gè)DNS請(qǐng)求記錄執(zhí)行老化操作等等。
權(quán)利要求
1.一種限制用戶使用代理上網(wǎng)的方法,包括以下步驟步驟一,通過(guò)統(tǒng)計(jì)的方法,計(jì)算出一個(gè)合理的,單個(gè)用戶上網(wǎng)所能發(fā)起的TCP(傳輸控制協(xié)議)連接最大個(gè)數(shù);步驟二,接入服務(wù)器對(duì)用戶數(shù)據(jù)包進(jìn)行處理的過(guò)程中,計(jì)算某個(gè)IP地址發(fā)起的TCP連接個(gè)數(shù);步驟三,判斷上述IP地址的TCP連接個(gè)數(shù)是否超過(guò)設(shè)定的單用戶TCP連接最大個(gè)數(shù);步驟四,如果超過(guò)了,丟棄新的TCP建鏈包;如果沒(méi)有超過(guò),接受新的TCP建鏈包。
2.一種限制用戶使用代理上網(wǎng)的方法,包括以下步驟步驟一,通過(guò)統(tǒng)計(jì)的方法,計(jì)算出一個(gè)合理的,單個(gè)用戶上網(wǎng)所能發(fā)起的DNS(域名解析服務(wù))請(qǐng)求最大個(gè)數(shù);步驟二,接入服務(wù)器對(duì)用戶數(shù)據(jù)包進(jìn)行處理的過(guò)程中,計(jì)算某個(gè)IP地址發(fā)起的DNS請(qǐng)求個(gè)數(shù);步驟三,判斷上述IP地址的DNS請(qǐng)求個(gè)數(shù)是否超過(guò)設(shè)定的單用戶DNS請(qǐng)求最大個(gè)數(shù);步驟四,如果超過(guò)了,丟棄新的UDP(用戶數(shù)據(jù)報(bào)協(xié)議)報(bào)文;如果沒(méi)有超過(guò),接受新的UDP報(bào)文。
3.根據(jù)權(quán)利要求2所述的限制用戶使用代理上網(wǎng)的方法,其特征在于,所述步驟二中計(jì)算某個(gè)IP地址發(fā)起的DNS請(qǐng)求個(gè)數(shù),是通過(guò)給用戶的每個(gè)已接受DNS請(qǐng)求記錄打上時(shí)間戳標(biāo)志,然后系統(tǒng)定時(shí)輪循,對(duì)每條DNS記錄執(zhí)行老化操作,對(duì)于時(shí)間戳值超過(guò)有效時(shí)限的DNS記錄,在用戶信息表中刪除,并將同該用戶相關(guān)的當(dāng)前有效的DNS請(qǐng)求個(gè)數(shù)減1。
4.根據(jù)權(quán)利要求2和3所述的限制用戶使用代理上網(wǎng)的方法,其特征在于,還包括以下處理步驟通過(guò)統(tǒng)計(jì)的方法,計(jì)算出一個(gè)合理的,單個(gè)用戶上網(wǎng)所能發(fā)起的TCP(傳輸控制協(xié)議)連接最大個(gè)數(shù);接入服務(wù)器對(duì)用戶數(shù)據(jù)包進(jìn)行處理的過(guò)程中,計(jì)算某個(gè)IP地址發(fā)起的TCP連接個(gè)數(shù);判斷上述IP地址的TCP連接個(gè)數(shù)是否超過(guò)設(shè)定的單用戶TCP連接最大個(gè)數(shù);如果超過(guò)了,丟棄新的TCP建鏈包;如果沒(méi)有超過(guò),接受新的TCP建鏈包。
全文摘要
本發(fā)明公開了一種限制用戶使用代理上網(wǎng)的方法,通過(guò)設(shè)定用戶的可同時(shí)發(fā)起的TCP連接最大個(gè)數(shù)和DNS服務(wù)請(qǐng)求最大個(gè)數(shù),當(dāng)用戶的TCP連接個(gè)數(shù)或DNS服務(wù)請(qǐng)求個(gè)數(shù)超過(guò)設(shè)定的最大值時(shí),系統(tǒng)將丟棄用戶新的請(qǐng)求。采用本發(fā)明的方法可以很好地滿足網(wǎng)絡(luò)運(yùn)營(yíng)商限制非授權(quán)用戶使用代理服務(wù)器上網(wǎng)的需求,保證了正常用戶的網(wǎng)絡(luò)性能,使網(wǎng)絡(luò)運(yùn)營(yíng)商的損失降低到最小,可廣泛應(yīng)用于各種接入服務(wù)器中。
文檔編號(hào)H04L29/06GK1484415SQ02137080
公開日2004年3月24日 申請(qǐng)日期2002年9月18日 優(yōu)先權(quán)日2002年9月18日
發(fā)明者孫剛, 剛 孫 申請(qǐng)人:深圳市中興通訊股份有限公司