專利名稱::用于對傳輸控制協(xié)議(tcp)有效載荷中的多個事務進行記帳的技術的制作方法
技術領域:
:本發(fā)明涉及對經(jīng)由網(wǎng)絡傳送的數(shù)據(jù)分組進行處理;更具體而言,涉及對相同TCP數(shù)據(jù)分組中的多個事務分別進行記賬。
背景技術:
:由外部通信鏈路連接的通用計算機系統(tǒng)的網(wǎng)絡是公知的并且在商業(yè)中廣泛使用。該網(wǎng)絡通常包括幫助在計算機系統(tǒng)之間傳送信息的一個或多個網(wǎng)絡設備。網(wǎng)絡節(jié)點是由通信鏈路連接的網(wǎng)絡設備或計算機系統(tǒng)。在網(wǎng)絡節(jié)點之間,根據(jù)許多公知的、新的或者仍在開發(fā)中的協(xié)議中的一個或多個來交換信息。在此上下文中,"協(xié)議"由限定節(jié)點如何基于經(jīng)由通信鏈路發(fā)送的信息來與彼此交互的一組規(guī)則構(gòu)成。協(xié)議在每個節(jié)點內(nèi)的不同操作層生效,從生成和接收各種類型的物理信號,到選擇用于傳送這些信號的鏈路,到對這些信號所指示的信息進行格式化,到識別由在計算機系統(tǒng)上運行的哪個軟件應用發(fā)送或接收信息。用于經(jīng)由網(wǎng)絡交換信息的協(xié)議的概念上不同的層在開放系統(tǒng)互連(OSI)參考模型中描述。OSI參考模型一般在1999年9月出版的RadiaPerlman所著的題為"InterconnectionsSecondEdition"的參考書的第1.1節(jié)中有更詳細描述,特此通過引用將該書結(jié)合進來,就好像在這里完全闡述了一樣。節(jié)點之間的通信一般通過交換分立的數(shù)據(jù)分組來實現(xiàn)。每個分組一般包括l]與特定協(xié)議相關聯(lián)的頭部信息,以及2]跟在頭部信息之后、包含可獨立于該特定協(xié)議來處理的信息的有效載荷信息。在一些協(xié)議中,分組包括3]跟在有效載荷之后、指示出有效載荷信息的結(jié)束的尾部信息。頭部包括諸如分組的源、其目的地、有效載荷的長度以及協(xié)議所使用的其他屬性之類的信息。通常,針對特定協(xié)議的有效載荷中的數(shù)據(jù)包括針對與OSI參考模型的不同的、通常更高的層相關聯(lián)的不同協(xié)議的頭部和有效載荷。針對特定協(xié)議的頭部一般指示出其有效載荷中包含的下一協(xié)議的類型。有效載荷協(xié)議被認為是封裝在頭部協(xié)議中的。穿越多個異構(gòu)網(wǎng)絡(heterogeneousnetwork)(例如因特網(wǎng))的分組中包括的頭部一般包括物理(第1層)頭部;數(shù)據(jù)鏈路(第2層)頭部;互聯(lián)網(wǎng)(第3層)頭部(例如因特網(wǎng)協(xié)議IP頭部);傳輸(第4層)頭部(例如傳輸控制協(xié)議TCP頭部);以及開放系統(tǒng)互連(OSI)參考模型所定義的一個或多個應用層(第5、6、7層)。一種廣泛使用的應用層(第7層)協(xié)議是超文本傳送協(xié)議(HTTP),其被用于訪問和傳輸數(shù)據(jù)文件(被稱為文檔),這些數(shù)據(jù)文件可能具有去往其他文檔的鏈接,所述其他文檔例如是通常稱為網(wǎng)頁的超文本標記語言(HTML)文檔。HTTP版本1.1(HTTP1.1)在本文寫作之時在因特網(wǎng)工程任務組(IETF)請求注釋(RFC)2616中有記載,該RFC2616可在名為r/c26/6.fccZ的文件中找到,該文件與其他RFC文件一樣可在萬維網(wǎng)域wvvHU'^/:oW的名為《c的文件目錄中找到。特此通過引用將RFC2616的全部內(nèi)容結(jié)合進來,就好像在這里完全闡述了一樣。任何可利用HTTP傳送的文檔都是HTTP資源。HTTP資源包括網(wǎng)頁、文本、音頻、圖像和視頻。響應于來自HTTP客戶端的請求,資源被用HTTP從HTTP服務器(通常稱為Web服務器)發(fā)送到HTTP客戶端(通常稱為Web瀏覽器或簡稱為瀏覽器)。計算機進程交互的客戶端-服務器模型是公知的并且在商業(yè)中廣泛使用。根據(jù)客戶端-服務器模型,客戶端進程向服務器進程發(fā)送包括請求的消息,服務器進程通過提供服務來作出響應。服務器進程也可向客戶端進程返回具有響應的消息。通??蛻舳诉M程和服務器進程在不同的計算機設備(稱為主機)上運行,并且利用一個或多個用于網(wǎng)絡通信的協(xié)議經(jīng)由網(wǎng)絡進行通信。術語"服務器"在傳統(tǒng)上用于指提供服務的進程,或者該進程所工作于的主機計算機。類似地,術語"客戶端"在傳統(tǒng)上用于指作出請求的進程,或者該進程所工作于的主機計算機。除非上下文中另有指明,否則這里所使用的術語"客戶端"和"服務器"是指進程而不是主機計算機。此外,出于包括可靠性、可縮放性(scalability)和冗余在內(nèi)的原因(但不限于這些原因),服務器所執(zhí)行的進程可被分解成作為多個服務器在多個主機(有時稱為層級(tier))上運行。這里所使用的單個HTTP事務是對HTTP資源的單個請求和響應于該請求而返回到HTTP客戶端的HTTP資源。隨著近來的技術進步,各種專業(yè)的移動設備己經(jīng)參與到包括HTTP事務在內(nèi)的網(wǎng)絡通信中。這種設備包括但不限于無線電話、個人數(shù)字助理(PDA)、電子筆記本、家用器具、人機接口設備和其他能夠發(fā)起或接收經(jīng)由網(wǎng)絡傳送的語音或數(shù)據(jù)的設備。與這種設備的網(wǎng)絡通信通常是通過被稱為服務網(wǎng)關(SG)的服務器來路由的。SG為設備執(zhí)行各種功能,例如針對設備的專門特性而對資源進行重格式化。一些服務是知曉訂戶的,并且通過監(jiān)視在設備和認證、授權和記賬(AAA)服務器之間交換的消息來確定與設備相關聯(lián)的訂戶。AAA服務器是本領域中公知的,并且包括遠程撥號用戶認證服務(RADIUS)服務器、Diameter服務器和終端接入控制器接入控制系統(tǒng)(TACACS)服務器。己知各種訂戶知曉服務,例如按內(nèi)容過濾數(shù)據(jù)、按來源過濾(例如防火墻服務)、為更快傳送而進行的數(shù)據(jù)壓縮、加密和保證最低服務質(zhì)量以支持像IP語音這樣的高吞吐量且對延遲敏感的通信,等等。SG所提供的許多服務是基于使用量來付費的;因此SG為了計費目的而對使用進行記錄。在常見的操作模式中,SG針對在客戶端和服務器之間傳送的HTTP事務的IP字節(jié)總數(shù)進行收費。HTTP事務數(shù)據(jù)由IP數(shù)據(jù)報序列來攜帶。IP數(shù)據(jù)報是數(shù)據(jù)分組的包括IP頭部和IP有效載荷的部分。IP數(shù)據(jù)報中的IP字節(jié)總數(shù)是IP頭部和有效載荷中的字節(jié)的總和,該有效載荷包括TCP/IP分組中的TCP頭部和TCP有效載荷。該數(shù)目在IP頭部的/尸,忌長度字段中給出。禾IJ用HTTP1.0,TCP會話可傳輸多個HTTP請求。TCP會話以TCPSYN數(shù)據(jù)分組開始,并且以TCPFIN數(shù)據(jù)分組結(jié)束,這是本領域中公知的。(例如參見W.RichardStevens,TCP/IPIllustratedVolume1,TheProtocols,AddisonWesleyProfessional,Boston,1994,牛寺此通過引用將其全部內(nèi)容結(jié)合進來,就好像在這里完全闡述了一樣。)在TCP會話內(nèi),客戶端順序地發(fā)送HTTP請求;例如,在客戶端接收到對請求N的完整響應之前,不發(fā)送請求N+l。結(jié)果,IP數(shù)據(jù)報的IP字節(jié)很容易與單個HTTP事務相關,并且SG可針對TCP會話的當前HTTP事務就IP數(shù)據(jù)報中的所有字節(jié)收費。禾U用HTTP1.1,TCP會話可傳輸多個HTTP請求,并且客戶端可能有多個未了結(jié)的HTTP請求;例如可在客戶端接收到針對請求N的所有數(shù)據(jù)之前向服務器發(fā)送請求N+l、N+2、N+3。結(jié)果,單個IP數(shù)據(jù)報可能包含針對多個HTTP事務的請求數(shù)據(jù)或響應數(shù)據(jù)。將IP頭部中的/尸,忌長^^字段的值指派給TCP會話的當前HTTP事務的方法不再有效。在一種方法中,所有IP字節(jié)都被指派給數(shù)據(jù)分組中的第一事務。例如,無線設備使用無線應用協(xié)議(WAP)作為應用層協(xié)議,其中有效載荷被稱為協(xié)議數(shù)據(jù)單元(PDU)。若干個PDU在無線服務網(wǎng)關(WSG)中被連結(jié)起來并被轉(zhuǎn)換成HTTP。當WSG為連結(jié)的WAPPDU執(zhí)行計費時,它將所有IP字節(jié)都指派給分組中的第一事務。雖然現(xiàn)有技術方法適于一些目的,但是它存在缺陷。例如,HTTP內(nèi)容提供者希望其被酬報(或者計費)的量與用戶對其內(nèi)容的訪問量成正比。用戶通過提供接入點和服務網(wǎng)關的網(wǎng)絡服務提供者(例如因特網(wǎng)服務提供者(ISP))來獲得對HTTP內(nèi)容的訪問。因此,ISP希望與用戶對HTTP內(nèi)容的使用成正比地對用戶或HTTP內(nèi)容提供者進行計費?,F(xiàn)有技術的方法不會跟蹤用戶對所有HTTP內(nèi)容的訪問,而只跟蹤數(shù)據(jù)分組中的第一HTTP事務。因此,第一事務的HTTP內(nèi)容提供者被過度酬報(或者過度計費);而數(shù)據(jù)分組中的第二事務和隨后事務的HTTP內(nèi)容提供者被酬報不足(或者計費不足)。第二事務和隨后事務的HTTP內(nèi)容提供者將會更愿意與提供區(qū)分度更高的計費平臺的ISP進行交易。內(nèi)容提供者經(jīng)常對內(nèi)容進行區(qū)別收費,即使對來自同一服務器的內(nèi)容也是如此。一些內(nèi)容可能是免費的,一些可能是按事務而不是按字節(jié)收費的,而一些的收費率可能不同于其他的,所有這些內(nèi)容都在同一TCP連接內(nèi)。例如,內(nèi)容提供者可能對鈴聲瀏覽按字節(jié)收費,但對于每個下載的鈴聲可能有固定的收費。類似地,文本消息被包括在內(nèi)容提供者的基本收費中,但照片消息則可能導致額外的收費。基于以上描述,很清楚需要對經(jīng)由網(wǎng)絡傳送的相同數(shù)據(jù)分組中的多個事務分別記賬的技術。具體而言,需要至少部分基于每個HTTP事務所包括的字節(jié)數(shù)目來將IP字節(jié)分攤到單個TCP數(shù)據(jù)報中的多個HTTP事務中的每一個的技術。在附圖中以示例方式而非限制方式圖示了本發(fā)明,附圖中相似的標號指代類似的元件,其中圖1是根據(jù)一個實施例圖示出具有被配置為分別跟蹤HTTP事務的服務網(wǎng)關的網(wǎng)絡的框圖2是根據(jù)一個實施例圖示出經(jīng)由網(wǎng)絡傳送的數(shù)據(jù)分組中的因特網(wǎng)協(xié)議(IP)數(shù)據(jù)報中的兩個HTTP事務的框圖3是根據(jù)一個實施例圖示出在TCP會話期間交換的TCP數(shù)據(jù)分組的序列的時序圖4A是根據(jù)一個實施例在高級別上圖示出用于對TCP會話期間的多個HTTP事務分別記賬的方法的流程圖4B、4C、4D是根據(jù)各種實施例更詳細圖示出使用TCP序列號來對多個HTTP事務分別記賬的圖4A的方法的步驟的流程圖5是根據(jù)一個實施例圖示出HTTP事務表數(shù)據(jù)結(jié)構(gòu)的框圖;以及圖6是圖示出被配置為可以實現(xiàn)本發(fā)明實施例的路由器的計算機系統(tǒng)的框圖。具體實施例方式描述了用于對共享相同的TCP/IP數(shù)據(jù)報的多個事務分別記賬的方法和設備。在以下描述中,出于說明目的,闡述了許多具體細節(jié)以幫助全面理解本發(fā)明。但是,本領域的技術人員將會明白,沒有這些具體細節(jié)也能實現(xiàn)本發(fā)明。在其他情況下,公知的結(jié)構(gòu)和設備以框圖形式示出,以避免不必要地模糊本發(fā)明的主題。本發(fā)明的實施例是在通過網(wǎng)絡接入服務器獲得對內(nèi)容服務網(wǎng)關的訪問的移動無線設備的內(nèi)容服務網(wǎng)關的上下文中描述的,但本發(fā)明并不限于該上下文。在其他上下文中,充當內(nèi)容服務器的代理的其他服務器使用本發(fā)明的技術。這種其他服務器包括WAP2.0網(wǎng)關,以及用于寬帶或撥號網(wǎng)絡的代理網(wǎng)關,等等。另外,本發(fā)明的實施例是在TCP有效載荷內(nèi)的HTTP事務的上下文中描述的,但是本發(fā)明可包括TCP有效載荷內(nèi)的其他事務,包括但不限于TCP有效載荷內(nèi)的實時流傳輸協(xié)議(RTSP)事務。1.0網(wǎng)絡概述圖1是根據(jù)一個實施例圖示出具有被配置為分別跟蹤HTTP事務的服務網(wǎng)關的遠程接入網(wǎng)絡IOO的框圖。網(wǎng)絡IOO包括接入網(wǎng)絡llOa、分組交換網(wǎng)絡(PSN)110b和網(wǎng)絡接入主機124。接入網(wǎng)絡110a可以是用于接入PSN的任何網(wǎng)絡,包括具有下述一個或多個子網(wǎng)的接入網(wǎng)絡,所述一個或多個子網(wǎng)用于利用數(shù)字訂戶線路(DSL)基礎設施、電纜或光纜基礎設施和無線基礎設施來進行撥號接入、寬帶接入。末端節(jié)點120a、120b(以下統(tǒng)稱為末端節(jié)點120)連接到接入網(wǎng)絡110a。末端節(jié)點可以是發(fā)起或終止網(wǎng)絡通信的任何網(wǎng)絡節(jié)點。網(wǎng)絡接入主機124包括輔助接入網(wǎng)絡110a上的末端節(jié)點120與PSN110b上的服務器之間的通信的網(wǎng)絡接入服務器125。PSN110b包括AAA服務器114、計費服務器180、HTTP內(nèi)容服務器170a、170b、170c、170d(以下統(tǒng)稱為HTTP內(nèi)容服務器170)和內(nèi)容服務網(wǎng)關(SG)160。用戶使用末端節(jié)點120a、120b,通過網(wǎng)絡接入服務器125來訪問PSN110b上的內(nèi)容服務器170。網(wǎng)絡接入服務器125被配置為將來自末端節(jié)點120的數(shù)據(jù)分組路由通過SG160。根據(jù)圖示實施例,SG160包括下文中參考圖5來更詳細描述的HTTP事務表162。雖然出于說明目的將網(wǎng)絡100示為包括特定數(shù)目的末端節(jié)點120、接入網(wǎng)絡110a、網(wǎng)絡接入服務器125、服務網(wǎng)關160和服務器114、180、170,但是在其他實施例中,網(wǎng)絡100中包括更多或更少這樣的組件。圖2是根據(jù)一個實施例圖示出經(jīng)由網(wǎng)絡傳送的數(shù)據(jù)分組中的因特網(wǎng)協(xié)議(IP)數(shù)據(jù)報中的兩個HTTP事務的框圖。經(jīng)由網(wǎng)絡100傳輸?shù)臄?shù)據(jù)分組包括IP數(shù)據(jù)報230,IP數(shù)據(jù)報230是封裝在一個或多個其他協(xié)議(例如第1層、第2層或第2.5層協(xié)議)中的第3層協(xié)議。IP數(shù)據(jù)報230包括IP頭部232和IP有效載荷238。傳輸HTTP協(xié)議有效載荷的IP有效載荷238包括TCP(第4層)數(shù)據(jù)分組,該TCP數(shù)據(jù)分組包括TCP頭部242和TCP有效載荷248。IP頭部的大小一般是20個字節(jié);TCP頭部的大小一般也是20個字節(jié)。字節(jié)是代表便利的信息單元的二進制數(shù)字的集合。在大多數(shù)實施例中,字節(jié)是八個二進制數(shù)字(比特)。一個或多個HTTP請求或響應被包括在TCP有效載荷248中。在圖示實施例中,針對被標記為HTTP事務251a、251b的兩個不同HTTP事務的請求或響應被包括在TCP有效載荷248中。針對每個事務的請求或響應被包括在一個IP數(shù)據(jù)報中。針對同一事務的互補響應或請求被包括在另一個不同的IP數(shù)據(jù)報中。圖3是根據(jù)一個實施例圖示出在TCP會話期間交換的TCP數(shù)據(jù)分組的序列的時序圖。在圖3中時間向下增長。在特定時刻,TCP數(shù)據(jù)分組在特定的TCP客戶端310(例如為網(wǎng)絡接入服務器125a運行的TCP客戶端)和特定的TCP服務器(例如用于HTTP內(nèi)容服務器170a的TCP服務器)之間交換。雖然出于說明目的示出了特定數(shù)目的TCP數(shù)據(jù)分組,但是在其他實施例中在TCP客戶端310和TCP服務器320交換更多或更少的TCP數(shù)據(jù)分組。用于單個會話的所有TCP數(shù)據(jù)分組都在TCP客戶端主機上的TCP客戶端進程和TCP服務器主機上的TCP服務器進程之間,如TCP頭部242中的源端口號和目的地端口號以及IP頭部232中的源IP地址和目的地IP地址分別指示的。任何數(shù)據(jù)分組都可以基于TCP和IP頭部中的源和接收者端口和IP地址來被識別為TCP會話的成員。TCP會話開始于從客戶端310發(fā)送到服務器320的TCPSYN數(shù)據(jù)分組331。TCPSYN數(shù)據(jù)分組在TCP頭部242的SYN標志字段中具有設置值,并且沒有TCP有效載荷。TCPSYN數(shù)據(jù)分組中的源和目的地端口和IP地址唯一地限定TCP會話。為了提供信息以確??蛻舳税l(fā)送的所有數(shù)據(jù)分組在會話期間都被服務器接收,TCPSYN數(shù)據(jù)分組在TCP頭部242中的SEQ#字段中包括任意的客戶端初始序列號。TCP服務器利用TCPSYN/ACK數(shù)據(jù)分組332對來自客戶端的TCPSYN數(shù)據(jù)分組作出響應。TCPSYN/ACK數(shù)據(jù)分組在SYN標志字段中具有設置值,并且在TCP頭部242的ACK(確認)標志字段中具有設置值,并且不具有TCP有效載荷。SYN標志消耗不與TCP有效載荷的大小相關聯(lián)的單個序列號。為了提供信息來確保服務器發(fā)送的所有數(shù)據(jù)分組在會話期間都被客戶端接收,TCPSYN/ACK數(shù)據(jù)分組332在TCP頭部242的SEQ#字段中包括任意的服務器初始序列號。服務器還通過在TCPSYN/ACK數(shù)據(jù)分組的TCP頭部242的ACK#字段中包括客戶端初始序列號的值來確認接收到來自客戶端的TCPSYN消息。TCP客戶端利用TCPACK數(shù)據(jù)分組333對來自服務器的TCPSYN/ACK數(shù)據(jù)分組作出響應。TCPACK數(shù)據(jù)分組333在TCP頭部242的ACK標志字段中具有設置值,在SEQ#字段中具有客戶端序列號的下一個值,并且一般不具有TCP有效載荷??蛻舳送ㄟ^在TCPACK數(shù)據(jù)分組的TCP頭部242中的ACK#字段中包括服務器序列號的下一個值來確認接收到來自服務器的TCPSYN/ACK消息。此時,客戶端和服務器都已經(jīng)交換了支持TCP會話的信息,包括每個進程將使用的序列號。TCP客戶端通過利用在先前三個分組的交換中達成一致的序列號向服務器發(fā)送TCP數(shù)據(jù)分組334,來發(fā)起HTTP交換。因此,數(shù)據(jù)分組334在SEQ#字段中包括客戶端序列號的值,并且在ACK#字段中包括服務器序列號。在TCP有效載荷230中,包括一個或多個HTTP請求,這些請求指示出將要獲得的一個或多個相應資源。請求包括命令、資源標識符和協(xié)議/版本,并且可選地包括一些額外的字段,之后是回車(CR)換行(LF)字符模式。資源一般是用本領域中公知的統(tǒng)一資源標識符(URI)或統(tǒng)一資源定位符(URL)命名慣例來標識的。TCP有效載荷230具有由一個或多個請求的大小所決定的字節(jié)數(shù)目。TCP服務器通過向客戶端發(fā)送TCP數(shù)據(jù)分組335來作出響應,該TCP數(shù)據(jù)分組335確認在請求分組334中接收到的所有字節(jié),并且至少包括所請求的第一資源的一部分,最多可包括所請求的所有資源。因此,數(shù)據(jù)分組335在SEQ#字段中包括服務器序列號的值,并且通過在ACK#字段中的與客戶端序列號與接收到的TCP有效載荷的大小的相加值相等的值來確認接收到的TCP有效載荷。因此,序列號被遞增,遞增量等于具有非零有效載荷的數(shù)據(jù)分組中的有效載荷大小。在TCP數(shù)據(jù)分組335的TCP有效載荷230中,至少包括了響應的一部分。第一響應的全部都在設置第二響應的任何部分之前被TCP服務器320發(fā)送。TCP客戶端通過向服務器發(fā)送另一TCP數(shù)據(jù)分組336來作出響應,該TCP數(shù)據(jù)分組336確認在響應分組35中接收到的所有字節(jié),并且在TCP有效載荷230中包括零個、一個或多個額外的HTTP請求。通過將序列號遞增客戶端在先前有效載荷中發(fā)送的字節(jié)數(shù)目來指示另一個請求(從而指示另一個事務)。因此,如果客戶端初始序列號是1000,并且第一請求引起了99字節(jié)的TCP有效載荷,則第一請求將具有序列號1001,并且對于第二請求,SEQ#字段中的值將會是1100。數(shù)據(jù)分組336在SEQ#字段中包括被遞增了所發(fā)送有效載荷的大小的序列號,并且通過ACK#字段中的與服務器初始序列號和從服務器接收的TCP有效載荷的大小的相加值相等的值來確認接收到的TCP有效載荷。因此,如果服務器初始序列號為5000,并且第一響應引起了900字節(jié)的TCP有效載荷,則第一響應的SEQ#字段內(nèi)容將會是5001,并且第二TCP請求數(shù)據(jù)分組的ACK#字段中的值將會是5901。在圖示實施例中,TCP數(shù)據(jù)分組336包括兩個HTTP請求,它們作為HTTP第一事務請求251a和HTTP第二事務請求251b出現(xiàn)在TCP有效載荷248中。具有HTTP響應的至少一部分的TCP數(shù)據(jù)分組337是TCP客戶端服務器發(fā)送的下一個數(shù)據(jù)分組,它們分別將SEQ#字段和ACK#字段遞增了所發(fā)送和接收的有效載荷的大小。在圖示實施例中,TCP數(shù)據(jù)分組337包括兩個HTTP響應,它們作為HTTP第一事務響應251a和HTTP第二事務響應251b出現(xiàn)在TCP有效載荷248中。TCP客戶端310通過發(fā)送如上所述的TCPACK數(shù)據(jù)分組333那樣的TCPACK數(shù)據(jù)分組來確認接收到的響應,而不作出新的請求。在圖示實施例中,TCPACK數(shù)據(jù)分組338是響應于TCP數(shù)據(jù)分組337而發(fā)送的。TCP數(shù)據(jù)分組337中的ACK#字段中的值確認從服務器接收的字節(jié)的數(shù)目。省略號340指示在TCP會話期間在TCP客戶端310和服務器320之間交換的其他TCP分組。當TCP客戶端310和TCP服務器320都發(fā)送TCPFIN分組,并且每個TCP參與者都發(fā)送TCPACK分組以確認接收到TCPFIN分組時,會話顯式地結(jié)束。在圖示實施例中,TCP客戶端310發(fā)送TCPFIN數(shù)據(jù)分組349。TCPFIN數(shù)據(jù)分組在TCP頭部242中的FIN標志字段中具有設置值。當從在此客戶端和此服務器之間發(fā)送TCP分組起已經(jīng)經(jīng)過了多于空閑閾值的時間時,TCP會話可以隱式地結(jié)束。2.0用于分別記賬的方法圖4A是根據(jù)一個實施例在高級別上圖示出用于對TCP會話期間的多個HTTP事務分別記賬的方法400的流程圖。在圖示實施例中,該方法在服務網(wǎng)關中實現(xiàn),該服務網(wǎng)關被部署為接收在HTTP客戶端(例如網(wǎng)絡接入服務器125)與HTTP內(nèi)容服務器(例如內(nèi)容服務器170a)之間交換的所有數(shù)據(jù)分組。在其他實施例中,服務網(wǎng)關被部署為接收在不同的客戶端和服務器(例如RTSP客戶端和服務器)之間交換的所有數(shù)據(jù)分組。雖然在圖4A和隨后的流程圖中出于說明目的以特定順序示出了步驟,但是在其他實施例中,可以以不同的順序或者在時間上重疊地執(zhí)行步驟,或者可以省略一個或多個步驟,或者可以進行某種變化的組合。根據(jù)方法400,TCP有效載荷被解析以確定多個事務之間的至少一個邊界,并且與事務相關聯(lián)的字節(jié)至少部分取決于該邊界。在參考圖4B、4C、4D和5來更詳細描述的一些實施例中,HTTP事務之間的邊界是作為針對客戶端到服務器方向和服務器到客戶端方向的分開的TCP序列號來存儲的。在步驟402中,在服務網(wǎng)關處接收具有TCP有效載荷的IP數(shù)據(jù)報。例如,在SG160處接收圖3所示的任何TCP數(shù)據(jù)分組。在步驟404中,確定TCP有效載荷是否包括數(shù)據(jù)。如果不包括,則控制傳遞到步驟420。例如,如果IP數(shù)據(jù)報持有TCPSYN或ACK或FIN數(shù)據(jù)分組,則控制傳遞到步驟420。在步驟420中,將IP數(shù)據(jù)報中事務之間的IP和TCP頭部字節(jié)與TCP會話內(nèi)的事務關聯(lián)起來。TCP會話由在步驟402中接收到的IP數(shù)據(jù)報的IP頭部中的一對IP地址以及TCP頭部中的一對端口號來唯一地標識。例如,會話發(fā)起字節(jié)與接下來的第一事務相關聯(lián);會話終止字節(jié)與會話終止之前的最后的事務相關聯(lián);并且響應確認字節(jié)與被確認的事務相關聯(lián)。然后控制從步驟420傳遞到步驟494,如下所述,以將IP數(shù)據(jù)報轉(zhuǎn)發(fā)到IP目的地。利用TCP序列號和事務表來將頭部字節(jié)與事務關聯(lián)起來的步驟420的實施例在下文中將參考圖4B和HTTP事務來更詳細描述。如果在步驟404中確定TCP有效載荷包括數(shù)據(jù),則控制傳遞到步驟410。在步驟410中,將具有數(shù)據(jù)的IP數(shù)據(jù)報中的IP和TCP頭部字節(jié)與TCP會話內(nèi)的一個或多個事務關聯(lián)起來。例如,在一些實施例中,IP數(shù)據(jù)報中的所有頭部字節(jié)都與TCP有效載荷中的多個HTTP事務中的第一HTTP事務關聯(lián)起來。在一些實施例中,IP數(shù)據(jù)報中的所有頭部字節(jié)都與TCP有效載荷中的多個HTTP事務中的最后的HTTP事務關聯(lián)起來。在一些實施例中,IP數(shù)據(jù)報中的所有頭部字節(jié)在TCP有效載荷中的多個HTTP事務之間被平均劃分。在一些實施例中,省略步驟410而支持步驟492(在下文更詳細描述),以將頭部字節(jié)成比例地與IP數(shù)據(jù)報中的多個HTTP事務關聯(lián)起來。使用TCP序列號和事務表來將頭部字節(jié)與事務關聯(lián)起來的步驟410的實施例在下文中將參考圖4C針對HTTP事務來更詳細描述。在步驟440中,解析TCP有效載荷以找出事務之間的下一邊界。例如,對于HTTP事務,可以利用RFC2616中闡述的規(guī)則中的任何一種或全部來執(zhí)行解析。例如,HTTP請求邊界是基于請求行結(jié)束處的CRLF模式的?;蛘?,HTTP響應邊界是基于新的響應狀態(tài)行起始處的"HTTP"模式的。邊界出現(xiàn)在一個事務的最后一個字節(jié)和下一事務的第一字節(jié)之間。CRLF可被認為是第一事務的最后一個字節(jié)或者下一事務的第一個字節(jié)??梢砸匀魏畏绞絹碇甘具吔绲奈恢谩@纾谝恍嵤├校贸霈F(xiàn)在邊界之前的TCP有效載荷字節(jié)的百分比或分數(shù)來指示邊界。在一些實施例中,通過第一事務中的最后一個字節(jié)的號碼來指示邊界;在一些實施例中,通過下一事務的第一字節(jié)的號碼來指示邊界。在下文中出于說明目的,事務中的最后一個字節(jié)的號碼指示出HTTP事務的邊界。在一些實施例中,字節(jié)是從有效載荷起始處開始編號的;在一些實施例中,字節(jié)是從TCP頭部的序列號開始編號的,從而在整個TCP會話期間的每個方向上字節(jié)位置都是唯一的。在步驟460中,邊界的位置被記錄在持久性存儲器中。在一些實施例中,邊界的位置被保存在易失性存儲器中而沒有被存儲在持久性存儲器上,并且步驟460被省略。在步驟480中,基于邊界來將TCP有效載荷字節(jié)與事務關聯(lián)起來。例如,HTTP邊界之間的TCP有效載荷中的所有字節(jié)都與一個HTTP事務相關聯(lián)??梢砸匀魏畏绞絹碇甘綯CP會話內(nèi)的事務。在圖示實施例中,HTTP事務通過從1(用于會話內(nèi)的第一HTTP事務)開始的序數(shù)來編號。如上所述,會話由一對IP地址和一對TCP端口號來唯一地指示。因此,與TCP數(shù)據(jù)分組334中的第一HTTP請求相關聯(lián)的字節(jié)與由端口80以及網(wǎng)絡服務器主機124的IP地址和服務器170a的主機的IP地址標識的TCP會話中的第一HTTP事務相關聯(lián)。使用TCP序列號和事務表來將TCP有效載荷字節(jié)與事務關聯(lián)起來的步驟440、460、480的實施例將在下文中參考圖4D針對HTTP事務來更詳細描述。在步驟490中,確定是否達到了TCP有效載荷的結(jié)尾。如果否,則控制傳遞回步驟440,以找出TCP有效載荷中的下一邊界。如果找到了另一邊界,則控制傳遞回步驟460。如果在TCP有效載荷中沒有找到其他邊界,則控制傳遞回步驟490,并由該步驟去到步驟492。在步驟492中,基于邊界位置將當前IP數(shù)據(jù)報的頭部字節(jié)與一個或多個HTTP事務關聯(lián)起來。例如,在一些實施例中,頭部字節(jié)的與各個事務相關聯(lián)的部分與邊界之間針對該事務的有效載荷的部分成比例。在一些實施例中,省略步驟492,并且在步驟410中任意地或者基于事務編號而不是基于由邊界決定的事務相對大小來將頭部字節(jié)與HTTP事務關聯(lián)起來。在步驟493中,將IP數(shù)據(jù)報轉(zhuǎn)發(fā)到目的地IP地址。在496中,確定事務是否完成。SG在充分長的時間中維護事務和字節(jié)計數(shù)之間的關聯(lián),以允許對照正確事務對開放TCP會話上的TCP重傳進行計數(shù)。當兩個方向上的TCP有效載荷都只涉及特定事務之后的事務時,該特定事務完成。如果事務尚未完成,則控制傳遞回步驟402,以接收針對該事務或TCP會話的下一IP數(shù)據(jù)報。在一些實施例中,步驟496包括確定TCP會話是否結(jié)束的步驟。例如,確定TCPFIN數(shù)據(jù)分組(例如數(shù)據(jù)分組349)是否已經(jīng)被客戶端和服務器兩者都接收和確認。如果TCP會話尚未結(jié)束,則控制傳遞回步驟402,以接收針對該TCP會話的下一IP數(shù)據(jù)報。當事務或TCP會話結(jié)束時,控制傳遞到步驟498。在步驟498中,基于與已完成的事務相關聯(lián)的字節(jié)計數(shù)的計費數(shù)據(jù)被發(fā)送到計費服務器,例如計費服務器180??梢砸匀魏畏绞綇淖止?jié)計數(shù)得出計費數(shù)據(jù)。例如,在一些實施例中,計費數(shù)據(jù)是原始的字節(jié)計數(shù)。在一些實施例中,計費數(shù)據(jù)是字節(jié)計數(shù)乘以計費率或者被某些其他因子加權而得到的數(shù)據(jù)。在計費數(shù)據(jù)被成功發(fā)送之后,事務與字節(jié)計數(shù)的關聯(lián)被從存儲器中刪除。當TCP會話結(jié)束時,針對最后一個事務的計費數(shù)據(jù)被發(fā)送,并且最后一個事務與字節(jié)計數(shù)的關聯(lián)被從存儲器中刪除??刂苽鬟f回步驟402以接收另一個IP數(shù)據(jù)報,從而例如完成其他事務或者開始新的事務或者開始新的TCP會話。3.0使用TCP序列號的方法圖5是根據(jù)一個實施例圖示出事務表510的框圖。事務表510是用于分別存儲字節(jié)計數(shù)和相同IP數(shù)據(jù)報中的不同事務之間的關聯(lián)的數(shù)據(jù)結(jié)構(gòu)。在圖示實施例中,事務表510包括第一事務記錄520a、第一事務記錄520b以及由省略號530標記的零個或更多個其他事務記錄,在下文中它們被統(tǒng)稱為事務記錄520。每個事務記錄520都包括TCP客戶端到服務器方向字段521、TCP服務器到客戶端方向字段522、字節(jié)計數(shù)字段527和相關器字段528。TCP客戶端到服務器方向字段521包括起始序列號字段523和結(jié)束序列號字段525。TCP服務器到客戶端方向字段522包括起始序列號字段524和結(jié)束序列號字段526。起始序列號字段523保存著指示出在客戶端到服務器方向上的給定事務中的第一TCP有效載荷字節(jié)的數(shù)據(jù),該TCP有效載荷字節(jié)是從TCP頭部中的序列號開始編號的,使得在整個TCP會話中在該方向上字節(jié)位置是唯一的。類似地,起始序列號字段524保持著指示出在相反(服務器到客戶端)方向上的同一事務中的第一TCP有效載荷字節(jié)的數(shù)據(jù),該TCP有效載荷字節(jié)是從TCP頭部中的序列號開始編號的,使得在整個TCP會話中在該方向上字節(jié)位置是唯一的。結(jié)束序列號字段525保存著指示出在客戶端到服務器方向上的、給定事務中的最后的TCP有效載荷字節(jié)的數(shù)據(jù),該字節(jié)是從TCP頭部中的序列號開始編號的。類似地,結(jié)束序列號字段526保持著指示出在相反(服務器到客戶端)方向上的同一事務中的最后的TCP有效載荷字節(jié)的數(shù)據(jù),該字節(jié)是從TCP頭部中的序列號開始編號的。字節(jié)計數(shù)字段527保存著指示出與事務相關聯(lián)的字節(jié)的數(shù)目的數(shù)據(jù),該數(shù)據(jù)被用于形成計費記錄。在一些實施例中,字節(jié)計數(shù)字段527包括在TCP客戶端到服務器方向字段521中包括的客戶端->服務器方向的一個字節(jié)計數(shù)字段和TCP服務器到客戶端方向字段522中包括的服務器-〉客戶端方向的第二字節(jié)計數(shù)字段。為了簡化說明,下文中假定存在保存著兩個方向上的字節(jié)總數(shù)的單個字節(jié)計數(shù)字段。相關器字段528保存著指示出用于形成計費記錄的關于事務的其他信息的數(shù)據(jù),例如所遞送的資源的URL、內(nèi)容提供者、該資源的計費率、與TCP客戶端相關聯(lián)的用戶以及用戶簡檔信息,例如所付費購買的服務級別。在優(yōu)選實施例中,相關器528保存著指向另一個表中的存儲著關于所述事務的其他信息的記錄的指針。圖4B是根據(jù)實施例421更詳細圖示出使用TCP序列號來對多個HTTP事務分別記賬的圖4A的方法的步驟420的流程圖。步驟421是針對諸如SYN、ACK和FIN之類的數(shù)據(jù)分組的、沒有HTTP數(shù)據(jù)的TCP有效載荷執(zhí)行的。根據(jù)步驟421,用于建立會話的頭部字節(jié)與TCP會話中的第一HTTP事務相關聯(lián);用于確認事務的頭部字節(jié)與該事務相關聯(lián);其他頭部字節(jié)與TCP會話中的最近的(最后的)事務相關聯(lián)。步驟421包括步驟422、424、426、428、430、432、434、436。為了說明下文描述的步驟421以及隨后的步驟的操作和結(jié)果,假定由數(shù)據(jù)分組331至338來給出的示例性TCP會話被路由通過SG160。SG160檢査數(shù)據(jù)分組331到338并且確定用于發(fā)送到計費服務器180的計費數(shù)據(jù)。出于說明目的,還假定客戶端任意初始序列號為1,并且服務器任意初始序列號為100。還假定數(shù)據(jù)分組334包括一個37字節(jié)的HTTP請求;數(shù)據(jù)分組335包括一個42字節(jié)的HTTP響應;數(shù)據(jù)分組336包括兩個分別為15字節(jié)和12字節(jié)的HTTP請求;數(shù)據(jù)分組337包括兩個分別為80字節(jié)和70字節(jié)的HTTP響應。這些相關的示例值總結(jié)在表1中。表lTCP會話中的數(shù)據(jù)分組的示例性屬性<table>tableseeoriginaldocumentpage24</column></row><table>在這八個數(shù)據(jù)分組中的示例性的八個IP數(shù)據(jù)報中發(fā)送的IP字節(jié)的總數(shù)是8*40+37+42+15+12+80+70=576字節(jié),這576個字節(jié)將被分攤在由分組334中的一個請求和分組336中的兩個請求啟動的三個HTTP事務中。假定在步驟402期間在接收到的IP數(shù)據(jù)報中標識了唯一的TCP會話,并且沒有針對該TCP會話的HTTP事務表510。因此,為該唯一TCP會話生成沒有記錄的HTTP事務表510。確定在針對此TCP會話的這個第一IP數(shù)據(jù)報中,客戶端具有標記為IPclient的源IP地址的IP地址(例如網(wǎng)絡接入服務器主機124),服務器具有標記為IPserver的目的地IP地址(例如服務器170a的主機)。然后通過是IPclient值還是IPserver值占據(jù)IP數(shù)據(jù)報的源IP地址字段來確定任何數(shù)據(jù)分組的方向。在步驟422中,確定在TCP頭部中SYN標記是否被設置。如果是,則控制流向步驟424,以將數(shù)據(jù)存儲在第一HTTP事務記錄中。在步驟424中,TCP頭部的TCP序列號被存儲在第一HTTP事務記錄520a的起始序列號字段(例如523)中,并且該值加上1(因為SYN使序列號提高)被存儲在第一HTTP事務記錄520a的針對該方向的結(jié)束序列號字段(例如525)中。如果第一HTTP事務記錄尚不存在,則在步驟424中生成該記錄,其中空值被用于相反方向,并且字節(jié)計數(shù)為零。IP頭部(20字節(jié))和TCP頭部(20字節(jié))以及TCP有效載荷(O字節(jié))的大小被添加到第一HTTP事務記錄520a的字節(jié)計數(shù)字段527。因此40字節(jié)被添加到字節(jié)計數(shù)字段527的內(nèi)容。然后控制傳遞到歩驟494,以將IP數(shù)據(jù)報轉(zhuǎn)發(fā)到其目的地IP地址。如果在步驟422中確定在TCP頭部中未設置SYN標志,則控制傳遞到步驟426。在步驟426中,確定在TCP頭部中是否設置了ACK標志。如果是,則控制流向步驟430和之后的步驟(在下文描述),以將該IP數(shù)據(jù)報的頭部字節(jié)添加到與ACK相關聯(lián)的HTTP事務(如果存在的話)。如果否,則控制傳遞到步驟428。例如,如果在TCP頭部中設置了TCPFIN標志,則控制傳遞到步驟428。在步驟428中,IP頭部和TCP頭部的字節(jié)被添加到HTTP事務表510中的最后的事務記錄520的字節(jié)計數(shù)字段527。然后控制傳遞到步驟594,以將數(shù)據(jù)分組轉(zhuǎn)發(fā)到目的地IP地址。在步驟430中,使第一HTTP事務記錄成為當前事務記錄。控制傳遞到步驟432。在步驟432中,確定ACK值減1是否大于當前事務的相反方向字段中的結(jié)束序列號字段中的值。如果是,則ACK并不是在確認當前事務,而是在確認后一個事務??刂苽鬟f到步驟434,以使下一HTTP事務記錄成為當前的事務記錄。控制傳遞回步驟432,以確定ACK數(shù)據(jù)報是否在確認當前事務記錄的HTTP事務。如果在步驟432中確定ACK值減1并不大于當前事務記錄的相反方向字段中的結(jié)束序列號字段中的值,則ACK數(shù)據(jù)報正在確認當前事務記錄的HTTP事務。控制隨后傳遞到步驟436。在其他實施例中,將ACK值與不同順序(例如從表中最后一個HTTP記錄開始并向第一個前進)的針對相反方向的序列范圍相比較。在步驟436中,IP頭部和TCP頭部的字節(jié)被添加到HTTP事務表510中的當前事務記錄520的字節(jié)計數(shù)字段527。然后控制傳遞到步驟494,以將數(shù)據(jù)分組轉(zhuǎn)發(fā)到目的地IP地址。步驟421針對示例性的八個數(shù)據(jù)分組中的前幾個的結(jié)果在表2A中示出。在表2A中,從客戶端起的方向由符號"從C"指示;從服務器起的方向由符號"從S"指示。這些結(jié)果按如下方式進行積累。在步驟402中接收數(shù)據(jù)分組331,并且控制通過步驟404而傳遞到步驟421,因為它不具有HTTP有效載荷。在步驟422中,確定SYN標志被設置,因此控制傳遞到步驟424。在步驟424中,TCP頭部SEQ字段中的值"1"被存儲在起始序列號字段523中,并且該值加1被存儲在第一HTTP事務記錄520a的針對客戶端到服務器方向的結(jié)束序列號字段525中。IP數(shù)據(jù)報的大小(40字節(jié))被添加到目前為空的字節(jié)計數(shù)字段527。控制傳遞到步驟494以轉(zhuǎn)發(fā)IP數(shù)據(jù)報。數(shù)據(jù)分組332在步驟402中被接收并通過步驟404被導向步驟421,因為它不具有HTTP有效載荷。在步驟422中,確定SYN標志被設置,因此控制傳遞到步驟424。在歩驟424中,TCP頭部SEQ#字段值"100"被存儲在起始序列號字段523中,并且該量加1被存儲在第一HTTP事務記錄520a的針對服務器到客戶端方向的結(jié)束序列號字段525中。IP數(shù)據(jù)報的大小(40字節(jié))被添加到目前保存著值40的字節(jié)計數(shù)字段527??刂苽鬟f到步驟494以轉(zhuǎn)發(fā)IP數(shù)據(jù)報。數(shù)據(jù)分組333在步驟402中被接收并通過步驟404被導向步驟421,因為它不具有HTTP有效載荷。在步驟422中,確定SYN標志未被設置,因此控制傳遞到步驟426。在步驟426中,確定ACK標志被設置,因此控制傳遞到步驟430以使記錄#1成為當前事務記錄。數(shù)據(jù)分組333是來自客戶端方向的,并且具有ACK值"101"。在步驟432中,將ACK值減1(100)與當前事務記錄中的針對相反方向(即從服務器)的結(jié)束序列號字段中的值相比較。該值為"101"。因為100不大于101,所以控制傳遞到步驟436。在步驟436中,IP數(shù)據(jù)報的大小(40字節(jié))被添加到目前保存著值80的字節(jié)計數(shù)字段527??刂苽鬟f到步驟494以轉(zhuǎn)發(fā)IP數(shù)據(jù)報。表2A.在前三個示例性IP數(shù)據(jù)報之后HTTP事務表的內(nèi)容<table>tableseeoriginaldocumentpage27</column></row><table>在一些實施例中,生成另一數(shù)據(jù)結(jié)構(gòu)的記錄來描述第一HTTP事務。此時,如本領域中公知的,客戶端和服務器IP地址是已知的,并且基于用戶利用客戶端主機登錄到網(wǎng)絡110b上時與AAA服務器114的數(shù)據(jù)分組交換可以得知客戶端的用戶的簡檔。出于說明目的假定所知的關于事務的信息被存儲在另一數(shù)據(jù)結(jié)構(gòu)中,該數(shù)據(jù)結(jié)構(gòu)在這里被稱為事務描述數(shù)據(jù)結(jié)構(gòu)。還假定指向事務描述數(shù)據(jù)結(jié)構(gòu)中針對當前事務的該信息的指針由符號"指針A"來標記。指針A的值被存儲在第一事務記錄的相關器字段528中。圖4C是根據(jù)實施例411更詳細圖示出使用TCP序列號來對多個HTTP事務分別記賬的圖4A的方法的步驟410的流程圖。步驟411是針對具有HTTP數(shù)據(jù)的TCP有效載荷(例如具有HTTP請求和響應的有效載荷)來執(zhí)行的。根據(jù)步驟411,具有HTTP數(shù)據(jù)的頭部字節(jié)與TCP有效載荷中的第一HTTP事務相關聯(lián)。步驟411包括步驟412、413、414、416、417、418。在步驟412中,使HTTP事務表510中的第一HTTP事務記錄520a成為當前事務記錄。在步驟413中,確定TCP頭部的SEQ#字段中的值是否落在當前事務記錄的針對同一方向的序列號范圍之內(nèi)。如果是,則控制傳遞到步驟414。在步驟414中,頭部字節(jié)被添加到當前事務記錄的字節(jié)計數(shù)字段。然后控制傳遞到步驟440和其后的步驟,以確定TCP有效載荷中HTTP事務之間的邊界(如果存在的話)。如果在步驟413中確定TCP頭部的SEQ#字段中的值沒有落在當前事務記錄的針對相同方向的序列號范圍內(nèi),則控制傳遞到步驟416。在步驟416中,確定在事務表510中是否存在另一個事務記錄520。如果是,則控制傳遞到步驟417。在步驟417中,使事務表510中的下一事務記錄520成為當前事務記錄,并且控制傳遞回步驟413。步驟413、416、417搜索表510以找出具有下述序列號范圍的事務,所述序列號范圍包含TCP頭部中的SEQ#的值。如果找到這樣的記錄,則控制傳遞到步驟414,以將頭部字節(jié)添加到該記錄的字節(jié)計數(shù)。在其他實施例中,將SEQ#值與不同順序(例如從表中最后一個HTTP記錄開始并且向第一個前進)的針對相同方向的序列范圍相比較。如果沒有找到這樣的記錄,則對于圖示實施例,如下所述,新的事務記錄520在步驟418中被添加到事務表。如果在步驟416中確定在事務表510中沒有其他事務記錄520,則控制傳遞到步驟418。這發(fā)生在TCP頭部的SEQ#字段中的值沒有落在表510中的任何記錄520的序列號范圍內(nèi)的情況下。在步驟418中,新的事務記錄520被添加到HTTP事務表510。TCP頭部中的SEQ#字段的值被存儲在新的事務記錄520的起始序列號字段(例如523)和結(jié)束序列號字段(例如535)中。針對相反方向的起始和結(jié)束序列號字段的值是通過將前一事務記錄的針對相反方向的結(jié)束序列號字段中的值加上1來確定的。頭部字節(jié)被添加到字節(jié)計數(shù)字段527。然后控制傳遞到步驟440和其后的步驟,以確定TCP有效載荷中的HTTP事務之間的邊界(如果存在的話)。步驟411針對示例性的八個數(shù)據(jù)分組中的接下來的數(shù)據(jù)分組的結(jié)果在表2B中示出。這些結(jié)果按如下方式進行積累。數(shù)據(jù)分組334在步驟402中被接收,并且控制通過步驟404被傳遞到步驟411,因為它具有HTTP有效載荷。數(shù)據(jù)分組334具有SEQ#字段值2并且處于從客戶端起的方向中。在步驟412中,使第一HTTP事務記錄520a成為當前事務記錄。在步驟413中,確定該值"2"處于第一事務記錄的從客戶端起的方向上的序列號范圍內(nèi),該范圍是"1至2"。因此,控制傳遞到步驟414。在步驟414中,40個頭部字節(jié)被添加到已經(jīng)存在于針對當前事務520的字節(jié)計數(shù)字段527中的值。然后控制傳遞到步驟440。表2B.在處理第四示例性IP數(shù)據(jù)報的頭部之后HTTP事務表的內(nèi)容<table>tableseeoriginaldocumentpage29</column></row><table>圖4D是根據(jù)一個實施例更詳細圖示出使用TCP序列號來對多個HTTP事務分別記賬的方法400的步驟440、460、480的流程圖。在圖4D中,步驟441是步驟440的實施例;步驟461是步驟460的實施例;步驟481是步驟480的實施例。步驟441包括步驟442;步驟461包括步驟462、464;步驟481包括步驟482、484、485。在步驟442中,確定在TCP有效載荷結(jié)束之前是否存在HTTP事務邊界??梢允褂萌魏畏椒▉泶_定邊界,如上所述。如果在TCP有效載荷結(jié)束之前不存在HTTP事務邊界,則控制傳遞到步驟462以將TCP有效載荷的其余部分作為當前事務的一部分來對待。在步驟462中,到TCP有效載荷結(jié)束為止的字節(jié)計數(shù)減去1被添加到同一方向上當前事務的結(jié)束序列號字段。在特定實施例中,將TCPSEQ#+max(0,TCP有效載荷-1}與結(jié)束序列號字段中的當前值相比較。如果TCPSEQ#+TCP有效載荷大于結(jié)束序列號字段中的當前值,則它變成新的結(jié)束序列號。這可以處理重傳、亂序分組和其他現(xiàn)象。注意,至少在一些實施例中,序列號空間可以巻繞,并且可由算法來處理。結(jié)束序列號字段中的值按照序列號對當前事務的最后一個字節(jié)進行標記,該字節(jié)作為事務的邊界??刂苽鬟f到步驟482。在步驟482中,到TCP有效載荷結(jié)束為止的字節(jié)計數(shù)被添加到當前事務的字節(jié)計數(shù)。然后控制傳遞到步驟490,該步驟確定已經(jīng)達到TCP有效載荷的結(jié)束,于是控制傳遞到步驟492和494,如上所述。步驟492基于在步驟460中確定的邊界來將頭部字節(jié)與HTTP事務關聯(lián)起來,并且該步驟在圖示實施例中被省略,圖示實施例將所有頭部字節(jié)都與TCP有效載荷中的第一事務關聯(lián)起來。步驟494將IP數(shù)據(jù)報轉(zhuǎn)發(fā)到目的地IP地址。在處理數(shù)據(jù)分組334、335之后,步驟462、482針對沒有HTTP事務邊界的IP數(shù)據(jù)報的結(jié)果在表2C中示出。這些結(jié)果如下積累。在步驟441中確定在數(shù)據(jù)分組334的TCP有效載荷中沒有找到HTTP事務邊界。因此控制傳遞到步驟462。在步驟462中,到TCP有效載荷結(jié)束為止的字節(jié)計數(shù)減去1被添加到當前事務記錄的相同方向上的結(jié)束序列號字段。如以上針對步驟411所述,當前事務記錄是第一事務記錄520a。TCP有效載荷中的到TCP有效載荷結(jié)束為止的字節(jié)計數(shù)對于數(shù)據(jù)分組334為37字節(jié),并且方向為從客戶端起,如表1所示。因此37-l被添加到針對客戶端到服務器方向的結(jié)束序列號字段(值2)。在步驟482中,37被添加到字節(jié)計數(shù)字段。表2C.在處理五個示例性IP數(shù)據(jù)報之后HTTP事務表的內(nèi)容記錄號從c的起始序列號從c的結(jié)束序列號從S的起始序列號從s的結(jié)束序列號字節(jié)計數(shù)相關器1138100142160+37+40+42指針A類似地,數(shù)據(jù)分組335在步驟402中被接收,并且控制通過步驟404被導向步驟411,因為它具有HTTP有效載荷。數(shù)據(jù)分組335具有SEQ弁字段值101,并且處于從服務器起的方向上。在步驟411期間,以與以上針對數(shù)據(jù)分組334來描述的方式相似的方式,40被添加到第一事務的字節(jié)計數(shù)。TCP有效載荷中到TCP有效載荷結(jié)束為止的字節(jié)計數(shù)對于數(shù)據(jù)分組335為42字節(jié)。因此42-1被添加到針對服務器到客戶端方向的結(jié)束序列號字段(值IOI)。在步驟482中,42被添加到字節(jié)計數(shù)字段。第一事務的更多細節(jié)(例如被請求資源的URL)基于HTTP數(shù)據(jù)中的請求而被確定,并且被添加到由指針A指向的事務描述數(shù)據(jù)結(jié)構(gòu)。如果在步驟442中確定在TCP有效載荷結(jié)束之前存在HTTP事務邊界,則控制傳遞到步驟464。在步驟464中,0與到邊界為止的字節(jié)計數(shù)減去1中的最大者被添加到同一方向上當前事務的結(jié)束序列號字段。這按照序列號標記了當前事務的最后一個字節(jié),該字節(jié)作為事務的邊界??刂苽鬟f到步驟484。在步驟484中,到邊界為止的字節(jié)計數(shù)被添加到當前事務的字節(jié)計數(shù)。然后控制傳遞到步驟485,以遞增事務記錄。如果在當前事務記錄之后沒有事務記錄520,則新的事務記錄被添加到事務表510。在步驟485中,向前一事務記錄的結(jié)束序列號字段的值加1,并且遞增后的值被存儲在當前事務記錄的起始序列號字段中和結(jié)束序列號字段中??刂苽鬟f到步驟490。在步驟490中,確定是否達到TCP有效載荷的結(jié)束;如果沒有,則控制傳遞回步驟441以找出另一個邊界(如果存在的話)。在分別處理具有HTTP事務邊界的數(shù)據(jù)分組336、337之后,步驟411、441、461、481的更多工作在表2D和表2E中示出。表2D中的結(jié)果如下積累。數(shù)據(jù)分組336在步驟402中被接收,并且控制通過步驟404被導向步驟411,因為它具有HTTP有效載荷。數(shù)據(jù)分組336具有SEQ#字段值39并且處于從客戶端起的方向上。在步驟412中,使第一HTTP事務記錄520a成為當前事務記錄。在步驟413中,確定該SEQ#字段值"39"不在第一事務記錄的從客戶端起的方向上的序列號范圍中,該范圍是"1至38"。因此,控制傳遞到步驟416。在歩驟416中,確定在表510中沒有其他事務記錄520,因此控制傳遞到步驟418。在步驟418中,第二事務記錄520b被添加到事務表510,并且TCP頭部的SEQ#字段中的值"39"被存儲在針對客戶端到服務器方向的起始序列號字段和結(jié)束序列號字段中。通過將第一事務記錄的針對相反方向的結(jié)束序列號字段中的值142加上1來獲得相反方向的起始序列號字段和結(jié)束序列號字段的值。此外,在步驟418中,40個頭部字節(jié)被添加到第二HTTP事務記錄520b的字節(jié)計數(shù)字段527。另一個記錄也被添加到事務描述數(shù)據(jù)結(jié)構(gòu)并且被指針B所指向。指針B被存儲在第二數(shù)據(jù)記錄的相關器字段528中。然后控制傳遞到步驟440的實施例441。表2D.在處理六個示例性IP數(shù)據(jù)報之后HTTP事務表的內(nèi)容<table>tableseeoriginaldocumentpage32</column></row><table>在步驟441中,在步驟442中確定在有效載荷結(jié)束之前存在HTTP事務邊界。如表1中所示,數(shù)據(jù)分組336在TCP有效載荷的前15個字節(jié)中包括一個請求,并且在TCP有效載荷的后12個字節(jié)中包括第二請求??刂苽鬟f到步驟464。在步驟464中,到邊界為止的15個字節(jié)減去l被添加到第二HTTP事務記錄中的結(jié)束序列號字段中的值"39",以給出新值"53"。在步驟484中,到邊界為止的15字節(jié)被添加到字節(jié)計數(shù)字段。然后控制傳遞到步驟485,以遞增事務記錄以用于下一HTTP事務。由于此時在HTTP事務表510中沒有第三HTTP事務記錄,因此第三HTTP事務記錄520在步驟485期間被添加到表中并且被填充以空值。在步驟485中,"1"被加到前一事務的結(jié)束序列號字段中的值(53=39+15-1),并且被存儲在第三事務的起始序列號字段中和結(jié)束序列號字段中。然后控制傳遞到步驟490,并且回到步驟441。回到步驟441,確定在TCP有效載荷中沒有其它HTTP事務邊界。因此,控制傳遞到步驟462和步驟482,在步驟462中到TCP有效載荷結(jié)束為止的12個字節(jié)減去l被添加到第三事務的結(jié)束序列號字段,在步驟482中12字節(jié)被添加到字節(jié)計數(shù)字段。因此生成了表2D中顯示的值。表2E中的結(jié)果如下積累。數(shù)據(jù)分組337在步驟402中被接收,并且通過步驟404被導向步驟411,因為它具有HTTP有效載荷。數(shù)據(jù)分組337具有SEQ#字段值143并且處在從服務器起的方向上。在步驟412中,使第一HTTP事務記錄520a成為當前事務記錄。在步驟413中,確定該值"143"不在第一事務記錄的從服務器起的方向上的序列號范圍中,該范圍是"100至142"。因此,控制傳遞到步驟416和417以遞增到下一記錄520。在步驟413中,確定該值"143"在第二事務記錄的從服務器起的方向上的序列號范圍中,該范圍是"143至143"??刂苽鬟f到步驟414以將頭部字節(jié)添加到字節(jié)計數(shù)字段。因此40個字節(jié)被添加到第二事務。然后控制傳遞到步驟440的實施例441。表2E.在處理七個示例性IP數(shù)據(jù)報之后HTTP事務表的內(nèi)容記錄號從c的起始序列號從C的結(jié)束序列號從S的起始序列號從S的結(jié)束序列號字節(jié)計數(shù)相關器1138100142279指針A23953143143+80-155+40+80指針B35465222+1222+7012+70指針C在步驟441中,確定在有效載荷結(jié)束之前存在HTTP事務邊界。如表1中所示,數(shù)據(jù)分組337在TCP有效載荷的前80個字節(jié)中包括一個響應,并且在TCP有效載荷的后70個字節(jié)中包括第二響應。控制傳遞到步驟464。在步驟464中,到邊界為止的80個字節(jié)減去1被添加到第二HTTP事務記錄中的結(jié)束序列號字段中的值"143",以給出新值"222"。在步驟484中,到邊界為止的80字節(jié)被添加到字節(jié)計數(shù)字段。然后控制傳遞到步驟485,以遞增事務記錄以用于下一HTTP事務。在步驟485中,"1"被加到前一事務的結(jié)束序列號字段中的值(222),并且被存儲在第三事務的起始序列號字段中和結(jié)束序列號字段中。然后控制傳遞到步驟490,并且回到步驟441。回到步驟441,確定在TCP有效載荷中沒有其它HTTP事務邊界。因此,控制傳遞到步驟462和步驟482,在步驟462中到TCP有效載荷結(jié)束為止的70個字節(jié)減去1被添加到第三事務的結(jié)束序列號字段,在步驟482中70字節(jié)被添加到第三事務的字節(jié)計數(shù)字段。因此生成了表2E中顯示的值。最后的ACK數(shù)據(jù)分組338中的40個字節(jié)隨后根據(jù)步驟421被添加。數(shù)據(jù)分組338在步驟402中被接收并且通過步驟404被導向步驟421,因為它不具有HTTP有效載荷。在步驟422中,確定SYN標志未被設置,因此控制傳遞到步驟426。在步驟426中,確定ACK標志被設置,因此控制傳遞到步驟430以使記錄#1成為當前事務記錄。數(shù)據(jù)分組338是來自客戶端方向的,并且具有ACK值"292"。在步驟434中,將ACK值減1(291)與當前事務記錄中的針對相反方向(即從服務器起)的結(jié)束序列號字段中的值相比較。在第一記錄中,該值為"38"。因為291大于38,所以控制傳遞到步驟432,以遞增事務記錄號。在第三事務中,針對相反方向的結(jié)束序列號字段的值為"292"。因為291不大于292,所以控制傳遞到步驟436。在步驟436中,IP數(shù)據(jù)報的大小(40字節(jié))被添加到第三事務的目前保存著值82的字節(jié)計數(shù)字段527,使第三事務的字節(jié)計數(shù)變?yōu)?22??刂苽鬟f到步驟494以轉(zhuǎn)發(fā)IP數(shù)據(jù)報。在TCP會話的前八個IP數(shù)據(jù)報之后的事務表的狀態(tài)在表3中示出。表3.在處理八個示例性IP數(shù)據(jù)報之后HTTP事務表的內(nèi)容<table>tableseeoriginaldocumentpage34</column></row><table>如表3所示,八個示例性IP數(shù)據(jù)報中的578個字節(jié)至少部分基于相同IP數(shù)據(jù)報之內(nèi)HTTP事務的邊界而分布在三個事務中。在現(xiàn)有技術方法中,這里與第三事務相關聯(lián)的122個字節(jié)將都與第二事務相關聯(lián);沒有字節(jié)與第三事務相關聯(lián)。在這里注意,在數(shù)據(jù)分組338中的ACK消息之后,第三事務可能仍然開放。例如,另一數(shù)據(jù)分組可被從服務器320發(fā)送,其中具有針對第三事務的額外的響應數(shù)據(jù)。在圖4A所示的步驟498期間,在事務完成之后,基于字節(jié)計數(shù)的計費數(shù)據(jù)被發(fā)送到計費服務器并且關聯(lián)被刪除。如上所述,服務網(wǎng)關將在充分長的時間中維護該關聯(lián),例如HTTP事務表510中的HTTP事務記錄520,以允許對照正確的HTTP事務來對開放TCP會話上的TCP重傳進行計數(shù)。在使用序列號范圍來分離HTTP事務的實施例中,當兩個方向上的TCPSEQ#字段中的值都比結(jié)束序列號要大TCP窗口大小時,可以認為事務完成。出于說明目的,假定客戶端到服務器方向上的TCP窗口大小是16000個字節(jié),服務器到客戶端方向上的TCP窗口大小是32000。于是當針對客戶端到服務器方向的SEQ弁字段中的值大于16038并且針對服務器到客戶端方向的SEQ#字段中的值大于32142時,第一HTTP事務的HTTP事務記錄520a可被去除。利用上文描述的方法400和結(jié)構(gòu)510,IP數(shù)據(jù)報字節(jié)計數(shù)被分布在不同的HTTP事務中。預期IP數(shù)據(jù)報計數(shù)可類似地分布在TCP數(shù)據(jù)分組中攜帶的其他事務中。例如,在一些實施例中,IP數(shù)據(jù)報計數(shù)被分布在RTSP事務中。RTSP事務在RFC2326中定義,特此通過引用將該RFC2326的全部內(nèi)容結(jié)合進來,就好像在這里完全闡述了一樣。在一些實施例中,音頻流的計費率不同于視頻流。在一些實施例中,計費基于起始和停止時的時鐘時間,其中對于PAUSE操作的開始到停止有一個計費率,而對于PLAY操作的開始到停止有另一個不同的計費率。在這樣的實施例中,HTTP事務表510被替換成用于RTSP事務的類似表格,并且與方法400類似的方法將頭部和有效載荷字節(jié)與RTSP事務而不是HTTP事務關聯(lián)起來。4.0實現(xiàn)機構(gòu)-硬件概述圖6是示出實現(xiàn)本發(fā)明的一個實施例的計算機系統(tǒng)600的框圖。優(yōu)選實施例是利用運行在諸如路由器設備之類的網(wǎng)絡元件上的一個或多個計算機程序來實現(xiàn)的。因此,在此實施例中,計算機系統(tǒng)600是路由器。計算機系統(tǒng)600包括用于在計算機系統(tǒng)600的其他內(nèi)部和外部組件之間傳遞信息的通信機構(gòu),例如總線610。信息被表示為可測量現(xiàn)象的物理信號,所述可測量現(xiàn)象通常是電壓,但在其他實施例中包括諸如磁、電磁、壓力、化學、分子原子和量子交互之類的現(xiàn)象。例如,北磁場和南磁場或者零電壓和非零電壓代表二進制數(shù)字(比特)的兩個狀態(tài)(0,1)。二進制數(shù)字的序列構(gòu)成用于表示數(shù)字或字符代碼的數(shù)字數(shù)據(jù)??偩€610包括許多并行的信息導體,以便信息在耦合到總線610的設備之間被迅速傳送。用于處理信息的一個或多個處理器602與總線610相耦合。處理器602對信息執(zhí)行一組操作。該組操作包括從總線610接收信息或?qū)⑿畔⒅糜诳偩€610上。該組操作一般還包括比較兩個或更多個信息單元、移動信息單元的位置以及例如通過加法或乘法來組合兩個或更多個信息單元。將由處理器602執(zhí)行的操作序列構(gòu)成計算機指令。計算機系統(tǒng)600還包括耦合到總線610的存儲器604。諸如隨機訪問存儲器(RAM)或其他動態(tài)存儲設備之類的存儲器604存儲包括計算機指令在內(nèi)的信息。動態(tài)存儲器允許存儲在其中的信息被計算機系統(tǒng)600改變。RAM允許存儲在被稱為存儲器地址的位置處的信息單元以獨立于相鄰地址處的信息的方式被存儲和取得。存儲器604還被處理器602用來在計算機指令執(zhí)行期間存儲臨時值。計算機系統(tǒng)600還包括耦合到總線610的只讀存儲器(ROM)606或其他靜態(tài)存儲設備,其用于存儲不被計算機系統(tǒng)600改變的靜態(tài)信息,包括指令。同樣耦合到總線610的是非易失性(持續(xù)性)存儲設備608,例如磁盤或光盤,其用于存儲即使在計算機系統(tǒng)600被關斷或者由于其他原因掉電時也會持續(xù)下來的信息,包括指令。術語計算機可讀介質(zhì)在這里用來指任何參與向處理器602提供包括用于執(zhí)行的指令在內(nèi)的信息的介質(zhì)。這種介質(zhì)可采取許多形式,包括但不限于非易失性介質(zhì)、易失性介質(zhì)和傳輸介質(zhì)。非易失性介質(zhì)例如包括光盤或磁盤,例如存儲設備608。易失性介質(zhì)例如包括動態(tài)存儲器604。傳輸介質(zhì)例如包括同軸電纜、銅線、光纜和在無需導線或線纜的情況下通過空間傳播的波,例如聲波和電磁波,包括無線電波、光波和紅外波。經(jīng)由傳輸介質(zhì)傳輸?shù)男盘栐谶@里被稱為載波。計算機可讀介質(zhì)的常見形式例如包括軟盤、柔性盤、硬盤、磁帶或任何其他磁介質(zhì),致密盤ROM(CD-ROM)、數(shù)字視頻盤(DVD)或任何其他光介質(zhì),穿孔卡、紙帶、或任何其他具有孔圖案的物理介質(zhì),RAM、可編程ROM(PROM)、可擦除PROM(EPROM)、FLASH-EPROM、任何其他存儲器芯片或卡盤、載波或者計算機可以讀取的任何其他介質(zhì)。包括指令在內(nèi)的信息被從外部終端612提供到總線610以供處理器使用,所述外部終端612例如是具有包含由人類用戶操作的數(shù)字字母鍵的鍵盤的終端或者是傳感器。傳感器檢測其附近的狀況,并將這些檢測變換成與計算機系統(tǒng)600中用于表示信息的信號相兼容的信號。耦合到總線610的終端612的主要用于與人類交互的其他外部組件包括用于呈現(xiàn)圖像的顯示設備(例如陰極射線管(CRT)或液晶顯示器(LCD)或等離子屏幕)和用于控制在顯示器上呈現(xiàn)的小光標圖像的位置并發(fā)出與在終端612的顯示器上呈現(xiàn)的圖形元素相關聯(lián)的命令的定點設備(例如鼠標或跟蹤球或光標方向鍵)。在一些實施例中,終端612被省略。計算機系統(tǒng)600還包括耦合到總線610的通信接口670的一個或多個實例。通信接口670提供到利用其自己的處理器來工作的多種外部設備的雙向通信耦合,所述外部設備例如是打印機、掃描儀、外部盤和終端612。在計算機系統(tǒng)600中運行的固件或軟件提供終端接口或者基于字符的命令接口,以便外部命令能夠被提供給計算機系統(tǒng)。例如,通信接口670可以是并行端口或串行端口,例如RS-232或RS-422接口,或者是個人計算機上的通用串行總線(USB)端口。在一些實施例中,通信接口670是綜合服務數(shù)字網(wǎng)(ISDN)卡或數(shù)字訂戶線(DSL)卡或提供到相應類型的電話線的信息通信連接的電話調(diào)制解調(diào)器。在一些實施例中,通信接口670是將總線610上的信號轉(zhuǎn)換成用于經(jīng)由同軸電纜的通信連接的信號或者用于經(jīng)由光纜的通信連接的光信號的線纜調(diào)制解調(diào)器。作為另一示例,通信接口670可以是用于提供到兼容的LAN(例如以太網(wǎng))的數(shù)據(jù)通信連接的局域網(wǎng)(LAN)卡。也可實現(xiàn)無線鏈路。對于無線鏈路,通信接口670發(fā)送和接收攜帶信息流(例如數(shù)字數(shù)據(jù))的電信號、聲信號或電磁信號,包括紅外信號和光信號。這種信號是載波的示例。在圖示實施例中,諸如專用集成電路(IC)620之類的專用硬件耦合到總線610。專用硬件被配置為為了特殊的目的而足夠迅速地執(zhí)行不由處理器602執(zhí)行的操作。專用IC的示例包括用于生成圖像以便顯示的圖形加速器卡、用于對經(jīng)由網(wǎng)絡發(fā)送的消息進行加密和解密的密碼板、語音識別、以及到特殊外部設備的接口,所述特殊外部設備例如是重復執(zhí)行在硬件中更高效實現(xiàn)的某個復雜操作序列的機械臂和醫(yī)學掃描裝備。在用作路由器的圖示計算機中,計算機系統(tǒng)600包括交換系統(tǒng)630,作為用于切換信息以便在網(wǎng)絡上流動的專用硬件。交換系統(tǒng)630—般包括多個通信接口,例如通信接口670,用于耦合到多個其他設備。一般來說,每個耦合都具有與網(wǎng)絡中的或附接到網(wǎng)絡的另一設備相連接的網(wǎng)絡鏈路632,所述網(wǎng)絡例如是圖示實施例中的本地網(wǎng)絡680,具有其自己的處理器的多種外部設備與該網(wǎng)絡相連接。在一些實施例中,輸入接口或輸出接口或兩者被鏈接到一個或多個外部網(wǎng)絡元件中的每一個。雖然在圖示實施例中網(wǎng)絡鏈路632包括三個網(wǎng)絡鏈路632a、632b、632c,但在其他實施例中,更多或更少的鏈路被連接到交換系統(tǒng)630。網(wǎng)絡鏈路632—般通過一個或多個網(wǎng)絡來提供到使用或處理信息的其他設備的信息通信。例如,網(wǎng)絡鏈路632b可通過本地網(wǎng)絡680來提供到主機計算機682或由因特網(wǎng)服務提供者(ISP)操作的裝備684的連接。ISP裝備684進而又通過現(xiàn)在通常被稱為因特網(wǎng)690的網(wǎng)絡的公共的世界范圍的分組交換通信網(wǎng)絡來提供數(shù)據(jù)通信服務。被稱為服務器692的連接到因特網(wǎng)的計算機響應于經(jīng)由因特網(wǎng)接收的信息而提供服務。例如,服務器692提供用于交換系統(tǒng)630的路由信息。交換系統(tǒng)630包括被配置為執(zhí)行與在網(wǎng)絡680的元件之間傳遞信息相關聯(lián)的交換功能的邏輯和電路,所述傳遞信息包括傳遞沿一條網(wǎng)絡鏈路(例如632a)接收的信息以作為相同或不同網(wǎng)絡鏈路(例如632c)上的輸出。交換系統(tǒng)630根據(jù)公知的預定協(xié)議和慣例將到達輸入接口的信息流量切換到輸出接口。在一些實施例中,交換系統(tǒng)630包括其自己的處理器和存儲器,以便利用軟件來執(zhí)行一些交換功能。在一些實施例中,交換系統(tǒng)630依賴于處理器602、存儲器604、ROM606、存儲設備608或某種組合來利用軟件執(zhí)行一個或多個交換功能。例如,交換系統(tǒng)630與實施特定協(xié)議的處理器602合作,可確定在鏈路632a上到達輸入接口的數(shù)據(jù)分組的目的地,并利用輸出接口在鏈路632c上將它發(fā)送到正確的目的地。目的地可包括主機682、服務器692、連接到本地網(wǎng)絡680或因特網(wǎng)690的其他終端設備,或者本地網(wǎng)絡680或因特網(wǎng)690中的其他路由和交換設備。本發(fā)明涉及使用計算機系統(tǒng)600來實現(xiàn)這里描述的技術。根據(jù)本發(fā)明的一個實施例,這些技術是由計算機系統(tǒng)600響應于處理器602執(zhí)行包含在存儲器604中的一個或多個指令的一個或多個序列來執(zhí)行的。這種指令也被稱為軟件和程序代碼,它們可被從另一計算機可讀介質(zhì)(例如存儲設備608)讀取到存儲器604中。對包含在存儲器604中的指令序列的執(zhí)行致使處理器602執(zhí)行這里描述的方法步驟。在替換實施例中,諸如專用集成電路620和交換系統(tǒng)630中的電路之類的硬件可取代軟件或與軟件結(jié)合來實現(xiàn)本發(fā)明。從而,本發(fā)明的實施例不局限于硬件和軟件的任何特定組合。通過通信接口(例如接口670)經(jīng)由網(wǎng)絡鏈路632和其他網(wǎng)絡來傳輸?shù)男盘?該信號攜帶去往和來自計算機系統(tǒng)600的信息)是載波的示例性形式。計算機系統(tǒng)600可通過網(wǎng)絡680、690等等,通過網(wǎng)絡鏈路632和通信接口(例如接口670)來發(fā)送和接收信息,包括程序代碼。在使用因特網(wǎng)690的示例中,服務器692通過交換系統(tǒng)630中的通信接口,通過因特網(wǎng)690、ISP裝備684、本地網(wǎng)絡680和網(wǎng)絡鏈路632b來發(fā)送從計算機600發(fā)送來的消息所請求的用于特定應用的程序代碼。接收到的代碼可在其被接收時被處理器602或交換系統(tǒng)630執(zhí)行,或者可被存儲在存儲設備608或其他非易失性設備中以便以后執(zhí)行,或者兩種情況兼有。這樣,計算機系統(tǒng)600可以以載波形式獲得應用程序代碼。各種形式的計算機可讀介質(zhì)可用于將指令或數(shù)據(jù)或兩者的一個或多個序列運送到處理器602以便執(zhí)行。例如,指令和數(shù)據(jù)可以首先承載在遠程計算機(例如主機682)的磁盤上。遠程計算機可以將指令和數(shù)據(jù)加載到其動態(tài)存儲器中,并利用調(diào)制解調(diào)器經(jīng)由電話線來發(fā)送指令和數(shù)據(jù)。計算機系統(tǒng)600的本地調(diào)制解調(diào)器接收電話線上的指令和數(shù)據(jù),并使用紅外發(fā)射器來將指令和數(shù)據(jù)轉(zhuǎn)換為紅外信號,該紅外信號就是充當網(wǎng)絡鏈路632b的載波。充當交換系統(tǒng)630中的通信接口的紅外檢測器接收在紅外信號中攜帶的指令和數(shù)據(jù),并且將代表該指令和數(shù)據(jù)的信息置于總線610上??偩€610將信息運送到存儲器604,處理器602利用與指令一起發(fā)送的一些數(shù)據(jù)來從存儲器604中取得指令并執(zhí)行指令。在存儲器604中接收的指令和數(shù)據(jù)可以可選地在被處理器602或交換系統(tǒng)603執(zhí)行之前或之后存儲在存儲設備608上。5,0擴展和替換在以上說明中,已參考特定實施例描述了本發(fā)明。但是,應當清楚,在不脫離本發(fā)明更寬廣的精神和范圍的前提下,可以進行各種修改和變化。因此,說明書和附圖都應當被認為是示例性的,而非限制性的。權利要求1.一種用于對利用傳輸控制協(xié)議(TCP)經(jīng)由網(wǎng)絡傳送的相同數(shù)據(jù)分組中的多個事務分別記賬的方法,包括以下步驟接收包括傳輸控制協(xié)議(TCP)有效載荷數(shù)據(jù)的因特網(wǎng)協(xié)議(IP)數(shù)據(jù)分組;解析所述TCP有效載荷以確定指示出第一事務和第二事務之間的邊界上的字節(jié)位置的邊界數(shù)據(jù);基于所述邊界數(shù)據(jù)來確定指示出所述TCP有效載荷中與所述第一事務相關聯(lián)的字節(jié)的數(shù)目的第一字節(jié)計數(shù);以及至少部分基于所述第一字節(jié)計數(shù)來確定所述第一事務的第一記賬數(shù)據(jù)。2.如權利要求1所述的方法,其中所述IP數(shù)據(jù)分組包括TCP頭部,該TCP頭部包括序列數(shù)據(jù),該序列數(shù)據(jù)指示出在一個TCP會話期間,在從所述數(shù)據(jù)分組的IP源到所述數(shù)據(jù)分組的IP目的地的一個或多個TCP有效載荷中傳輸?shù)乃凶止?jié)之中,所述TCP有效載荷中的第一字節(jié)的序列號;并且所述確定與所述第一事務相關聯(lián)的第一字節(jié)計數(shù)的步驟還包括基于所述序列數(shù)據(jù)和所述邊界數(shù)據(jù)將所述第一事務與第一序列范圍關聯(lián)起來。3.如權利要求1所述的方法,還包括以下步驟基于所述邊界數(shù)據(jù)來確定指示出所述TCP頭部中與所述第二事務相關聯(lián)的字節(jié)的數(shù)目的第二字節(jié)計數(shù);以及至少部分基于所述第二字節(jié)計數(shù)來確定所述第二事務的第二記賬數(shù)據(jù)。4.如權利要求3所述的方法,其中所述IP數(shù)據(jù)分組包括序列數(shù)據(jù),該序列數(shù)據(jù)指示出在一個TCP會話期間,在從所述數(shù)據(jù)分組的IP源到所述數(shù)據(jù)分組的IP目的地的一個或多個TCP有效載荷中傳輸?shù)乃凶止?jié)之中,所述TCP有效載荷中的第一字節(jié)的序列號;并且所述確定與所述第二事務相關聯(lián)的第二字節(jié)計數(shù)的步驟還包括基于所述序列數(shù)據(jù)和所述邊界數(shù)據(jù)將所述第二事務與第二序列范圍關聯(lián)起來。5.如權利要求4所述的方法,其中所述IP數(shù)據(jù)分組包括指示出所述TCP有效載荷的大小的大小數(shù)據(jù);并且所述確定與所述第二事務相關聯(lián)的第二字節(jié)計數(shù)的步驟還包括基于所述大小數(shù)據(jù)將所述第二事務與第二序列范圍關聯(lián)起來。6.如權利要求1所述的方法,其中所述IP數(shù)據(jù)分組包括與所述有效載荷數(shù)據(jù)不同的頭部數(shù)據(jù),該頭部數(shù)據(jù)指示出IP頭部和TCP頭部;并且所述確定第一記賬數(shù)據(jù)的步驟還包括至少部分基于所述頭部數(shù)據(jù)中的字節(jié)數(shù)目來確定所述第一記賬數(shù)據(jù)的步驟。7.如權利要求1所述的方法,還包括為所述第一事務形成具有兩組條目的數(shù)據(jù)結(jié)構(gòu)的步驟,針對第一方向序列范圍的第一方向條目與從所述數(shù)據(jù)分組的IP源傳播到所述數(shù)據(jù)分組的IP目的地的數(shù)據(jù)分組中的所述第一事務相關聯(lián),針對第二方向序列范圍的第二方向條目與從所述數(shù)據(jù)分組的IP目的地傳播到所述數(shù)據(jù)分組的IP源的數(shù)據(jù)分組中的所述第一事務相關聯(lián)。8.如權利要求7所述的方法,其中所述兩組條目的每個條目包括用于保存指示出序列范圍的起始的數(shù)據(jù)的起始字段和用于保存指示出所述序列范圍的結(jié)束的數(shù)據(jù)的結(jié)束字段。9.如權利要求1所述的方法,所述確定所述第一記賬數(shù)據(jù)的步驟還包括確定與所述第一事務相關聯(lián)的第一每字節(jié)費用;以及基于將所述第一字節(jié)計數(shù)乘以所述第一每字節(jié)費用來確定所述第一記賬數(shù)據(jù)。10.如權利要求1所述的方法,還包括基于所述第一記賬數(shù)據(jù)形成計費記錄;以及將所述計費記錄發(fā)送到一個進程,該進程使得為請求所述第一事務的一方和對所述第一事務作出響應的一方中的至少一個評估針對所述第一事務的費用。11.一種承載一個或多個指令序列的計算機可讀介質(zhì),該一個或多個指令序列用于對利用傳輸控制協(xié)議(TCP)經(jīng)由網(wǎng)絡傳送的相同數(shù)據(jù)分組中的多個事務分別記賬,其中一個或多個處理器對所述一個或多個指令序列的運行使得該一個或多個處理器執(zhí)行以下步驟接收包括傳輸控制協(xié)議(TCP)有效載荷數(shù)據(jù)的因特網(wǎng)協(xié)議(IP)數(shù)據(jù)分組;解析所述TCP有效載荷以確定指示出第一事務和第二事務之間的邊界上的字節(jié)位置的邊界數(shù)據(jù);基于所述邊界數(shù)據(jù)來確定指示出所述TCP有效載荷中與所述第一事務相關聯(lián)的字節(jié)的數(shù)目的第一字節(jié)計數(shù);以及至少部分基于所述第一字節(jié)計數(shù)來確定所述第一事務的第一記賬數(shù)據(jù)。12.—種用于對利用傳輸控制協(xié)議(TCP)經(jīng)由網(wǎng)絡傳送的相同數(shù)據(jù)分組中的多個事務分別記賬的設備,包括用于接收包括傳輸控制協(xié)議(TCP)有效載荷數(shù)據(jù)的因特網(wǎng)協(xié)議(IP)數(shù)據(jù)分組的裝置;用于解析所述TCP有效載荷以確定指示出第一事務和第二事務之間的邊界上的字節(jié)位置的邊界數(shù)據(jù)的裝置;用于基于所述邊界數(shù)據(jù)來確定指示出所述TCP有效載荷中與所述第一事務相關聯(lián)的字節(jié)的數(shù)目的第一字節(jié)計數(shù)的裝置;以及用于至少部分基于所述第一字節(jié)計數(shù)來確定所述第一事務的第一記賬數(shù)據(jù)的裝置。13.—種用于對利用傳輸控制協(xié)議(TCP)經(jīng)由網(wǎng)絡傳送的相同數(shù)據(jù)分組中的多個事務分別記賬的設備,包括耦合到分組交換網(wǎng)絡以與之進行數(shù)據(jù)分組通信的網(wǎng)絡接口;一個或多個處理器;計算機可讀介質(zhì);以及存儲在所述計算機可讀介質(zhì)中的一個或多個指令序列,該一個或多個指令序列在被所述一個或多個處理器執(zhí)行時,使得所述一個或多個處理器執(zhí)行以下步驟接收包括傳輸控制協(xié)議(TCP)有效載荷數(shù)據(jù)的因特網(wǎng)協(xié)議(IP)數(shù)據(jù)分組;解析所述TCP有效載荷以確定指示出第一事務和第二事務之間的邊界上的字節(jié)位置的邊界數(shù)據(jù);基于所述邊界數(shù)據(jù)來確定指示出所述TCP有效載荷中與所述第一事務相關聯(lián)的字節(jié)的數(shù)目的第一字節(jié)計數(shù);以及至少部分基于所述第一字節(jié)計數(shù)來確定所述第一事務的第一記賬數(shù)據(jù)。14.如權利要求13所述的設備,其中所述IP數(shù)據(jù)分組包括序列數(shù)據(jù),該序列數(shù)據(jù)指示出在一個TCP會話期間,在從所述數(shù)據(jù)分組的IP源到所述數(shù)據(jù)分組的IP目的地的一個或多個TCP有效載荷中傳輸?shù)乃凶止?jié)之中,所述TCP有效載荷中的第一字節(jié)的序列號;并且所述確定與所述第一事務相關聯(lián)的第一字節(jié)計數(shù)的步驟還包括基于所述序列數(shù)據(jù)和所述邊界數(shù)據(jù)將所述第一事務與第一序列范圍關聯(lián)起來。15.如權利要求13所述的設備,其中所述一個或多個處理器對所述一個或多個指令序列的運行還使得所述一個或多個處理器執(zhí)行以下步驟基于所述邊界數(shù)據(jù)來確定指示出所述TCP頭部中與所述第二事務相關聯(lián)的字節(jié)的數(shù)目的第二字節(jié)計數(shù);以及至少部分基于所述第二字節(jié)計數(shù)來確定所述第二事務的第二記賬數(shù)據(jù)16.如權利要求15所述的設備,其中所述IP數(shù)據(jù)分組包括序列數(shù)據(jù),該序列數(shù)據(jù)指示出在一個TCP會話期間,在從所述數(shù)據(jù)分組的IP源到所述數(shù)據(jù)分組的IP目的地的一個或多個TCP有效載荷中傳輸?shù)乃凶止?jié)之中,所述TCP有效載荷中的第一字節(jié)的序列號;并且所述確定與所述第二事務相關聯(lián)的第二字節(jié)計數(shù)的步驟還包括基于所述序列數(shù)據(jù)和所述邊界數(shù)據(jù)將所述第二事務與第二序列范圍關聯(lián)起來。17.如權利要求16所述的設備,其中所述IP數(shù)據(jù)分組包括指示出所述TCP有效載荷的大小的大小數(shù)據(jù);并且所述確定與所述第二事務相關聯(lián)的第二字節(jié)計數(shù)的步驟還包括基于所述大小數(shù)據(jù)將所述第二事務與第二序列范圍關聯(lián)起來。18.如權利要求13所述的設備,其中所述IP數(shù)據(jù)分組包括與所述有效載荷數(shù)據(jù)不同的頭部數(shù)據(jù),該頭部數(shù)據(jù)指示出IP頭部和TCP頭部;并且所述確定第一記賬數(shù)據(jù)的步驟還包括至少部分基于所述頭部數(shù)據(jù)中的字節(jié)數(shù)目來確定所述第一記賬數(shù)據(jù)的步驟。19.如權利要求13所述的設備,其中所述一個或多個處理器對所述一個或多個指令序列的運行還使得所述一個或多個處理器執(zhí)行為所述第一事務形成具有兩組條目的數(shù)據(jù)結(jié)構(gòu)的步驟,針對第一方向序列范圍的第一方向條目與從所述數(shù)據(jù)分組的IP源傳播到所述數(shù)據(jù)分組的IP目的地的數(shù)據(jù)分組中的所述第一事務相關聯(lián),針對第二方向序列范圍的第二方向條目與從所述數(shù)據(jù)分組的IP目的地傳播到所述數(shù)據(jù)分組的IP源的數(shù)據(jù)分組中的所述第一事務相關聯(lián)。20.如權利要求19所述的設備,其中所述兩組條目的每個條目包括用于保存指示出序列范圍的起始的數(shù)據(jù)的起始字段和用于保存指示出所述序列范圍的結(jié)束的數(shù)據(jù)的結(jié)束字段。21.如權利要求13所述的設備,所述確定所述第一記賬數(shù)據(jù)的步驟還包括確定與所述第一事務相關聯(lián)的第一每字節(jié)費用;以及基于將所述第一字節(jié)計數(shù)乘以所述第一每字節(jié)費用來確定所述第一記賬數(shù)據(jù)。22.如權利要求13所述的設備,其中所述一個或多個指令序列的運行還使得所述一個或多個處理器執(zhí)行以下步驟基于所述第一記賬數(shù)據(jù)形成計費記錄;以及將所述計費記錄發(fā)送到一個進程,該進程使得為請求所述第一事務的一方和對所述第一事務作出響應的一方中的至少一個評估針對所述第一事務的費用。23.—種承載多個數(shù)據(jù)結(jié)構(gòu)的計算機可讀介質(zhì),該多個數(shù)據(jù)結(jié)構(gòu)用于對至少部分攜帶在利用傳輸控制協(xié)議(TCP)經(jīng)由網(wǎng)絡傳送的相同數(shù)據(jù)分組中的相應多個事務分別記賬,每個數(shù)據(jù)結(jié)構(gòu)包括客戶端序列范圍字段,該客戶端序列范圍字段保存著這樣的數(shù)據(jù),該數(shù)據(jù)指示出從客戶端進程接收的第一組的一個或多個數(shù)據(jù)分組中的TCP頭部中的序列號字段中的值的范圍,該范圍指示出特定TCP會話中的特定事務,服務器序列范圍字段,該服務器序列范圍字段保存著這樣的數(shù)據(jù),該數(shù)據(jù)指示出響應于所述第一組而從服務器進程接收的第二組的一個或多個數(shù)據(jù)分組中的TCP頭部中的序列號字段中的值的范圍,該范圍指示出所述特定TCP會話中的所述特定事務,以及計數(shù)器字段,該計數(shù)器字段保存著指示出與所述第一組和所述第二組相關聯(lián)的網(wǎng)絡資源的量的數(shù)據(jù),該數(shù)據(jù)是至少部分基于所述客戶端序列范圍字段和所述服務器序列范圍字段中保存的數(shù)據(jù)來確定的,其中所述客戶端范圍和所述服務器范圍中的至少一個包括與任何TCP有效載荷的任何邊界都不對應的結(jié)束點。24.如權利要求11所述的計算機可讀介質(zhì),其中所述IP數(shù)據(jù)分組包括TCP頭部,該TCP頭部包括序列數(shù)據(jù),該序列數(shù)據(jù)指示出在一個TCP會話期間,在從所述數(shù)據(jù)分組的IP源到所述數(shù)據(jù)分組的IP目的地的一個或多個TCP有效載荷中傳輸?shù)乃凶止?jié)之中,所述TCP有效載荷中的第一字節(jié)的序列號;并且所述確定與所述第一事務相關聯(lián)的第一字節(jié)計數(shù)的步驟還包括基于所述序列數(shù)據(jù)和所述邊界數(shù)據(jù)將所述第一事務與第一序列范圍關聯(lián)起來。25.如權利要求11所述的計算機可讀介質(zhì),其中對所述一個或多個指令序列的運行還使得所述一個或多個處理器執(zhí)行以下步驟基于所述邊界數(shù)據(jù)來確定指示出所述TCP頭部中與所述第二事務相關聯(lián)的字節(jié)的數(shù)目的第二字節(jié)計數(shù);以及.至少部分基于所述第二字節(jié)計數(shù)來確定所述第二事務的第二記賬數(shù)據(jù)。26.如權利要求25所述的計算機可讀介質(zhì),其中所述IP數(shù)據(jù)分組包括序列數(shù)據(jù),該序列數(shù)據(jù)指示出在一個TCP會話期間,在從所述數(shù)據(jù)分組的IP源到所述數(shù)據(jù)分組的IP目的地的一個或多個TCP有效載荷中傳輸?shù)乃凶止?jié)之中,所述TCP有效載荷中的第一字節(jié)的序列號;并且所述確定與所述第二事務相關聯(lián)的第二字節(jié)計數(shù)的步驟還包括基于所述序列數(shù)據(jù)和所述邊界數(shù)據(jù)將所述第二事務與第二序列范圍關聯(lián)起來。27.如權利要求26所述的計算機可讀介質(zhì),其中所述IP數(shù)據(jù)分組包括指示出所述TCP有效載荷的大小的大小數(shù)據(jù);并且所述確定與所述第二事務相關聯(lián)的第二字節(jié)計數(shù)的步驟還包括基于所述大小數(shù)據(jù)將所述第二事務與第二序列范圍關聯(lián)起來。28.如權利要求11所述的計算機可讀介質(zhì),其中所述IP數(shù)據(jù)分組包括與所述有效載荷數(shù)據(jù)不同的頭部數(shù)據(jù),該頭部數(shù)據(jù)指示出IP頭部和TCP頭部;并且所述確定第一記賬數(shù)據(jù)的步驟還包括至少部分基于所述頭部數(shù)據(jù)中的字節(jié)數(shù)目來確定所述第一記賬數(shù)據(jù)的步驟。29.如權利要求11所述的計算機可讀介質(zhì),其中對所述一個或多個指令序列的運行還使得所述一個或多個處理器執(zhí)行為所述第一事務形成具有兩組條目的數(shù)據(jù)結(jié)構(gòu)的步驟,針對第一方向序列范圍的第一方向條目與從所述數(shù)據(jù)分組的IP源傳播到所述數(shù)據(jù)分組的IP目的地的數(shù)據(jù)分組中的所述第一事務相關聯(lián),針對第二方向序列范圍的第二方向條目與從所述數(shù)據(jù)分組的IP目的地傳播到所述數(shù)據(jù)分組的IP源的數(shù)據(jù)分組中的所述第一事務相關聯(lián)。30.如權利要求29所述的計算機可讀介質(zhì),其中所述兩組條目的每個條目包括用于保存指示出序列范圍的起始的數(shù)據(jù)的起始字段和用于保存指示出所述序列范圍的結(jié)束的數(shù)據(jù)的結(jié)束字段。31.如權利要求11所述的計算機可讀介質(zhì),所述確定所述第一記賬數(shù)據(jù)的步驟還包括確定與所述第一事務相關聯(lián)的第一每字節(jié)費用;以及基于將所述第一字節(jié)計數(shù)乘以所述第一每字節(jié)費用來確定所述第一記賬數(shù)據(jù)。32.如權利要求11所述的計算機可讀介質(zhì),其中對所述一個或多個指令序列的運行還使得所述一個或多個處理器執(zhí)行以下步驟基于所述第一記賬數(shù)據(jù)形成計費記錄;以及將所述計費記錄發(fā)送到一個進程,該進程使得為請求所述第一事務的一方和對所述第一事務作出響應的一方中的至少一個評估針對所述第一事務的費用。全文摘要用于對利用傳輸控制協(xié)議(TCP)經(jīng)由網(wǎng)絡傳送的相同數(shù)據(jù)分組中的多個事務分別記賬的技術包括接收包括傳輸控制協(xié)議(TCP)有效載荷數(shù)據(jù)的因特網(wǎng)協(xié)議(IP)數(shù)據(jù)分組。解析TCP有效載荷以確定指示出第一事務和第二事務之間的邊界上的字節(jié)位置的邊界數(shù)據(jù)。基于該邊界數(shù)據(jù)來確定指示出TCP有效載荷中與第一事務相關聯(lián)的字節(jié)的數(shù)目的字節(jié)計數(shù)。至少部分基于該字節(jié)計數(shù)來確定第一事務的記賬數(shù)據(jù)。這些技術允許服務網(wǎng)關為在TCP數(shù)據(jù)分組中攜帶的不同請求和響應分別計費,所述請求和響應例如是針對超文本傳送協(xié)議(HTTP)和實時流傳輸協(xié)議(RTSP)的請求和響應。文檔編號G06F15/16GK101375264SQ200680032581公開日2009年2月25日申請日期2006年6月15日優(yōu)先權日2005年7月6日發(fā)明者曾子敏,理查德·格雷,羅伯特·巴茨,路易斯·門迪托,邁克爾·薩頓,馬克·埃伯特申請人:思科技術公司