亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

檢測極小分段攻擊的裝置和方法

文檔序號:7605202閱讀:233來源:國知局
專利名稱:檢測極小分段攻擊的裝置和方法
背景技術(shù)
傳輸控制協(xié)議/因特網(wǎng)協(xié)議(TCP/IP)協(xié)議套(protocol suite)允許運(yùn)行完全不同的操作系統(tǒng)、來自許多不同的計(jì)算機(jī)供應(yīng)商的所有型號的計(jì)算機(jī)彼此通信。由Stevens,W.Richard于1994年著的“TCP/IP Illustrated”(其通過引用被結(jié)合于此)第1卷描述了TCP/IP協(xié)議套的總的方面。請求注解(RFC)793(也通過引用結(jié)合于此)被認(rèn)為是主要的TCP規(guī)范。出于情報目的,還公開了描述TCP和IP的其他RFC。RFC由因特網(wǎng)工程任務(wù)組(IETF)在www.ietf.org處提供。
圖1是示出了下述聯(lián)網(wǎng)的系統(tǒng)的框圖,該系統(tǒng)包括一對執(zhí)行TCP/IP協(xié)議套的計(jì)算機(jī)系統(tǒng)(節(jié)點(diǎn))12和14。在圖1中,節(jié)點(diǎn)12和14通過經(jīng)由路由器16和以太網(wǎng)通信鏈路20和22傳輸數(shù)據(jù)幀來彼此通信。
圖2是示出了TCP/IP協(xié)議套的相關(guān)組件的框圖。更具體地說,示出了分別具有4層通信層30~36和40~46的節(jié)點(diǎn)12和14。層30~36和層40~46采用分別在節(jié)點(diǎn)12和14中的一個或更多個處理器上執(zhí)行的軟件的形式。層32~36和層42~46分別實(shí)現(xiàn)在節(jié)點(diǎn)12和14的操作系統(tǒng)中,而層30和40則采用多種用戶應(yīng)用中的任何一種的形式,所述用戶應(yīng)用包括文件傳輸協(xié)議(FTP)、簡單郵件傳輸協(xié)議(SMTP)、用于遠(yuǎn)程登錄的telnet等。
層32和42通常分別被稱作傳輸層。存在數(shù)種不同的傳輸層,包括TCP和用戶數(shù)據(jù)報(UDP)。為了解釋,層32和42將采用TCP或UDP傳輸層之一的形式。層34和44通常稱作網(wǎng)絡(luò)層。網(wǎng)絡(luò)層可以采用多種形式,例如,因特網(wǎng)控制消息協(xié)議(ICMP)或IP。為了解釋,圖2將用采用公知的IP網(wǎng)絡(luò)層形式的層34和44來描述。最后,層36和46通常被稱作鏈路層或網(wǎng)絡(luò)接口層。該層處理物理連接通信鏈路的細(xì)節(jié)。為了解釋,鏈路層36和46將采用分別連接以太網(wǎng)通信鏈路20和22的以太網(wǎng)鏈路層的形式。
大多聯(lián)網(wǎng)系統(tǒng)被如此設(shè)計(jì),以使至少一個節(jié)點(diǎn)為到服務(wù)器節(jié)點(diǎn)的客戶機(jī)。在圖2中,節(jié)點(diǎn)12被表示為到服務(wù)器節(jié)點(diǎn)14的客戶機(jī)。在此配置中,服務(wù)器應(yīng)用40響應(yīng)于來自客戶機(jī)應(yīng)用30的請求,提供某些類型的服務(wù)(例如,SMTP)。在客戶機(jī)應(yīng)用30與服務(wù)器應(yīng)用40進(jìn)行包括請求服務(wù)在內(nèi)的通信時,客戶機(jī)應(yīng)用30向下發(fā)送數(shù)據(jù),通過層32~36,直到該數(shù)據(jù)作為比特流經(jīng)由路由器16和通信鏈路20和22到達(dá)節(jié)點(diǎn)14。節(jié)點(diǎn)14接收到的數(shù)據(jù)被向上發(fā)送,通過層46~42,直到該數(shù)據(jù)到達(dá)服務(wù)器應(yīng)用40。
在數(shù)據(jù)沿節(jié)點(diǎn)12的層30~36向下移動時,層30~36中的每層都添加包含通信信息的頭部(有時是尾部)。圖3示出了這一過程的相關(guān)方面。圖3示出了由應(yīng)用層30生成的數(shù)據(jù)50。應(yīng)用頭部52被應(yīng)用層30連接到數(shù)據(jù)50,其結(jié)果作為應(yīng)用數(shù)據(jù)54被提供給TCP/UDP層32。然后,TCP/UDP層32將TCP或UDP頭部連接到自應(yīng)用層30接收到的應(yīng)用數(shù)據(jù)54。為了解釋,TCP/UDP層32將TCP頭部56連接到應(yīng)用數(shù)據(jù)54,其結(jié)果被提供給IP層34。TCP層32發(fā)送給IP層34的數(shù)據(jù)單元被稱作IP有效載荷。IP層34將IP頭部60連接到其接收到的IP有效載荷,其結(jié)果被提供給以太網(wǎng)鏈路36。一般來說,層34發(fā)送給層36的數(shù)據(jù)單元被稱作IP數(shù)據(jù)報(數(shù)據(jù)報)或分組。下面將對其進(jìn)行更全面的描述,數(shù)據(jù)報可以被分段,并且作為數(shù)據(jù)報分段(fragment)發(fā)送給以太網(wǎng)層36。以太網(wǎng)層36將以太網(wǎng)頭部62和以太網(wǎng)尾部64附加到自IP層34接收到的數(shù)據(jù)報或數(shù)據(jù)報分段,其結(jié)果被稱作以太網(wǎng)幀。
以太網(wǎng)幀作為比特流經(jīng)由路由器16和以太網(wǎng)通信鏈路20和22被傳輸給節(jié)點(diǎn)14(圖2)。當(dāng)在目的地節(jié)點(diǎn)14接收到以太網(wǎng)幀時,該幀向上移動,通過協(xié)議層46~42,并且所有的頭部(和尾部)都被適當(dāng)?shù)膮f(xié)議層移除,直到原始數(shù)據(jù)50被提供給服務(wù)器應(yīng)用40。每層都查看在其對應(yīng)的頭部中的特定的標(biāo)識符來確定哪個后續(xù)層將接收該數(shù)據(jù)。這被稱作解復(fù)用。例如,在以太網(wǎng)層46分別將其接收到的幀的數(shù)據(jù)報或數(shù)據(jù)報分段的以太網(wǎng)頭部和尾部62和64剝離后,該以太網(wǎng)層46將其路由至IP層44。
圖4更詳細(xì)地示出了示例性的以太網(wǎng)幀。以太網(wǎng)幀包括頭部62、數(shù)據(jù)報64和尾部66。頭部62包括6字節(jié)以太網(wǎng)目的地地址、6字節(jié)以太網(wǎng)源地址和2字節(jié)類型編碼。以太網(wǎng)尾部66包括循環(huán)冗余校驗(yàn)(CRC)字段。CRC字段用來檢測幀的其他部分中的錯誤。在本說明書的圖中(包括圖4),在以太網(wǎng)幀頭部中與2字節(jié)類型編碼相鄰處示出了空的2字節(jié)字段。該空字段未包含數(shù)據(jù)。該空字段僅僅在這些圖中提供,以使數(shù)據(jù)報64可以被定位為開始于頭部之后的第一行的第一個比特處。
圖5示出了具有IP頭部80和IP有效載荷(例如,TCP段(segment))82的示例性IP數(shù)據(jù)報。圖5示出的IP頭部包括多個字段,每個都存儲有值。4比特的頭部長度字段定義IP頭部中的32比特字的數(shù)目,包括任何可選字段。16比特的總長字段以字節(jié)為單位定義IP數(shù)據(jù)報的總長??傞L減去頭部長度可以用來確定IP有效載荷(例如,TCP段)的長度。8比特的協(xié)議字段定義要接收該數(shù)據(jù)報的IP有效載荷的傳輸層(例如,TCP或UDP)。
通常,對可以在節(jié)點(diǎn)12和節(jié)點(diǎn)14之間傳輸?shù)膸拇笮∈┘右陨舷?。許多IP數(shù)據(jù)報被分段來滿足這種限制。這樣,IP數(shù)據(jù)報可以被分段為IP數(shù)據(jù)報分段,每個IP數(shù)據(jù)報分段被提供給以太網(wǎng)層以在分離的幀中傳輸。當(dāng)IP數(shù)據(jù)報被分段后,直到到達(dá)其最終目的地才對其進(jìn)行重組。在目的地處的IP層執(zhí)行重組。圖5中示出的16比特的標(biāo)識字段對于發(fā)送者傳輸?shù)拿總€IP數(shù)據(jù)報都具有唯一的值。該數(shù)字被復(fù)制到具體數(shù)據(jù)報的每個分段中。圖5中示出的頭部的13比特的分段偏移字段包括該分段從原始IP數(shù)據(jù)報的開始起的偏移(以8字節(jié)單位)。在IP數(shù)據(jù)報被分段后,每個分段的總長字段被改變?yōu)槟莻€分段的大小。
圖6和圖7分別示出了UDP和TCP段。在圖7中,TCP段(IP有效載荷)包括TCP頭部90和應(yīng)用數(shù)據(jù)。TCP頭部90包括數(shù)個字段,每個都包含有值。4比特的頭部長度以32比特字為單位定義TCP頭部的長度。當(dāng)尋求在節(jié)點(diǎn)12和14之間建立新的連接來例如用于文件傳輸時,TCP頭部90的1比特的SYN標(biāo)志被開啟,或者說設(shè)置為二進(jìn)制1。TCP頭部和UDP頭部都包括16比特的端口號字段。服務(wù)器(例如,節(jié)點(diǎn)14)通常由它們的公知端口號而被人所知。例如,提供FTP服務(wù)器的每個TCP/IP實(shí)現(xiàn)都在TCP端口號21上提供該服務(wù)。Telnet服務(wù)器通常在TCP端口號23上。
計(jì)算機(jī)系統(tǒng)(例如,圖2的節(jié)點(diǎn)14)的未經(jīng)授權(quán)的訪問(即,黑客行為)一直是個問題。常常在路由器(例如,路由器16)中提供過濾器來阻止計(jì)算機(jī)系統(tǒng)的未經(jīng)授權(quán)的訪問。有時被稱作防火墻的過濾器可以采用硬件的形式,和/或者在一個或更多處理器中執(zhí)行的軟件的形式。圖2示出了具有過濾器100的路由器16。過濾器100檢查由路由器16接收到的幀(或者幀的IP數(shù)據(jù)報),以確保這些幀不是設(shè)計(jì)來在節(jié)點(diǎn)14處發(fā)起未經(jīng)授權(quán)的操作。如果過濾器100認(rèn)為幀是授權(quán)的操作的一部分,則允許該幀通過過濾器。如果過濾器認(rèn)為幀是未經(jīng)授權(quán)的操作的一部分,則該幀被過濾器100丟棄,以使該幀不能到達(dá)其最終目的地(即,節(jié)點(diǎn)14)。
過濾器100對其接收到的幀執(zhí)行多種檢查。例如,過濾器100比較其接收到的所有幀的目的地端口號和SYN標(biāo)志值。如果所接收到的幀的目的地端口號和SYN標(biāo)志值分別等于21和二進(jìn)制1,則接收到的幀被配置為發(fā)起未經(jīng)授權(quán)的文件傳輸協(xié)議(FTP),從而將被過濾器100丟棄。圖8示出了具有下述TCP頭部90的幀102,該TCP頭部90具有分別設(shè)置為21和二進(jìn)制1的目的地端口號和SYN標(biāo)志。幀102被配置為在節(jié)點(diǎn)14處發(fā)起文件傳輸。過濾器100將丟棄幀102。
如上所述,IP數(shù)據(jù)報可以被分段來滿足對可以在節(jié)點(diǎn)12和14之間傳輸?shù)膸拇笮〉南拗?。直到分段的IP數(shù)據(jù)報到達(dá)它們的最終目的地(例如,節(jié)點(diǎn)14),才對它們進(jìn)行重組。這樣,包含數(shù)據(jù)報分段的以太網(wǎng)幀在到達(dá)目的地節(jié)點(diǎn)14之前可以通過路由器16及其過濾器100。分段可用來在過濾器100面前對幀進(jìn)行偽裝。一種用于使用分段來對幀進(jìn)行偽裝的技術(shù)常常被稱作“極小分段攻擊”。例如,圖9和圖10示出了包含數(shù)據(jù)報分段的幀,當(dāng)在節(jié)點(diǎn)14處重組時,其可以發(fā)起未經(jīng)授權(quán)的文件傳輸操作。更具體地說,圖9示出了包括以太網(wǎng)頭部62、數(shù)據(jù)報分段64和CRC66的幀104。幀104的數(shù)據(jù)報分段64包括完整的IP和TCP頭部。圖10中示出的幀106也包括以太網(wǎng)頭部62、數(shù)據(jù)報分段64和CRC 66。數(shù)據(jù)報分段64包括具有設(shè)置為0的分段偏移的IP頭部80和小于完整TCP頭部的TCP頭部90。因此,幀106的數(shù)據(jù)報分段64被稱作極小分段。下面將更加全面地描述,過濾器100將把幀104和106傳遞給節(jié)點(diǎn)14。圖11示出了在節(jié)點(diǎn)14對幀104和106的數(shù)據(jù)報分段的有效載荷進(jìn)行重組時作為結(jié)果的數(shù)據(jù)報有效載荷。圖11的數(shù)據(jù)報有效負(fù)載在節(jié)點(diǎn)14處發(fā)起未經(jīng)授權(quán)的FTP。
圖9和圖10示出的幀104和106分別被順序傳輸給路由器16。如上所述,過濾器100執(zhí)行的檢查之一是將所接收到的幀的目的地端口號和SYN標(biāo)志值分別與21和二進(jìn)制1進(jìn)行比較。在圖9的幀104中,TCP頭部90中的目的地端口號被設(shè)置為23,同時SYN標(biāo)志被設(shè)置為二進(jìn)制1。利用這些目的地端口號和SYN標(biāo)志值,幀104通過上述過濾器檢查,然后幀104被轉(zhuǎn)發(fā)給節(jié)點(diǎn)14。圖10示出的幀106只包括源端口號、目的地端口號和順序號。過濾器100將讓幀106通過,這是由于幀106缺少等于21的目的地端口號和等于二進(jìn)制1的SYN標(biāo)志。注意,在幀106中分段偏移被設(shè)置為0。這樣,當(dāng)在節(jié)點(diǎn)14處包含在幀104和106中的數(shù)據(jù)報有效載荷分段被重組時,將用圖10示出的TCP頭部90的源端口號、目的地端口號和順序號分別覆寫圖9示出的TCP頭部90的源端口號、目的地端口號和順序號,結(jié)果導(dǎo)致圖11示出的數(shù)據(jù)報。
可以避免上述極小分段攻擊。更具體地說,RFC 3128描述了一種算法,該算法可以被用在過濾器100中來避免上述極小分段攻擊。RFC 3128的算法為如果(協(xié)議=TCP)如果(分段偏移=0)檢查長度1≥16字節(jié)否則檢查分段偏移≥2,其中長度1是由過濾器100根據(jù)下述公式針對每個幀計(jì)算出的長度1(以字節(jié)為單位)=(所接收到的幀的IP頭部中的總長度值)-((所接收到的幀的IP頭部中的IP頭部長度值)×4)。
根據(jù)上述RFC 3128算法,過濾器100將丟棄其接收到的任何下述幀所述幀的IP頭部的協(xié)議字段被設(shè)置為TCP、IP頭部的分段偏移被設(shè)置為0、并且所計(jì)算出的長度1小于16字節(jié)。另外,如果所接收到的任何幀的IP頭部的分段偏移被設(shè)置為1,則過濾器100將其丟棄。圖9示出的幀104將通過由執(zhí)行上述RFC 3128算法的過濾器100執(zhí)行的兩種檢查。然而,圖10示出的幀106將被過濾器100丟棄,這是由于所計(jì)算出的幀106的長度為8字節(jié)。
上述RFC 3128算法不能避免上述極小分段攻擊的某些變體。為了說明,圖12示出了具有以太網(wǎng)頭部62、數(shù)據(jù)報64和CRC 66的幀108。從圖12可見,幀108的TCP頭部90與圖10示出的TCP頭部90相似,小于全面的或完整的TCP頭部。還要注意,在幀108中,即使數(shù)據(jù)報64的實(shí)際總長度為28字節(jié),IP頭部的總長度字段的值也是36字節(jié)。幀108可以通過上述RFC 3128算法,這是由于計(jì)算出的長度1是16字節(jié)。遺憾的是,如果幀108通過了過濾器100,并且?guī)?08的數(shù)據(jù)報64與節(jié)點(diǎn)14的存儲器中的隨機(jī)數(shù)據(jù)相組合,則結(jié)果可能產(chǎn)生諸如文件傳輸協(xié)議之類的未經(jīng)授權(quán)的操作。

發(fā)明內(nèi)容
本發(fā)明公開了用于檢查以太網(wǎng)幀的方法和裝置。該方法可以被實(shí)現(xiàn)在執(zhí)行存儲在存儲器中的軟件指令的處理器中。在本發(fā)明的一種實(shí)施例中,該方法包括接收以太網(wǎng)幀,并且對該以太網(wǎng)幀的數(shù)據(jù)字節(jié)進(jìn)行計(jì)數(shù),以生成計(jì)數(shù)出的字節(jié)的總數(shù)目。計(jì)數(shù)出的字節(jié)的總數(shù)目可以用來計(jì)算以太網(wǎng)幀的數(shù)據(jù)報的數(shù)據(jù)長度。一旦計(jì)算出數(shù)據(jù)報數(shù)據(jù)長度,就可以與預(yù)定的值相比較。如果數(shù)據(jù)報長度超過預(yù)定的值,則可以丟棄以太網(wǎng)幀,以使該以太網(wǎng)幀不能到達(dá)其最終目的地。


通過參考附圖,可以更好地理解本發(fā)明,并且使其各種目的、特征和優(yōu)點(diǎn)對本領(lǐng)域的技術(shù)人員變清楚。
圖1是示出了聯(lián)網(wǎng)系統(tǒng)的相關(guān)組件的框圖;圖2是示出了圖1示出的聯(lián)網(wǎng)系統(tǒng)的節(jié)點(diǎn)的相關(guān)組件的框圖;圖3示出了圖2示出的節(jié)點(diǎn)之一的各層之間的數(shù)據(jù)傳輸?shù)亩鄠€方面;圖4是表示典型的以太網(wǎng)幀的框圖;圖5是表示典型的IP數(shù)據(jù)報的框圖;圖6是表示典型的UDP段的框圖;圖7是表示典型的TCP段的框圖;圖8是表示示例性以太網(wǎng)幀的框圖;圖9是表示示例性以太網(wǎng)幀的框圖;圖10是表示示例性以太幀的框圖;圖11是表示示例性IP數(shù)據(jù)報的框圖;圖12是表示示例性IP數(shù)據(jù)報的框圖;圖13是示出了應(yīng)用本發(fā)明一種實(shí)施例的聯(lián)網(wǎng)系統(tǒng)的相關(guān)組件的框圖;以及圖14是示出了應(yīng)用在圖13示出的路由器或交換機(jī)中的過濾器的一種實(shí)施例的相關(guān)組件的框圖。
在不同的附圖中,使用相同的標(biāo)號指示相似或相同的項(xiàng)目。
具體實(shí)施例方式
圖13是示出了應(yīng)用本發(fā)明一種實(shí)施例的聯(lián)網(wǎng)系統(tǒng)110的相關(guān)組件的框圖。圖13示出了執(zhí)行TCP/IP協(xié)議套的一對計(jì)算機(jī)系統(tǒng)(節(jié)點(diǎn))112和114。在圖13中,節(jié)點(diǎn)112和114經(jīng)由路由器或交換機(jī)116和以太網(wǎng)通信鏈路120和122彼此耦合。在一種實(shí)施例中,本發(fā)明可以采用在路由器或交換機(jī)116中的一個或更多處理器上執(zhí)行的軟件的形式。在另一種實(shí)施例中,本發(fā)明可以采用路由器或交換機(jī)116中的專用集成電路(ASIC)的形式。本發(fā)明不應(yīng)當(dāng)被限制在路由器或交換機(jī)116中使用。本發(fā)明可以用于例如節(jié)點(diǎn)114中。為了解釋,本發(fā)明將被解釋為用在路由器116中,但是,應(yīng)當(dāng)理解本發(fā)明不應(yīng)被限于此。
節(jié)點(diǎn)112和114被示為分別具有4個通信層130~136和140~146。層130~136和140~146分別采用在節(jié)點(diǎn)112和114中的一個或更多個處理器上執(zhí)行的軟件指令的形式。層132~136和142~146分別實(shí)現(xiàn)在節(jié)點(diǎn)112和114的操作系統(tǒng)中。層130和140,以及節(jié)點(diǎn)112和114分別采用下述多種用戶應(yīng)用中的任何一種的形式,所述用戶應(yīng)用包括FTP、SMTP和telnet等。
為了解釋,層132和142將采用TCP或UDP傳輸層的形式,同時層134和144降采用IP網(wǎng)絡(luò)層的形式,層136和146分別采用用于連接以太網(wǎng)通信鏈路120和122的以太網(wǎng)鏈路層的形式。在圖13中,節(jié)點(diǎn)112被表示為到服務(wù)器節(jié)點(diǎn)114的客戶機(jī)節(jié)點(diǎn)。服務(wù)器應(yīng)用140響應(yīng)于來自客戶機(jī)應(yīng)用130的請求,向客戶機(jī)應(yīng)用130提供某些類型的服務(wù)(例如,SMTP)??蛻魴C(jī)應(yīng)用130通過下述方式與服務(wù)器應(yīng)用140通信連同所附的頭部和/或尾部一起向下發(fā)送數(shù)據(jù),通過層132~136,直到該數(shù)據(jù)經(jīng)由路由器116和通信鏈路120和122作為比特流而被發(fā)送給節(jié)點(diǎn)114。節(jié)點(diǎn)114接收到的數(shù)據(jù)被向上發(fā)送,通過層146~142,直到具有較少頭部和/或尾部的該數(shù)據(jù)到達(dá)服務(wù)器應(yīng)用140。由層130~136生成的通常被添加到數(shù)據(jù)的這種類型的頭部和/或尾部在上面的背景部分已參考圖4~圖7作了描述。
圖13示出的路由器116包括檢查其接收到的幀的過濾器142。如果路由器116接收到的幀通過了過濾器142執(zhí)行的檢查,則該幀被傳遞到例如節(jié)點(diǎn)114。如果路由器116接收到的幀未通過由過濾器142執(zhí)行的一個或多個檢查,則該幀被丟棄,以使它不能到達(dá)其目的地(例如,節(jié)點(diǎn)114)。過濾器142可以對路由器116接收到的幀執(zhí)行多種檢查。在一種實(shí)施例中,過濾器142執(zhí)行下面列出的算法的檢查中的一種或多種如果(協(xié)議=TCP)如果(分段偏移=0)檢查長度1≥(P0×8)檢查(1)檢查長度2≥(P0×8)檢查(2)檢查TCP頭部長度≥5檢查(3)否則檢查分段偏移≥P0 檢查(4)如果(協(xié)議=UDP)如果(分段偏移=0)檢查長度1≥(P1×8) 檢查(5)檢查長度2≥(P1×8) 檢查(6)否則檢查分段偏移≥P1 檢查(7)否則如果(分段偏移=0)檢查長度1≥(P2×8) 檢查(8)檢查長度2≥(P2×8) 檢查(9)否則檢查分段偏移≥P2, 檢查(10)其中長度1和長度2是根據(jù)下面的方程計(jì)算出的長度1(以字節(jié)為單位)=(所接收到的幀的IP頭部中的總長度值)-((所接收到的幀的IP頭部中的IP頭部長度值)×4)。
長度2(以字節(jié)為單位)=(所接收到的幀中計(jì)數(shù)出的字節(jié)的總數(shù))-(所接收到的幀的以太網(wǎng)頭部和尾部中的數(shù)據(jù)字節(jié)的總數(shù))-((所接收到的幀的IP頭部中的IP頭部長度值)×4)。
上面的算法中的P0、P1和P2都是在存儲器中存儲的可編程值。P0、P1和P2可以彼此相等、或者彼此不相等。注意,在上面的算法中,P0、P1和P2被8乘。在替換實(shí)施例中,也可以用除了8外的值與P0、P1和P2相乘。
長度2作為所接收到的要被檢查的幀中計(jì)數(shù)出的字節(jié)的總數(shù)目的函數(shù)而被計(jì)算出。所接收到的幀的計(jì)數(shù)出的字節(jié)的總數(shù)可以用多種不同的方法之一來生成。在一種實(shí)施例中,存儲器中的計(jì)數(shù)變量N被初始化為0。此后,對于所接收到的幀中的每個字節(jié),N增1,直到所接收到的幀中的所有字節(jié)都被計(jì)數(shù)??梢栽趲淖止?jié)進(jìn)入路由器116時對這些字節(jié)進(jìn)行計(jì)數(shù),或者可以在所接收到的幀已臨時存儲到路由器116的存儲器中之后再對這些字節(jié)進(jìn)行計(jì)數(shù)。
在替換實(shí)施例中,長度2可以如下計(jì)算出長度2(以字節(jié)為單位)=(所接收到的幀的數(shù)據(jù)報中計(jì)數(shù)出的字節(jié)的總數(shù))-((所接收到的幀的IP頭部中的IP頭部長度值)×4)。
注意,在計(jì)算長度2的這一替換實(shí)施例中,只有所接收到的幀的數(shù)據(jù)報的字節(jié)需要被計(jì)數(shù)。數(shù)據(jù)報的計(jì)數(shù)出的字節(jié)的總數(shù)可以用多種不同方法之一生成。在一種實(shí)施例中,存儲器中的計(jì)數(shù)變量M初始為0。此后,對于所接收到的幀的數(shù)據(jù)報中的每個字節(jié),M增加1,直到該數(shù)據(jù)報的所有數(shù)據(jù)都已被計(jì)數(shù)。可以在數(shù)據(jù)報的字節(jié)進(jìn)入路由器116時對該數(shù)據(jù)報的字節(jié)進(jìn)行計(jì)數(shù),或者在該數(shù)據(jù)報已被臨時存儲到路由器116的存儲器中之后再對數(shù)據(jù)報的字節(jié)進(jìn)行計(jì)數(shù)。
在操作中,如果任何接收到的幀未通過各檢查(1)~(10)中的一個或多個,則過濾器142將其丟棄。注意,過濾器142無需對路由器116接收到的每個幀執(zhí)行上面列出的所有檢查(1)~(10)。例如,過濾器142在某一時刻可以只執(zhí)行檢查(2),或者只執(zhí)行檢查(3),或者過濾器142可以只對路由器116接收到的幀執(zhí)行檢查(2)、(3)和(4)。在另一時刻,過濾器142可以對路由器116接收到的幀執(zhí)行所有檢查(1)~(10)。為了解釋,假定過濾器142對路由器116接收到的所有幀執(zhí)行所有檢查(1)~(10)。
這樣,如果路由器116接收到幀,不管在IP頭部的協(xié)議字段中識別出其數(shù)據(jù)報包含UDP段還是TCP段,如果IP頭部的分段偏移被設(shè)置為0、并且如果計(jì)算出長度1或2小于P2×8,則分別根據(jù)檢查(8)和(9),過濾器142將丟棄該幀,以使其永遠(yuǎn)不能到達(dá)其目的地(例如,節(jié)點(diǎn)114)。如果路由器116接收到幀,不管在IP頭部的協(xié)議字段中識別出其數(shù)據(jù)報包含UDP段還是TCP段,如果在IP頭部中定義的分段偏移不等于0,而是小于P2,則根據(jù)檢查(10),過濾器142將丟棄該幀。
如果路由器116接收到在其數(shù)據(jù)報中具有UDP段的幀(在該接收到的幀的IP頭部的協(xié)議字段中識別出的),并且如果該接收到的幀的IP頭部中設(shè)置的分段偏移被設(shè)置為0,則如果長度1或長度2小于P1×8,則分別根據(jù)檢查(5)和(6),過濾器142將丟棄該接收到的幀。如果路由器116接收到具有UDP段的幀,并且如果在IP頭部中設(shè)置的分段偏移未被設(shè)置為0,而是被設(shè)置為小于P1的值,則根據(jù)檢查(7),過濾器142將丟棄該幀。
如果路由116接收到在其數(shù)據(jù)報中具有TCP段的幀(在該接收到的幀的IP頭部的協(xié)議字段中識別出的),并且如果IP頭部中設(shè)置的分段偏移值被設(shè)置為0,如果長度1或長度2小于P0×8,則分別根據(jù)檢查(1)和(2),過濾142將丟棄該幀。如果路由器116接收到在其數(shù)據(jù)報中具有TCP段的幀(在該接收到的幀的IP頭部的協(xié)議字段中識別出的),并且如果TCP頭部長度字段的值小于5,則根據(jù)檢查(3),過濾器142將丟棄該幀。如果路由器116接收到具有TCP段的幀,并且如果在IP頭部中設(shè)置的分段偏移未被設(shè)置為0,而是被設(shè)置為小于P0的值,則根據(jù)檢查(4),過濾器142將丟棄該幀。
如在上面的背景部分所述,圖12中的幀108能夠通過RFC 3128算法。如果路由器116接收到幀108,并且如果例如P0被設(shè)置為2以使得P0×8得到16字節(jié),則執(zhí)行上述算法的過濾器142將丟棄幀108。當(dāng)路由器116接收到幀108時,計(jì)算出長度1和長度2。為了解釋,包括以太網(wǎng)頭部和尾部中的字節(jié)的幀108的總字節(jié)數(shù)被計(jì)數(shù)出。在所示示例中,因?yàn)閹?08的每行為32比特長,所以將計(jì)數(shù)出總數(shù)為46字節(jié)。以太網(wǎng)頭部和尾部中的字節(jié)總數(shù)為18。幀108的IP頭部中的IP頭部長度值為5。因此,長度2(以字節(jié)為單位)=46-18-(5×4)=8。因?yàn)?字節(jié)小于P0×8=16字節(jié),因此根據(jù)檢查(2),圖12示出的幀108將被過濾器142丟棄。
如上所述,上面的檢查(1)~(10)可以由執(zhí)行軟件指令的路由器116中的一個或多個處理器執(zhí)行。或者,上面的檢查(1)~(10)可以由路由器116中的一個或多個ASIC執(zhí)行。圖14示出了一種非軟件實(shí)現(xiàn)的過濾器實(shí)施例,用于根據(jù)檢查(1)~(10)來檢查幀。更具體地說,圖14以框圖形式示出了耦合到解析電路(parser circuit)146和ASIC 148的媒體訪問控制(MAC)電路144。在操作中,MAC電路144接收經(jīng)由以太網(wǎng)通信鏈路120直接或間接來自節(jié)點(diǎn)112的以太網(wǎng)幀。媒體訪問控制器可以將所接收到的幀存儲到存儲器中(未示出)。MAC電路144對所接收到的幀中的字節(jié)總數(shù)進(jìn)行計(jì)數(shù),包括以太網(wǎng)幀頭部和尾部的字節(jié)數(shù)。該值作為計(jì)數(shù)出的字節(jié)的總數(shù)被提供給ASIC 148。另外,MAC電路144將幀數(shù)據(jù)提供給ASIC 148和解析器146。注意,MAC電路144將所接收到的幀處理為可以被ASIC 148和解析器146理解的格式。ASIC 148響應(yīng)于自MAC電路144接收到的幀數(shù)據(jù)和計(jì)數(shù)出的字節(jié)的總數(shù),執(zhí)行上面的檢查(1)~(10)中的一個或多個。如果ASIC 148接收到的幀不滿足上述檢查中的一個或多個,則該幀被丟棄。
盡管已結(jié)合數(shù)種實(shí)施例描述了本發(fā)明,但是本發(fā)明并不是要受限于這里描述的實(shí)施例。相反,本發(fā)明是要覆蓋可以合理包括在由權(quán)利要求限定的本發(fā)明的范圍內(nèi)的這種替換、修改和等同。
權(quán)利要求
1.一種方法,包括接收鏈路層協(xié)議幀;對所述鏈路層協(xié)議幀的數(shù)據(jù)字節(jié)進(jìn)行計(jì)數(shù),以生成計(jì)數(shù)出的字節(jié)的總數(shù)。
2.一種裝置,包括電路,其包括用于接收幀的第一電路;其中,所述第一電路響應(yīng)于接收到所述幀,對所述幀的數(shù)據(jù)字節(jié)進(jìn)行計(jì)數(shù),以生成計(jì)數(shù)出的字節(jié)的總數(shù)。
3.如權(quán)利要求2所述的裝置其中,所述第一電路配置為對所述幀的IP有效載荷以字節(jié)為單位計(jì)算數(shù)據(jù)長度,其中所述數(shù)據(jù)長度作為所述計(jì)數(shù)出的字節(jié)的總數(shù)的函數(shù)而被所述第一電路計(jì)算出;其中,所述第一電路配置為將所計(jì)算出的IP有效載荷數(shù)據(jù)長度與預(yù)定值相比較。
4.一種計(jì)算機(jī)可讀介質(zhì),用于存儲可由數(shù)據(jù)處理電路執(zhí)行的軟件指令,其中所述數(shù)據(jù)處理電路響應(yīng)于執(zhí)行所述指令來執(zhí)行方法,所述方法包括對經(jīng)由通信鏈路傳輸?shù)膸臄?shù)據(jù)字節(jié)進(jìn)行計(jì)數(shù),其中,所述數(shù)據(jù)字節(jié)被計(jì)數(shù)來生成計(jì)數(shù)出的字節(jié)的總數(shù)。
5.如權(quán)利要求4所述的計(jì)算機(jī)可讀介質(zhì),其中,所述方法還包括計(jì)算所述幀的IP有效載荷數(shù)據(jù)長度,其中,所述數(shù)據(jù)長度作為所述計(jì)數(shù)出的字節(jié)的總數(shù)的函數(shù)而被計(jì)算出;將所計(jì)算出的IP有效載荷數(shù)據(jù)長度與預(yù)定值相比較。
6.一種方法,包括接收以太網(wǎng)幀,其中所述以太網(wǎng)幀包括傳輸控制協(xié)議(TCP)頭部,其中所述TCP頭部包括TCP頭部長度值;將所述TCP頭部長度值與預(yù)定值相比較。
7.一種裝置,包括電路,所述電路包括第一電路;其中,所述第一電路配置為接收以太網(wǎng)幀,其中所述以太網(wǎng)幀包括TCP頭部,其中所述TCP頭部包括TCP頭部長度值;其中,所述第一電路配置為將所述TCP頭部長度值與預(yù)定值相比較。
8.一種計(jì)算機(jī)可讀介質(zhì),用于存儲可由數(shù)據(jù)處理電路執(zhí)行的軟件指令,其中,所述數(shù)據(jù)處理電路響應(yīng)于執(zhí)行所述指令來執(zhí)行方法,所述方法包括將以太網(wǎng)幀的TCP頭部長度值與預(yù)定值相比較。
9.如權(quán)利要求8所述的計(jì)算機(jī)可讀介質(zhì),其中所述方法還包括對所述以太網(wǎng)幀的數(shù)據(jù)字節(jié)進(jìn)行計(jì)數(shù)來生成計(jì)數(shù)出的字節(jié)的總數(shù);計(jì)算所述以太網(wǎng)幀的因特網(wǎng)協(xié)議(IP)有效載荷數(shù)據(jù)長度,其中,所述數(shù)據(jù)長度作為所述計(jì)數(shù)出的字節(jié)的總數(shù)的函數(shù)而被計(jì)算出;將所計(jì)算出的IP有效載荷數(shù)據(jù)長度與預(yù)定值相比較。
10.一種裝置,包括用于接收以太網(wǎng)幀的裝置;用于將所述以太網(wǎng)幀中的TCP頭部長度值與預(yù)定值相比較的裝置。
11.一種方法,包括接收以太網(wǎng)幀,其中所述以太網(wǎng)幀包括IP數(shù)據(jù)報,其中所述IP數(shù)據(jù)報包括IP頭部和IP有效載荷,其中所述IP有效載荷包括用戶數(shù)據(jù)報協(xié)議(UDP)頭部;計(jì)算所述IP數(shù)據(jù)報的IP有效載荷的以字節(jié)為單位的長度。
12.一種裝置,包括包括第一電路的電路,其中,所述第一電路配置為接收以太網(wǎng)幀,其中所述以太網(wǎng)幀包括IP數(shù)據(jù)報,其中所述IP數(shù)據(jù)報包括IP頭部和IP有效載荷,其中所述IP有效載荷包括用戶數(shù)據(jù)報協(xié)議(UDP)頭部;計(jì)算所述IP數(shù)據(jù)報的IP有效載荷的以字節(jié)為單位的長度;將所計(jì)算出的IP有效載荷長度與預(yù)定值相比較。
13.如權(quán)利要求12所述的裝置,其中,所述IP頭部包括IP頭部長度值和IP數(shù)據(jù)報長度值,其中所述第一電路計(jì)算作為所述IP頭部長度值和所述IP數(shù)據(jù)報長度值的函數(shù)的所述IP有效載荷長度。
14.如權(quán)利要求12所述的裝置,還包括對所述以太網(wǎng)幀的數(shù)據(jù)字節(jié)進(jìn)行計(jì)數(shù)來生成計(jì)數(shù)出的字節(jié)的總數(shù),其中所述第一電路計(jì)算作為所述計(jì)數(shù)出的字節(jié)的總數(shù)的函數(shù)的所述IP有效載荷長度。
15.如權(quán)利要求12所述的裝置其中,所述第一電路配置為將所述IP頭部中的分段偏移值與所述預(yù)定值相比較,并且;其中,所述電路配置為如果所述分段偏移值大于等于所述預(yù)定值,則將所述以太網(wǎng)幀的部分或全部傳遞給協(xié)議棧的UDP層。
16.一種計(jì)算機(jī)可讀介質(zhì),用于存儲可由數(shù)據(jù)處理電路執(zhí)行的軟件指令,其中,所述數(shù)據(jù)處理電路響應(yīng)于執(zhí)行所述指令來執(zhí)行方法,所述方法包括接收以太網(wǎng)幀,其中所述以太網(wǎng)幀包括IP數(shù)據(jù)報,其中所述IP數(shù)據(jù)報包括IP頭部和IP有效載荷,其中所述IP有效載荷包括用戶數(shù)據(jù)報協(xié)議(UDP)頭部;計(jì)算所述IP數(shù)據(jù)報的IP有效載荷的以字節(jié)為單位的長度。
17.如權(quán)利要求16所述的計(jì)算機(jī)可讀介質(zhì),其中,所述方法還包括將所計(jì)算出的IP有效載荷長度與預(yù)定值相比較。
18.如權(quán)利要求16所述的計(jì)算機(jī)可讀介質(zhì),其中,所述方法還包括對所述以太網(wǎng)幀的數(shù)據(jù)字節(jié)進(jìn)行計(jì)數(shù)來生成計(jì)數(shù)出的字節(jié)的總數(shù),其中所述IP有效載荷長度作為所述計(jì)數(shù)出的字節(jié)的總數(shù)的函數(shù)而被計(jì)算出。
19.如權(quán)利要求16所述的計(jì)算機(jī)可讀介質(zhì),其中所述方法還包括將所述IP頭部中的分段偏移值與所述預(yù)定值相比較,并且;如果所述分段偏移值大于等于所述預(yù)定值,則將所述以太網(wǎng)幀的部分或全部傳遞給協(xié)議棧的UDP層。
20.一種裝置,包括用于接收以太網(wǎng)幀的裝置,其中所述以太網(wǎng)幀包括IP數(shù)據(jù)報,其中所述IP數(shù)據(jù)報包括IP頭部和IP有效載荷,其中所述IP有效載荷包括用戶數(shù)據(jù)報協(xié)議(UDP)頭部;用于計(jì)算所述IP數(shù)據(jù)報的IP有效載荷的以字節(jié)為單位的長度的裝置。
全文摘要
本發(fā)明公開了用于檢查諸如以太網(wǎng)幀之類的鏈路層協(xié)議幀的方法和裝置。該方法可以被實(shí)現(xiàn)在執(zhí)行存儲在存儲器中的軟件指令的處理器中。在本發(fā)明的一種實(shí)施例中,該方法包括接收以太網(wǎng)幀,并且對該以太網(wǎng)幀的數(shù)據(jù)字節(jié)進(jìn)行計(jì)數(shù),以生成計(jì)數(shù)出的字節(jié)的總數(shù)目。計(jì)數(shù)出的字節(jié)的總數(shù)目可以用來計(jì)算以太網(wǎng)幀的數(shù)據(jù)報的數(shù)據(jù)長度。一旦計(jì)算出數(shù)據(jù)報數(shù)據(jù)長度,就可以與預(yù)定的值相比較。如果數(shù)據(jù)報長度未落在預(yù)定值的可接受范圍內(nèi),則可以丟棄以太網(wǎng)幀,以使該以太網(wǎng)幀不能到達(dá)其最終目的地。
文檔編號H04L29/06GK1757220SQ200480006087
公開日2006年4月5日 申請日期2004年2月27日 優(yōu)先權(quán)日2003年3月6日
發(fā)明者肯尼思·M·羅斯, 文卡特斯瓦爾·R·普萊拉, 大衛(wèi)·S·沃克, 凱文·C·黃, 何凱川, 余空恩 申請人:思科技術(shù)公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1