專利名稱:實(shí)現(xiàn)媒體接入控制層透明代理的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明總體上涉及信息處理領(lǐng)域,更具體地,涉及一種實(shí)現(xiàn)媒體接入控制(MAC)層透明代理的方法和裝置。
背景技術(shù):
基于網(wǎng)關(guān)的內(nèi)容過(guò)濾設(shè)備(例如,防火墻)通常有兩種實(shí)現(xiàn)方式一種為過(guò)濾型,一種為代理型。所謂過(guò)濾型網(wǎng)關(guān)是指網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)在經(jīng)過(guò)網(wǎng)關(guān)設(shè)備時(shí)被該網(wǎng)關(guān)設(shè)備截獲并分析其中的內(nèi)容;而代理型網(wǎng)關(guān)則是由向服務(wù)器進(jìn)行通信的客戶端首先與網(wǎng)關(guān)代理進(jìn)行通信,而網(wǎng)關(guān)代理再去與真實(shí)的服務(wù)器進(jìn)行通信,在這個(gè)過(guò)程中,網(wǎng)關(guān)代理可以緩存數(shù)據(jù)內(nèi)容。
更具體地,作為一種實(shí)現(xiàn)透明傳輸?shù)拇硇途W(wǎng)關(guān),客戶端和服務(wù)器之間的通信被代理到中間的網(wǎng)關(guān)設(shè)備身上;客戶端以為是在與服務(wù)器直接進(jìn)行通信,但實(shí)際上它是與網(wǎng)關(guān)設(shè)備進(jìn)行通信,而網(wǎng)關(guān)設(shè)備再以客戶端的身份與服務(wù)器進(jìn)行通信。而且,該代理型網(wǎng)關(guān)可以模擬服務(wù)器的身份來(lái)改變與客戶端通信的行為和細(xì)節(jié);可以選擇僅將與服務(wù)器通信的安全的數(shù)據(jù)返還給客戶端。在這種透明傳輸模型中,如前所述,網(wǎng)關(guān)設(shè)備是以客戶端的身份來(lái)與服務(wù)器進(jìn)行通信。所謂客戶端的身份,在通常的代理模型中是以客戶端的網(wǎng)際協(xié)議(IP)地址來(lái)標(biāo)識(shí)的。例如,網(wǎng)關(guān)設(shè)備使用客戶端的IP地址來(lái)與服務(wù)器進(jìn)行通信并傳輸數(shù)據(jù),具體地,作為透明代理,網(wǎng)關(guān)設(shè)備保證發(fā)往服務(wù)器的分組的源IP地址信息與真實(shí)客戶端的IP地址是一樣的。在典型的網(wǎng)絡(luò)七層協(xié)議體系結(jié)構(gòu)中,IP處于網(wǎng)絡(luò)層(即,第三層),因此通常的代理模型實(shí)現(xiàn)了第三層透明。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的一個(gè)實(shí)施例,公開(kāi)了一種實(shí)現(xiàn)MAC層透明代理的方法。所述方法包括在網(wǎng)關(guān)中能夠與源站進(jìn)行通信的第一網(wǎng)卡所截取的從所述源站發(fā)往目的站的第一幀中包含的應(yīng)用層數(shù)據(jù)被進(jìn)行處理之后,把要響應(yīng)于所述第一幀而發(fā)給所述目的站的、包含經(jīng)處理的所述應(yīng)用層數(shù)據(jù)的第二幀的首部中的源MAC地址信息修改為所述源站的MAC地址;以及,通過(guò)調(diào)用所述網(wǎng)關(guān)中能夠與所述目的站進(jìn)行通信的第二網(wǎng)卡的發(fā)送函數(shù),將所述第二幀發(fā)送給所述目的站。根據(jù)本發(fā)明的另一個(gè)實(shí)施例,公開(kāi)了一種實(shí)現(xiàn)MAC層透明代理的裝置。所述裝置包括修改模塊,用于在網(wǎng)關(guān)中能夠與源站進(jìn)行通信的第一網(wǎng)卡所截取的從所述源站發(fā)往目的站的第一幀中包含的應(yīng)用層數(shù)據(jù)被進(jìn)行處理之后,把要響應(yīng)于所述第一幀而發(fā)給所述目的站的、包含經(jīng)處理的所述應(yīng)用層數(shù)據(jù)的第二幀的首部中的源MAC地址信息修改為所述源站的MAC地址;以及發(fā)送模塊,用于通過(guò)調(diào)用所述網(wǎng)關(guān)中能夠與所述目的站進(jìn)行通信的第二網(wǎng)卡的發(fā)送函數(shù),將所述第二幀發(fā)送給所述目的站。
參照下列附圖描述了本發(fā)明的示例性實(shí)施例。應(yīng)該理解,這些附圖僅是示例性的、而非限制性的,并且附圖中相同或相似的參考標(biāo)記指示對(duì)應(yīng)的或類似的要素。圖I示出了根據(jù)本發(fā)明的一個(gè)示例性實(shí)施例的系統(tǒng)的概覽;圖2更詳細(xì)地示出了根據(jù)本發(fā)明的一個(gè)示例性實(shí)施例的系統(tǒng);圖3示出了根據(jù)本發(fā)明的一個(gè)示例性實(shí)施例的方法的流程圖;以及圖4示出了根據(jù)本發(fā)明的一個(gè)示例性實(shí)施例的裝置的框圖。
具體實(shí)施例方式在下面的詳細(xì)說(shuō)明中,給出了大量的具體細(xì)節(jié),以提供對(duì)本發(fā)明的實(shí)施例的透徹 理解。然而,本領(lǐng)域技術(shù)人員應(yīng)該理解,這些具體細(xì)節(jié)僅僅是示例性的而非限制性的,可以在沒(méi)有這些具體細(xì)節(jié)的情況下實(shí)現(xiàn)本發(fā)明。在說(shuō)明書中,并未詳細(xì)描述一些公知的部件、結(jié)構(gòu)和操作,以免不當(dāng)?shù)啬:景l(fā)明。說(shuō)明書中提及的短語(yǔ)“一個(gè)實(shí)施例”或“實(shí)施例”等表示結(jié)合該實(shí)施例而描述的特定特征、結(jié)構(gòu)或特性被包括在本發(fā)明的至少一個(gè)實(shí)施例中。因此,在本說(shuō)明書中各處出現(xiàn)的短語(yǔ)“在一個(gè)實(shí)施例中”或“根據(jù)一個(gè)實(shí)施例”等并不一定指代同一個(gè)實(shí)施例。本領(lǐng)域技術(shù)人員可以理解,本文所述的實(shí)施例可以由硬件、軟件、固件、中間件、微代碼或其任意組合來(lái)實(shí)現(xiàn)。首先參考圖1,其示出了根據(jù)本發(fā)明的一個(gè)示例性實(shí)施例的系統(tǒng)100的概覽。在系統(tǒng)100的一種典型實(shí)現(xiàn)中,客戶端101位于網(wǎng)絡(luò)(例如,局域網(wǎng),未示出)的一個(gè)區(qū)域中,服務(wù)器102位于同一網(wǎng)絡(luò)的另一區(qū)域中,而網(wǎng)關(guān)103則位于這兩個(gè)區(qū)域之間,起到橋接的作用。為了簡(jiǎn)便起見(jiàn),對(duì)于該系統(tǒng)的各個(gè)組成部件,這里僅示出了單個(gè)的設(shè)備,然而本發(fā)明并不限于此??蛻舳?01可以包括多種基于處理器的計(jì)算設(shè)備中的任意一種,其在網(wǎng)絡(luò)內(nèi)具有自己的唯一身份標(biāo)識(shí),例如,包括但不限于該客戶端的物理地址(即,媒體接入控制(MAC)地址)、IP地址等等。所述客戶端可以運(yùn)行有各種操作系統(tǒng)中的一種或多種,例如,包括但不限于各種版本的Linux 、Unix 、Windows ,等等。類似地,服務(wù)器102和網(wǎng)關(guān)103也可以分別包括多種基于處理器的計(jì)算設(shè)備中的任意一種;同樣,服務(wù)器102和網(wǎng)關(guān)103也可以分別運(yùn)行有各種操作系統(tǒng)中的一種或多種。服務(wù)器102用于為包括客戶端101在內(nèi)的各種請(qǐng)求設(shè)備提供各種類型的服務(wù)。網(wǎng)關(guān)103處于橋接模式,用于實(shí)現(xiàn)客戶端101和服務(wù)器102之間的通信。在本發(fā)明的實(shí)施例中,網(wǎng)關(guān)102還能夠提供應(yīng)用層代理服務(wù),并且其代理功能對(duì)于網(wǎng)絡(luò)七層協(xié)議體系結(jié)構(gòu)中的第二層(數(shù)據(jù)鏈路層,更具體地說(shuō),其中的MAC子層)來(lái)說(shuō)也是透明的。下面,以源站(例如,客戶端101)向目的站(例如,服務(wù)器102)發(fā)送數(shù)據(jù)為例,說(shuō)明在網(wǎng)關(guān)(或透明代理網(wǎng)關(guān))103存在的情況下,客戶端101與服務(wù)器102之間實(shí)際發(fā)生的一種通信過(guò)程。本領(lǐng)域技術(shù)人員可以理解,這里以客戶端101作為源站、以服務(wù)器102作為目的站僅是一種示例情況,本發(fā)明并不限于此。客戶端101發(fā)出的數(shù)據(jù)會(huì)首先被透明代理網(wǎng)關(guān)103所截取,而后者再去以客戶端101的身份向服務(wù)器102發(fā)送該數(shù)據(jù)。由此,通過(guò)居間的透明代理網(wǎng)關(guān)103,在客戶端101和服務(wù)器102之間實(shí)現(xiàn)數(shù)據(jù)傳輸。從客戶端101的角度來(lái)看,它是在直接與服務(wù)器102進(jìn)行通信,但實(shí)際并非如此。更具體地,參照?qǐng)D1,在透明代理網(wǎng)關(guān)103接收(或截取)到客戶端101向服務(wù)器102發(fā)出的幀110(如圖中左側(cè)的箭頭所示)時(shí),可以對(duì)該幀110的首部中所含的MAC層信息進(jìn)行記錄,例如,至少包括源MAC地址信息(即,客戶端101自身的MAC地址),等等。所記錄的MAC層信息還可以包括幀110的目的MAC地址信息(即,服務(wù)器202的MAC地址)。此外,取決于實(shí)際需要,還可以記錄其它信息,例如在使用802. IQ虛擬局域網(wǎng)(VLAN)的情況下(其中在以太網(wǎng)的幀格式中插入一個(gè)4字節(jié)的VLAN標(biāo)記),還可以記錄VLAN標(biāo)記中的VLAN標(biāo)識(shí)符(ID)等等,本發(fā)明并不限于此。在上述記錄操作完畢之后,在一個(gè)實(shí)施例中,可以開(kāi)始對(duì)所接收到的幀110中包含的應(yīng)用層數(shù)據(jù)進(jìn)行應(yīng)用層代理處理。所述應(yīng)用層數(shù)據(jù)是指與應(yīng)用進(jìn)程的操作相關(guān)的數(shù)據(jù),例如,包括但不限于電子郵件、HTTP報(bào)文等等,其是在分層協(xié)議信息結(jié)構(gòu)的應(yīng)用層中被進(jìn)行處理的。在透明代理網(wǎng)關(guān)103中,應(yīng)用層代理處理例如包括但不限于查殺病毒、內(nèi)容過(guò) 濾等等,如現(xiàn)有技術(shù)中所用到的那樣。在應(yīng)用層代理處理完畢之后,在適當(dāng)?shù)臅r(shí)機(jī),透明代理網(wǎng)關(guān)103將以客戶端101的身份來(lái)向服務(wù)器102發(fā)出幀111 (如圖中右側(cè)的箭頭所示),該幀111中包含了之前處理完的應(yīng)用層數(shù)據(jù)。需要注意的是,根據(jù)本發(fā)明,對(duì)于該幀111,可以使用之前所記錄的幀110的源MAC地址信息來(lái)修改幀111的首部中的對(duì)應(yīng)信息,然后再將修改后的幀111發(fā)給服務(wù)器102。通過(guò)這樣的處理,可以理解,透明代理網(wǎng)關(guān)103發(fā)出的幀111的MAC層信息是同客戶端101發(fā)出的原始幀110保持一致的,因此能夠?qū)崿F(xiàn)第二層透明。與之相比,在運(yùn)行例如Linux系統(tǒng)的現(xiàn)有透明代理網(wǎng)關(guān)上,盡管可以通過(guò)調(diào)用系統(tǒng)API修改發(fā)起方的IP地址和端口(以使得從網(wǎng)關(guān)轉(zhuǎn)發(fā)往目標(biāo)服務(wù)器的分組看起來(lái)是從原始的客戶端直接發(fā)出的,以此來(lái)實(shí)現(xiàn)第三層透明,如前所述),但是卻無(wú)法修改源MAC地址。在這種情況下,例如,作為網(wǎng)關(guān)設(shè)備和服務(wù)器之間的一些第二層過(guò)濾設(shè)備,可能完全看不到本來(lái)真實(shí)的客戶端MAC地址,而導(dǎo)致相應(yīng)的控制、準(zhǔn)入策略等一系列的問(wèn)題無(wú)法解決,造成這樣的代理實(shí)現(xiàn)不是真正的透明,也就是說(shuō),其在對(duì)數(shù)據(jù)傳輸進(jìn)行代理的過(guò)程中修改了客戶端的一些身份標(biāo)識(shí)信息。如前所述,利用本發(fā)明的設(shè)計(jì),能夠?qū)崿F(xiàn)第二層透明,從而便利了用戶網(wǎng)絡(luò)部署,同時(shí)改進(jìn)了用戶體驗(yàn)。圖2更詳細(xì)地示出了根據(jù)本發(fā)明的一個(gè)示例性實(shí)施例的系統(tǒng)200。在下文中,省略了針對(duì)與圖I中相同的單元(例如,客戶端201、服務(wù)器202等等)的說(shuō)明,而著重具體描述本發(fā)明的網(wǎng)關(guān)(或透明代理)203。如圖所示,根據(jù)本發(fā)明的一個(gè)實(shí)施例,透明代理網(wǎng)關(guān)203可以包括記錄邏輯204、應(yīng)用層代理205、以及虛擬網(wǎng)卡(VIF) 206。作為處于橋接模式的網(wǎng)關(guān),其典型地具有多個(gè)接口(即,網(wǎng)卡)以用于與各自對(duì)應(yīng)的目標(biāo)站進(jìn)行通信。為了描述的方便,在圖2中針對(duì)透明代理網(wǎng)關(guān)203僅示出了兩個(gè)接口,即能夠與客戶端201進(jìn)行通信的網(wǎng)卡207、以及能夠與服務(wù)器202進(jìn)行通信的網(wǎng)卡208。如本領(lǐng)域技術(shù)人員所已知的,通常網(wǎng)關(guān)設(shè)備中維護(hù)有一個(gè)轉(zhuǎn)發(fā)表(未示出),其中的條目(如果有的話)表明目標(biāo)站(用其MAC地址來(lái)標(biāo)識(shí))與該網(wǎng)關(guān)的一個(gè)接口之間的對(duì)應(yīng)關(guān)系,例如客戶端201對(duì)應(yīng)于網(wǎng)卡207、服務(wù)器202對(duì)應(yīng)于網(wǎng)卡208等等。透明代理網(wǎng)關(guān)203 (更具體地,例如,網(wǎng)卡207)在截取到從作為源站的客戶端201發(fā)往作為目的站的服務(wù)器202的一個(gè)幀(例如,幀210)時(shí),確定該網(wǎng)關(guān)能夠與服務(wù)器202進(jìn)行通信,例如,通過(guò)搜索轉(zhuǎn)發(fā)表,發(fā)現(xiàn)存在與服務(wù)器202相對(duì)應(yīng)的網(wǎng)卡208。在圖2中,記錄邏輯204用于記錄網(wǎng)卡207所截取的從客戶端201發(fā)往服務(wù)器202的幀210的有關(guān)信息。在本發(fā)明的一個(gè)示例性實(shí)施例中,所述信息至少包括幀210的源(即,客戶端201)MAC地址,這可以從該幀的首部中獲得。所述信息例如還可以包括但不限于幀210的目的(即,服務(wù)器202)MAC地址,這也可以從該幀的首部中獲得;與該目的MAC地址相對(duì)應(yīng)的屬于網(wǎng)關(guān)203的接口(即,網(wǎng)卡208),這可以從所述轉(zhuǎn)發(fā)表中獲得;等等。這些信息可以被相關(guān)聯(lián)地存儲(chǔ),以便于使用。作為一個(gè)非限定性的例子,在基于Linux的透明代理網(wǎng)關(guān)中,可以使用連接跟蹤來(lái)允許內(nèi)核跟蹤并記錄所有的邏輯網(wǎng)絡(luò)連接或會(huì)話。在本發(fā)明的一種示例實(shí)現(xiàn)中,可以擴(kuò)展針對(duì)每個(gè)連接而維護(hù)的數(shù)據(jù)結(jié)構(gòu)(例如,以IP地址和端口作為其標(biāo)識(shí))以便存儲(chǔ)更多的信息。例如,記錄邏輯204可以將所需的信息(例如,幀210的源和目的MAC地址等等)相 關(guān)聯(lián)地記錄在擴(kuò)展后的結(jié)構(gòu)中,供后續(xù)過(guò)程使用。通過(guò)網(wǎng)絡(luò)協(xié)議棧,之前接收到的幀210被逐層剝?nèi)ナ撞坎⑾蚋邔觽鬟f,最終其中包含的應(yīng)用層數(shù)據(jù)被傳遞給應(yīng)用層代理206以進(jìn)行常規(guī)的應(yīng)用層代理處理,例如,包括但不限于查殺病毒、內(nèi)容過(guò)濾等等。本發(fā)明的主要改進(jìn)不在于此,因此省略對(duì)其的進(jìn)一步描述。繼續(xù)參考圖2,在本發(fā)明的一個(gè)示例性實(shí)施例中,對(duì)于透明代理網(wǎng)關(guān)203響應(yīng)于接收到的幀210、而以客戶端101的身份向服務(wù)器102發(fā)送的幀211,通過(guò)VIF 206能夠?qū)崿F(xiàn)該幀中源MAC地址的恢復(fù)。虛擬網(wǎng)卡VIF 206可以通過(guò)網(wǎng)卡驅(qū)動(dòng)的形式來(lái)實(shí)現(xiàn)。在操作系統(tǒng)中加載該驅(qū)動(dòng)從而對(duì)該網(wǎng)卡進(jìn)行注冊(cè)之后,VIF 206被操作系統(tǒng)識(shí)別成是一塊普通的網(wǎng)卡。根據(jù)本發(fā)明的一個(gè)示例性實(shí)施例,VIF 206可以修改透明代理網(wǎng)關(guān)203的路由策略(例如,路由表),以使得對(duì)于經(jīng)應(yīng)用層代理205處理的、需要透明發(fā)送出去(例如,發(fā)給服務(wù)器202)的數(shù)據(jù)都被路由到VIF 206來(lái)進(jìn)行發(fā)送。VIF 206具有修改與幀210對(duì)應(yīng)的幀211的源MAC地址的能力。按照本發(fā)明的一個(gè)實(shí)施例,例如,VIF 206可以參考之前由記錄邏輯204記錄(在擴(kuò)展的連接跟蹤中)的幀210的有關(guān)信息中的對(duì)應(yīng)內(nèi)容,作為客戶端201的MAC地址;接著,將幀211的首部中的源MAC地址信息修改為所記錄的源MAC地址(即,客戶端201的MAC地址);然后,直接調(diào)用網(wǎng)卡208的發(fā)送函數(shù)將修改后的幀211發(fā)送給服務(wù)器202。由此,在透明代理網(wǎng)關(guān)203以客戶端201的身份發(fā)送給服務(wù)器202的幀211中,能夠確保源MAC地址信息也是與客戶端201自身的MAC地址一樣的,從而實(shí)現(xiàn)了第二層(MAC層)透明。在本發(fā)明的一個(gè)實(shí)施例中,例如可以利用之前記錄的信息,參考該網(wǎng)關(guān)的轉(zhuǎn)發(fā)表,來(lái)確定通過(guò)網(wǎng)卡208進(jìn)行發(fā)送。這里,由VIF 206直接調(diào)用物理網(wǎng)卡(例如,網(wǎng)卡208)的發(fā)送函數(shù),避免了通過(guò)網(wǎng)絡(luò)協(xié)議棧來(lái)針對(duì)該物理網(wǎng)卡進(jìn)行成幀的過(guò)程,從而確保了經(jīng)該物理網(wǎng)卡發(fā)出的幀的源MAC地址保持為經(jīng)上述修改后的源MAC地址(即,客戶端201的MAC地址)。本領(lǐng)域技術(shù)人員可以理解,上述各個(gè)部件的功能也可以相互組合,例如,記錄邏輯204和VIF 205可以被在實(shí)現(xiàn)單個(gè)部件中。另外,考慮802. IQ VLAN的情況,根據(jù)本發(fā)明的一個(gè)實(shí)施例,記錄邏輯204還可以附加地記錄所接收到的幀(例如,幀210)的VLAN ID,例如,可以將其與該幀的MAC地址等信息相關(guān)聯(lián)地記錄在連接跟蹤的擴(kuò)展結(jié)構(gòu)中;相應(yīng)地,VIF 206還可以利用所記錄的該VLAN ID來(lái)更改要發(fā)給服務(wù)器202的幀(例如,幀211)的VLAN ID,從而針對(duì)VLAN也能實(shí)現(xiàn)第二層透明代理。此外,利用本發(fā)明的設(shè)計(jì)思想,本領(lǐng)域技術(shù)人員可以理解,對(duì)于從服務(wù)器202發(fā)往客戶端201的數(shù)據(jù)(這時(shí),服務(wù)器202可以被看成是源站,而客戶端201則可以被看成是目的站),透明代理網(wǎng)關(guān)203可以進(jìn)行類似的處理,使得在客戶端201看來(lái),是真實(shí)的服務(wù)器 202在與它進(jìn)行直接通信,而事實(shí)上則是居間的透明代理網(wǎng)關(guān)203在以服務(wù)器202的身份與其進(jìn)行通信。此外,考慮需要通過(guò)握手來(lái)建立連接(或會(huì)話)以進(jìn)行數(shù)據(jù)傳輸?shù)那闆r(例如,使用傳輸控制協(xié)議(TCP))。根據(jù)本發(fā)明的一個(gè)示例性實(shí)施例,在這種情況下,當(dāng)客戶端201初次向服務(wù)器202發(fā)出連接建立請(qǐng)求時(shí),相應(yīng)的請(qǐng)求幀會(huì)被透明代理網(wǎng)關(guān)203的網(wǎng)卡207所截取。網(wǎng)關(guān)203確認(rèn)自己能夠與服務(wù)器202進(jìn)行通信,例如,這里是通過(guò)網(wǎng)卡208 (否則的話,網(wǎng)關(guān)203可以選擇將該請(qǐng)求幀直接通過(guò)該網(wǎng)關(guān)上除網(wǎng)卡207以外的其它網(wǎng)卡進(jìn)行廣播,如現(xiàn)有技術(shù)中的橋接設(shè)備所實(shí)現(xiàn)的那樣)。然后,記錄邏輯204可以記錄該請(qǐng)求幀的有關(guān)信息,例如,該幀的首部中的源MAC地址作為客戶端201的MAC地址,該幀的首部中的目的MAC地址作為服務(wù)器202的MAC地址,等等,本發(fā)明并不限于此。根據(jù)本發(fā)明的一個(gè)示例性實(shí)施例,在這樣的信息被記錄之后,按照握手協(xié)議,作為透明代理網(wǎng)關(guān)203響應(yīng)于該請(qǐng)求幀而以服務(wù)器202的身份向客戶端201發(fā)出的應(yīng)答幀,VIF206可以將該應(yīng)答幀的首部中的源MAC地址信息修改為所記錄的服務(wù)器202的MAC地址,并通過(guò)直接調(diào)用網(wǎng)卡207的發(fā)送函數(shù)來(lái)將修改后的該應(yīng)答幀發(fā)給客戶端201。本領(lǐng)域技術(shù)人員可以理解,客戶端201然后會(huì)響應(yīng)于接收到該應(yīng)答幀而發(fā)出再次確認(rèn)幀,正如現(xiàn)有技術(shù)所實(shí)現(xiàn)的那樣。通過(guò)這樣的握手過(guò)程,在客戶端201與透明代理網(wǎng)關(guān)203之間建立了連接(當(dāng)然,在客戶端201看來(lái),它是直接與服務(wù)器202建立了連接)。另外,在之后適當(dāng)?shù)臅r(shí)機(jī),透明代理網(wǎng)關(guān)203以客戶端201的身份(更具體地,該客戶端的MAC地址)與服務(wù)器202之間建立連接的情況與上述類似,在此不再詳述??蛻舳?01與服務(wù)器202之間的數(shù)據(jù)傳輸(例如,幀210)正是通過(guò)這樣建立的連接來(lái)進(jìn)行的。利用之前所記錄的信息,VIF 206可以把要發(fā)給服務(wù)器202的、與幀210相對(duì)應(yīng)的幀211的首部中的源MAC地址信息修改為所記錄的客戶端201的MAC地址,以此來(lái)實(shí)現(xiàn)第二層透明,如前所述。下面參考圖3,示出了根據(jù)本發(fā)明的一個(gè)示例性實(shí)施例的方法300的流程圖。所述方法300可以在具有應(yīng)用層代理功能的網(wǎng)關(guān)(例如,透明代理網(wǎng)關(guān)103、203)中實(shí)現(xiàn)。如圖所示,該過(guò)程開(kāi)始于步驟S301,在該步驟中,對(duì)網(wǎng)關(guān)中的第一網(wǎng)卡所截取的從源站發(fā)往目的站的第一幀中包含的應(yīng)用層數(shù)據(jù)進(jìn)行處理。參考結(jié)合圖2給出的例子,對(duì)于透明代理網(wǎng)關(guān)203 (更具體地,其中的能夠與客戶端201進(jìn)行通信的網(wǎng)卡207)所截取的從客戶端201發(fā)往服務(wù)器202的幀210中包含的應(yīng)用層數(shù)據(jù),例如包括但不限于電子郵件、HTTP報(bào)文等等,作為具有應(yīng)用層代理功能的網(wǎng)關(guān)203,其中的應(yīng)用層代理205可以對(duì)該應(yīng)用層數(shù)據(jù)進(jìn)行處理,例如包括但不限于查殺病毒、內(nèi)容過(guò)濾等等。網(wǎng)關(guān)為了實(shí)現(xiàn)代理功能,需要以源站的身份來(lái)將之前從源站截取的數(shù)據(jù)(其已經(jīng)過(guò)了網(wǎng)關(guān)的處理)發(fā)往目的端。根據(jù)本發(fā)明的一個(gè)示例性實(shí)施例,在步驟S302,把要響應(yīng)于所述第一幀而發(fā)給所述目的站的、包含經(jīng)處理的應(yīng)用層數(shù)據(jù)的第二幀的首部中的源MAC地址信息修改為所述源站的MAC地址。繼續(xù)參考圖2,在應(yīng)用層代理205對(duì)幀210中包含的應(yīng)用層數(shù)據(jù)進(jìn)行處理之后,VIF 206可以把所形成的包含經(jīng)處理的該應(yīng)用層數(shù)據(jù)的第二幀211的首部中的源MAC地址信息修改為客戶端201自身 的MAC地址。也就是說(shuō),這樣修改后的幀211的首部中的MAC地址信息是與客戶端201原始發(fā)出的幀210的首部中的MAC地址信息保持一致的。然后,該過(guò)程前進(jìn)到步驟S303,在該步驟中,通過(guò)直接調(diào)用所述網(wǎng)關(guān)中的第二網(wǎng)卡的發(fā)送函數(shù),將所述第二幀發(fā)送給所述目的站。繼續(xù)參考圖2,VIF 206可以在上述修改操作完成之后,直接調(diào)用透明代理網(wǎng)關(guān)203中真實(shí)的物理網(wǎng)卡208 (其能夠與服務(wù)器202進(jìn)行通信)的發(fā)送函數(shù),使得幀211被真正發(fā)給服務(wù)器202。由此,根據(jù)本發(fā)明的一個(gè)實(shí)施例的能夠?qū)崿F(xiàn)MAC層透明代理的方法300可以結(jié)束。此外,在本發(fā)明的一個(gè)實(shí)施例中,在步驟S301之前,還可以當(dāng)所述第一幀(例如,幀210)被所述第一網(wǎng)卡(例如,網(wǎng)卡207)所截取時(shí),記錄幀210的首部中的源MAC地址信息,作為客戶端201的MAC地址,以供后續(xù)的修改步驟使用。此外,在該記錄步驟中,還可以記錄幀210的首部中的目的MAC地址信息,作為服務(wù)器202的MAC地址。而且,在幀210具有VLAN標(biāo)記的情況下,在該記錄步驟中,還可以記錄幀210的VLAN標(biāo)識(shí)符;并且在所述修改步驟S302中,還可以將幀211的VLAN標(biāo)識(shí)符修改為所記錄的幀210的VLAN標(biāo)識(shí)符。作為一種具體的實(shí)現(xiàn)方式,所記錄的這些信息,例如包括但不限于源站的MAC地址、目的站的MAC地址以及VLAN標(biāo)識(shí)符等等,可以被存儲(chǔ)在經(jīng)擴(kuò)展的連接跟蹤中,如前所述。此外,在本發(fā)明的一個(gè)實(shí)施例中,在步驟S301之前,還可以在要求在作為源站的客戶端201和作為目的站的服務(wù)器202之間建立連接的請(qǐng)求幀被網(wǎng)卡207所截取時(shí)(例如,考慮需要通過(guò)握手來(lái)建立連接以繼續(xù)數(shù)據(jù)傳輸?shù)那闆r,其中,包含應(yīng)用層數(shù)據(jù)的幀210是通過(guò)建立后的連接來(lái)進(jìn)行傳輸?shù)?,記錄該請(qǐng)求幀的首部中的源MAC地址信息,作為客戶端201的MAC地址,以供后續(xù)的修改步驟S302使用。類似地,還可以記錄該請(qǐng)求幀的目的MAC地址信息以作為服務(wù)器202的MAC地址、以及VLAN標(biāo)識(shí)符,等等。而且,響應(yīng)于所截取的該請(qǐng)求幀,作為透明代理網(wǎng)關(guān)203以服務(wù)器202的身份與客戶端201通過(guò)握手建立連接的一部分,還可以例如通過(guò)VIF 206,將響應(yīng)于該請(qǐng)求幀的應(yīng)答幀的首部中的源MAC地址信息修改為所記錄的服務(wù)器202的MAC地址,然后調(diào)用網(wǎng)卡207的發(fā)送函數(shù)來(lái)將這樣的應(yīng)答幀發(fā)送給客戶端201。以上參照?qǐng)D3描述了示例性的方法300,本領(lǐng)域技術(shù)人員可以理解,上述方法步驟僅僅是示例性的而非限制性的,取決于具體實(shí)現(xiàn),所述方法還可以包含更多附加的/替代的步驟。在一個(gè)或多個(gè)方案中,這些方法步驟對(duì)應(yīng)的功能可以在硬件、軟件、固件或其任意組合中實(shí)現(xiàn)。圖4示出了根據(jù)本發(fā)明的一個(gè)示例性實(shí)施例的裝置400的框圖。
所述裝置400至少包括如下部分修改模塊401,用于在網(wǎng)關(guān)中能夠與源站進(jìn)行通信的第一網(wǎng)卡所截取的從所述源站發(fā)往目的站的第一幀中包含的應(yīng)用層數(shù)據(jù)被進(jìn)行處理之后,把要響應(yīng)于所述第一幀而發(fā)送給所述目的站的、包含經(jīng)處理的所述應(yīng)用層數(shù)據(jù)的第二幀的首部中的源MAC地址信息修改為所述源站的MAC地址;以及,發(fā)送模塊402,用于通過(guò)調(diào)用所述網(wǎng)關(guān)中能夠與所述目的站進(jìn)行通信的第二網(wǎng)卡的發(fā)送函數(shù),將所述第二幀發(fā)送給所述目的站。此外,所述裝置400還可以包括附加的/替代的模塊,用以實(shí)現(xiàn)更多對(duì)應(yīng)的功能,例如,前面結(jié)合方法300所描述的。 所述裝置400例如可以對(duì)應(yīng)于圖I、圖2所示的網(wǎng)關(guān)設(shè)備103、203,或者是其中的一個(gè)或多個(gè)組件。應(yīng)當(dāng)理解的是,裝置400被描述為包括多個(gè)模塊,其可以是表示由硬件、軟件或其組合所實(shí)現(xiàn)的功能模塊。盡管前面描述并示出了本發(fā)明的一些實(shí)施例,但是本領(lǐng)域技術(shù)人員很容易就能夠想到,對(duì)于這些實(shí)施例的許多修改和變型也同樣是可行的。因此,應(yīng)該理解,所附權(quán)利要求旨在涵蓋落入本發(fā)明的實(shí)質(zhì)和范圍之內(nèi)的所有這樣的修改和變型。
權(quán)利要求
1.一種實(shí)現(xiàn)媒體接入控制(MAC)層透明代理的方法,包括 在網(wǎng)關(guān)中能夠與源站進(jìn)行通信的第一網(wǎng)卡所截取的從所述源站發(fā)往目的站的第一幀中包含的應(yīng)用層數(shù)據(jù)被進(jìn)行處理之后,把要響應(yīng)于所述第一幀而發(fā)給所述目的站的、包含經(jīng)處理的所述應(yīng)用層數(shù)據(jù)的第二幀的首部中的源MAC地址信息修改為所述源站的MAC地址;以及 通過(guò)調(diào)用所述網(wǎng)關(guān)中能夠與所述目的站進(jìn)行通信的第二網(wǎng)卡的發(fā)送函數(shù),將所述第二幀發(fā)送給所述目的站。
2.根據(jù)權(quán)利要求I所述的方法,還包括 當(dāng)所述第一幀被所述第一網(wǎng)卡截取時(shí),記錄所述第一幀的首部中的源MAC地址信息,作為所述源站的MAC地址。
3.根據(jù)權(quán)利要求2所述的方法,其中, 所述記錄的步驟還包括記錄所述第一幀的首部中的目的MAC地址信息,作為所述目的站的MAC地址。
4.根據(jù)權(quán)利要求2所述的方法,其中,所述第一幀具有虛擬局域網(wǎng)(VLAN)標(biāo)記,并且其中, 所述記錄的步驟還包括記錄所述第一幀的VLAN標(biāo)記中的VLAN標(biāo)識(shí)符;并且所述修改的步驟還包括將所述第二幀的VLAN標(biāo)記中的VLAN標(biāo)識(shí)符修改為所記錄的第一幀的VLAN標(biāo)識(shí)符。
5.根據(jù)權(quán)利要求I所述的方法,還包括 當(dāng)要求在所述源站和所述目的站之間建立連接的請(qǐng)求幀被所述第一網(wǎng)卡截取時(shí),記錄所述請(qǐng)求幀的首部中的源MAC地址信息,作為所述源站的MAC地址,其中,所述第一幀是通過(guò)所要建立的連接來(lái)傳輸?shù)摹?br>
6.根據(jù)權(quán)利要求5所述的方法,其中, 所述記錄的步驟還包括記錄所述請(qǐng)求幀的首部中的目的MAC地址信息,作為所述目的站的MAC地址。
7.根據(jù)權(quán)利要求6所述的方法,還包括 將響應(yīng)于所述請(qǐng)求幀的應(yīng)答幀的首部中的源MAC地址信息修改為所記錄的所述目的站的MAC地址;以及 通過(guò)調(diào)用所述第一網(wǎng)卡的發(fā)送函數(shù),將所述應(yīng)答幀發(fā)送給所述源站。
8.根據(jù)權(quán)利要求5所述的方法,其中,所述請(qǐng)求幀具有虛擬局域網(wǎng)(VLAN)標(biāo)記,并且其中, 所述記錄的步驟還包括記錄所述請(qǐng)求巾貞的VLAN標(biāo)記中的VLAN標(biāo)識(shí)符;并且所述修改的步驟還包括將所述第二幀的VLAN標(biāo)記中的VLAN標(biāo)識(shí)符修改為所記錄的請(qǐng)求幀的VLAN標(biāo)識(shí)符。
9.根據(jù)權(quán)利要求2至8之任一所述的方法,其中,所記錄的信息被存儲(chǔ)在經(jīng)擴(kuò)展的連接跟蹤中。
10.一種實(shí)現(xiàn)媒體接入控制(MAC)層透明代理的裝置,包括 修改模塊,用于在網(wǎng)關(guān)中能夠與源站進(jìn)行通信的第一網(wǎng)卡所截取的從所述源站發(fā)往目的站的第一幀中包含的應(yīng)用層數(shù)據(jù)被進(jìn)行處理之后,把要響應(yīng)于所述第一幀而發(fā)給所述目的站的、包含經(jīng)處理的所述應(yīng)用層數(shù)據(jù)的第二幀的首部中的源MAC地址信息修改為所述源站的MAC地址;以及 發(fā)送模塊,用于通過(guò)調(diào)用所述網(wǎng)關(guān)中能夠與所述目的站進(jìn)行通信的第二網(wǎng)卡的發(fā)送函數(shù),將所述第二幀發(fā)送給所述目的站。
11.根據(jù)權(quán)利要求10所述的裝置,還包括 記錄模塊,用于當(dāng)所述第一幀被所述第一網(wǎng)卡截取時(shí),記錄所述第一幀的首部中的源MAC地址信息,作為所述源站的MAC地址。
12.根據(jù)權(quán)利要求11所述的裝置,其中, 所述記錄模塊還記錄所述第一幀的首部中的目的MAC地址信息,作為所述目的站的MAC地址。
13.根據(jù)權(quán)利要求11所述的裝置,其中,所述第一幀具有虛擬局域網(wǎng)(VLAN)標(biāo)記,并且其中, 所述記錄模塊還記錄所述第一幀的VLAN標(biāo)記中的VLAN標(biāo)識(shí)符;并且 所述修改模塊還將所述第二幀的VLAN標(biāo)記中的VLAN標(biāo)識(shí)符修改為所記錄的第一幀的VLAN標(biāo)識(shí)符。
14.根據(jù)權(quán)利要求10所述的裝置,還包括 記錄模塊,用于當(dāng)要求在所述源站和所述目的站之間建立連接的請(qǐng)求幀被所述第一網(wǎng)卡截取時(shí),記錄所述請(qǐng)求幀的首部中的源MAC地址信息,作為所述源站的MAC地址,其中,所述第一幀是通過(guò)所要建立的連接來(lái)傳輸?shù)摹?br>
15.根據(jù)權(quán)利要求14所述的裝置,其中, 所述記錄模塊還記錄所述請(qǐng)求幀的首部中的目的MAC地址信息,作為所述目的站的MAC地址。
16.根據(jù)權(quán)利要求15所述的裝置,還包括 用于將響應(yīng)于所述請(qǐng)求幀的應(yīng)答幀的首部中的源MAC地址信息修改為所記錄的所述目的站的MAC地址的模塊;以及 用于通過(guò)調(diào)用所述第一網(wǎng)卡的發(fā)送函數(shù),將所述應(yīng)答幀發(fā)送給所述源站的模塊。
17.根據(jù)權(quán)利要求14所述的裝置,其中,所述請(qǐng)求幀具有虛擬局域網(wǎng)(VLAN)標(biāo)記,并且其中, 所述記錄模塊還記錄所述請(qǐng)求巾貞的VLAN標(biāo)記中的VLAN標(biāo)識(shí)符;并且 所述修改模塊還將所述第二幀的VLAN標(biāo)記中的VLAN標(biāo)識(shí)符修改為所記錄的請(qǐng)求幀的VLAN標(biāo)識(shí)符。
18.根據(jù)權(quán)利要求9至17之任一項(xiàng)所述的裝置,其中,所記錄的信息被存儲(chǔ)在經(jīng)擴(kuò)展的連接跟S示中。
全文摘要
公開(kāi)了一種實(shí)現(xiàn)媒體接入控制(MAC)層透明代理的方法和裝置。在網(wǎng)關(guān)中能夠與源站進(jìn)行通信的第一網(wǎng)卡所截取的從所述源站發(fā)往目的站的第一幀中包含的應(yīng)用層數(shù)據(jù)被進(jìn)行處理之后,要響應(yīng)于所述第一幀而發(fā)給所述目的站的、包含經(jīng)處理的所述應(yīng)用層數(shù)據(jù)的第二幀的首部中的源MAC地址信息被修改為所述源站的MAC地址,并且,通過(guò)調(diào)用所述網(wǎng)關(guān)中能夠與所述目的站進(jìn)行通信的第二網(wǎng)卡的發(fā)送函數(shù),所述第二幀被發(fā)送給所述目的站。
文檔編號(hào)H04L29/06GK102761534SQ20111011972
公開(kāi)日2012年10月31日 申請(qǐng)日期2011年4月29日 優(yōu)先權(quán)日2011年4月29日
發(fā)明者馮景輝 申請(qǐng)人:北京瑞星信息技術(shù)有限公司