CN101375264B - 用于对tcp有效载荷中的多个事务进行记帐的技术 - Google Patents
用于对tcp有效载荷中的多个事务进行记帐的技术 Download PDFInfo
- Publication number
- CN101375264B CN101375264B CN2006800325810A CN200680032581A CN101375264B CN 101375264 B CN101375264 B CN 101375264B CN 2006800325810 A CN2006800325810 A CN 2006800325810A CN 200680032581 A CN200680032581 A CN 200680032581A CN 101375264 B CN101375264 B CN 101375264B
- Authority
- CN
- China
- Prior art keywords
- affairs
- tcp
- data
- packet
- http
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/04—Processing captured monitoring data, e.g. for logfile generation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/14—Charging, metering or billing arrangements for data wireline or wireless communications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/14—Charging, metering or billing arrangements for data wireline or wireless communications
- H04L12/1425—Charging, metering or billing arrangements for data wireline or wireless communications involving dedicated fields in the data packet for billing purposes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
用于对利用传输控制协议(TCP)经由网络传送的相同数据分组中的多个事务分别记账的技术包括:接收包括传输控制协议(TCP)有效载荷数据的因特网协议(IP)数据分组。解析TCP有效载荷以确定指示出第一事务和第二事务之间的边界上的字节位置的边界数据。基于该边界数据来确定指示出TCP有效载荷中与第一事务相关联的字节的数目的字节计数。至少部分基于该字节计数来确定第一事务的记账数据。这些技术允许服务网关为在TCP数据分组中携带的不同请求和响应分别计费,所述请求和响应例如是针对超文本传送协议(HTTP)和实时流传输协议(RTSP)的请求和响应。
Description
技术领域
本发明涉及对经由网络传送的数据分组进行处理;更具体而言,涉及对相同传输控制协议(TCP)数据分组中的多个事务分别进行记账。
背景技术
由外部通信链路连接的通用计算机系统的网络是公知的并且在商业中广泛使用。该网络通常包括帮助在计算机系统之间传送信息的一个或多个网络设备。网络节点是由通信链路连接的网络设备或计算机系统。
在网络节点之间,根据许多公知的、新的或者仍在开发中的协议中的一个或多个来交换信息。在此上下文中,“协议”由限定节点如何基于经由通信链路发送的信息来与彼此交互的一组规则构成。协议在每个节点内的不同操作层生效,从生成和接收各种类型的物理信号,到选择用于传送这些信号的链路,到对这些信号所指示的信息进行格式化,到识别由在计算机系统上运行的哪个软件应用发送或接收信息。用于经由网络交换信息的协议的概念上不同的层在开放系统互连(OSI)参考模型中描述。OSI参考模型一般在1999年9月出版的Radia Perlman所著的题为“Interconnections Second Edition”的参考书的第1.1节中有更详细描述,特此通过引用将该书结合进来,就好像在这里完全阐述了一样。
节点之间的通信一般通过交换分立的数据分组来实现。每个分组一般包括1]与特定协议相关联的头部信息,以及2]跟在头部信息之后、包含可独立于该特定协议来处理的信息的有效载荷信息。在一些协议中,分组包括3]跟在有效载荷之后、指示出有效载荷信息的结束的尾部信息。头部包括诸如分组的源、其目的地、有效载荷的长度以及协议所使用的其他属性之类的信息。通常,针对特定协议的有效载荷中的数据包括针对与OSI参考模型的不同的、通常更高的层相关联的不同协议的头部和有效载荷。针对特定协议的头部一般指示出其有效载荷中包含的下一协议的类型。有效载荷协议被认为是封装在头部协议中的。穿越多个异构网络(heterogeneous network)(例如因特网)的分组中包括的头部一般包括:物理(第1层)头部;数据链路(第2层)头部;互联网(第3层)头部(例如因特网协议IP头部);传输(第4层)头部(例如传输控制协议TCP头部);以及开放系统互连(OSI)参考模型所定义的一个或多个应用层(第5、6、7层)。
一种广泛使用的应用层(第7层)协议是超文本传送协议(HTTP),其被用于访问和传输数据文件(被称为文档),这些数据文件可能具有去往其他文档的链接,所述其他文档例如是通常称为网页的超文本标记语言(HTML)文档。HTTP版本1.1(HTTP 1.1)在本文写作之时在因特网工程任务组(IETF)请求注释(RFC)2616中有记载,该RFC2616可在名为rfc2616.txt的文件中找到,该文件与其他RFC文件一样可在万维网域www.ietf.org的名为rfc的文件目录中找到。特此通过引用将RFC2616的全部内容结合进来,就好像在这里完全阐述了一样。任何可利用HTTP传送的文档都是HTTP资源。HTTP资源包括网页、文本、音频、图像和视频。
响应于来自HTTP客户端的请求,资源被用HTTP从HTTP服务器(通常称为Web服务器)发送到HTTP客户端(通常称为Web浏览器或简称为浏览器)。计算机进程交互的客户端-服务器模型是公知的并且在商业中广泛使用。根据客户端-服务器模型,客户端进程向服务器进程发送包括请求的消息,服务器进程通过提供服务来作出响应。服务器进程也可向客户端进程返回具有响应的消息。通常客户端进程和服务器进程在不同的计算机设备(称为主机)上运行,并且利用一个或多个用于网络通信的协议经由网络进行通信。术语“服务器”在传统上用于指提供服务的进程,或者该进程所工作于的主机计算机。类似地,术语“客户端”在传统上用于指作出请求的进程,或者该进程所工作于的主机计算机。除非上下文中另有指明,否则这里所使用的术语“客户端”和“服务器”是指进程而不是主机计算机。此外,出于包括可靠性、可缩放性(scalability)和冗余在内的原因(但不限于这些原因),服务器所执行的进程可被分解成作为多个服务器在多个主机(有时称为层级(tier))上运行。这里所使用的单个HTTP事务是对HTTP资源的单个请求和响应于该请求而返回到HTTP客户端的HTTP资源。
随着近来的技术进步,各种专业的移动设备已经参与到包括HTTP事务在内的网络通信中。这种设备包括但不限于无线电话、个人数字助理(PDA)、电子笔记本、家用器具、人机接口设备和其他能够发起或接收经由网络传送的语音或数据的设备。与这种设备的网络通信通常是通过被称为服务网关(SG)的服务器来路由的。SG为设备执行各种功能,例如针对设备的专门特性而对资源进行重格式化。一些服务是知晓订户的,并且通过监视在设备和认证、授权和记账(AAA)服务器之间交换的消息来确定与设备相关联的订户。AAA服务器是本领域中公知的,并且包括远程拨号用户认证服务(RADIUS)服务器、Diameter服务器和终端接入控制器接入控制系统(TACACS)服务器。已知各种订户知晓服务,例如按内容过滤数据、按来源过滤(例如防火墙服务)、为更快传送而进行的数据压缩、加密和保证最低服务质量以支持像IP语音这样的高吞吐量且对延迟敏感的通信,等等。
SG所提供的许多服务是基于使用量来付费的;因此SG为了计费目的而对使用进行记录。在常见的操作模式中,SG针对在客户端和服务器之间传送的HTTP事务的IP字节总数进行收费。HTTP事务数据由IP数据报序列来携带。IP数据报是数据分组的包括IP头部和IP有效载荷的部分。IP数据报中的IP字节总数是IP头部和有效载荷中的字节的总和,该有效载荷包括TCP/IP分组中的TCP头部和TCP有效载荷。该数目在IP头部的IP总长度字段中给出。
利用HTTP 1.0,TCP会话可传输多个HTTP请求。TCP会话以TCPSYN数据分组开始,并且以TCP FIN数据分组结束,这是本领域中公知的。(例如参见W.Richard Stevens,TCP/IP Illustrated Volume 1,The Protocols,Addison Wesley Professional,Boston,1994,特此通过引用将其全部内容结合进来,就好像在这里完全阐述了一样。)在TCP会话内,客户端顺序地发送HTTP请求;例如,在客户端接收到对请求N的完整响应之前,不发送请求N+1。结果,IP数据报的IP字节很容易与单个HTTP事务相关,并且SG可针对TCP会话的当前HTTP事务就IP数据报中的所有字节收费。
利用HTTP 1.1,TCP会话可传输多个HTTP请求,并且客户端可能有多个未了结的HTTP请求;例如可在客户端接收到针对请求N的所有数据之前向服务器发送请求N+1、N+2、N+3。结果,单个IP数据报可能包含针对多个HTTP事务的请求数据或响应数据。将IP头部中的IP总长度字段的值指派给TCP会话的当前HTTP事务的方法不再有效。
在一种方法中,所有IP字节都被指派给数据分组中的第一事务。例如,无线设备使用无线应用协议(WAP)作为应用层协议,其中有效载荷被称为协议数据单元(PDU)。若干个PDU在无线服务网关(WSG)中被连结起来并被转换成HTTP。当WSG为连结的WAP PDU执行计费时,它将所有IP字节都指派给分组中的第一事务。
虽然现有技术方法适于一些目的,但是它存在缺陷。例如,HTTP内容提供者希望其被酬报(或者计费)的量与用户对其内容的访问量成正比。用户通过提供接入点和服务网关的网络服务提供者(例如因特网服务提供者(ISP))来获得对HTTP内容的访问。因此,ISP希望与用户对HTTP内容的使用成正比地对用户或HTTP内容提供者进行计费。现有技术的方法不会跟踪用户对所有HTTP内容的访问,而只跟踪数据分组中的第一HTTP事务。因此,第一事务的HTTP内容提供者被过度酬报(或者过度计费);而数据分组中的第二事务和随后事务的HTTP内容提供者被酬报不足(或者计费不足)。第二事务和随后事务的HTTP内容提供者将会更愿意与提供区分度更高的计费平台的ISP进行交易。内容提供者经常对内容进行区别收费,即使对来自同一服务器的内容也是如此。一些内容可能是免费的,一些可能是按事务而不是按字节收费的,而一些的收费率可能不同于其他的,所有这些内容都在同一TCP连接内。例如,内容提供者可能对铃声浏览按字节收费,但对于每个下载的铃声可能有固定的收费。类似地,文本消息被包括在内容提供者的基本收费中,但照片消息则可能导致额外的收费。
基于以上描述,很清楚需要对经由网络传送的相同数据分组中的多个事务分别记账的技术。具体而言,需要至少部分基于每个HTTP事务所包括的字节数目来将IP字节分摊到单个TCP数据报中的多个HTTP事务中的每一个的技术。
发明内容
根据本发明第一方面,提供了一种用于对利用传输控制协议(TCP)经由网络传送的相同数据分组中的多个事务分别记账的方法,包括以下步骤:
在服务网关处接收包括传输控制协议(TCP)有效载荷数据的因特网协议(IP)数据分组;
解析所述传输控制协议(TCP)有效载荷以确定指示出第一事务和第二事务之间的边界上的字节位置的边界数据,所述边界数据定义了与所述第一事务相关联的第一超文本传送协议(HTTP)事务和与所述第二事务相关联的第二超文本传送协议(HTTP)事务,所述第一和第二超文本传送协议(HTTP)事务涉及服务器与请求信息的客户端通信;
基于所述边界数据来确定指示出所述传输控制协议(TCP)有效载荷中与所述第一事务相关联的字节的数目的第一字节计数;
基于所述边界数据来确定指示出所述传输控制协议(TCP)有效载荷中与所述第二事务相关联的字节的数目的第二字节计数;
确定所述第一事务和所述第二事务的完成;
至少部分基于所述第一字节计数来确定所述第一事务的第一记账数据;以及
至少部分基于所述第二字节计数来确定所述第二事务的第二记账数据。
根据本发明第二方面,提供了一种用于对利用传输控制协议(TCP)经由网络传送的相同数据分组中的多个事务分别记账的设备,包括:
用于接收包括传输控制协议(TCP)有效载荷数据的因特网协议(IP)数据分组的装置;
用于解析所述传输控制协议(TCP)有效载荷以确定指示出第一事务和第二事务之间的边界上的字节位置的边界数据的装置,所述边界数据定义了与所述第一事务相关联的第一超文本传送协议(HTTP)事务和与所述第二事务相关联的第二超文本传送协议(HTTP)事务,所述第一和第二超文本传送协议(HTTP)事务涉及服务器与请求信息的客户端通信;
用于基于所述边界数据来确定指示出所述传输控制协议(TCP)有效载荷中与所述第一事务相关联的字节的数目的第一字节计数的装置;
用于基于所述边界数据来确定指示出所述传输控制协议(TCP)有效载荷中与所述第二事务相关联的字节的数目的第二字节计数的装置;
用于确定所述第一事务和所述第二事务的完成的装置;
用于至少部分基于所述第一字节计数来确定所述第一事务的第一记账数据的装置;以及
用于至少部分基于所述第二字节计数来确定所述第二事务的第二记账数据的装置。
附图说明
在附图中以示例方式而非限制方式图示了本发明,附图中相似的标号指代类似的元件,其中:
图1是根据一个实施例图示出具有被配置为分别跟踪HTTP事务的服务网关的网络的框图;
图2是根据一个实施例图示出经由网络传送的数据分组中的因特网协议(IP)数据报中的两个HTTP事务的框图;
图3是根据一个实施例图示出在TCP会话期间交换的TCP数据分组的序列的时序图;
图4A是根据一个实施例在高级别上图示出用于对TCP会话期间的多个HTTP事务分别记账的方法的流程图;
图4B、4C、4D是根据各种实施例更详细图示出使用TCP序列号来对多个HTTP事务分别记账的图4A的方法的步骤的流程图;
图5是根据一个实施例图示出HTTP事务表数据结构的框图;以及
图6是图示出被配置为可以实现本发明实施例的路由器的计算机系统的框图。
具体实施方式
描述了用于对共享相同的TCP/IP数据报的多个事务分别记账的方法和设备。在以下描述中,出于说明目的,阐述了许多具体细节以帮助全面理解本发明。但是,本领域的技术人员将会明白,没有这些具体细节也能实现本发明。在其他情况下,公知的结构和设备以框图形式示出,以避免不必要地模糊本发明的主题。
本发明的实施例是在通过网络接入服务器获得对内容服务网关的访问的移动无线设备的内容服务网关的上下文中描述的,但本发明并不限于该上下文。在其他上下文中,充当内容服务器的代理的其他服务器使用本发明的技术。这种其他服务器包括WAP 2.0网关,以及用于宽带或拨号网络的代理网关,等等。另外,本发明的实施例是在TCP有效载荷内的HTTP事务的上下文中描述的,但是本发明可包括TCP有效载荷内的其他事务,包括但不限于TCP有效载荷内的实时流传输协议(RTSP)事务。
1.0网络概述
图1是根据一个实施例图示出具有被配置为分别跟踪HTTP事务的服务网关的远程接入网络100的框图。网络100包括接入网络110a、分组交换网络(PSN)110b和网络接入主机124。接入网络110a可以是用于接入PSN的任何网络,包括具有下述一个或多个子网的接入网络,所述一个或多个子网用于利用数字订户线路(DSL)基础设施、电缆或光缆基础设施和无线基础设施来进行拨号接入、宽带接入。末端节点120a、120b(以下统称为末端节点120)连接到接入网络110a。末端节点可以是发起或终止网络通信的任何网络节点。
网络接入主机124包括辅助接入网络110a上的末端节点120与PSN110b上的服务器之间的通信的网络接入服务器125。PSN 110b包括AAA服务器114、计费服务器180、HTTP内容服务器170a、170b、170c、170d(以下统称为HTTP内容服务器170)和内容服务网关(SG)160。用户使用末端节点120a、120b,通过网络接入服务器125来访问PSN 110b上的内容服务器170。网络接入服务器125被配置为将来自末端节点120的数据分组路由通过SG 160。
根据图示实施例,SG 160包括下文中参考图5来更详细描述的HTTP事务表162。
虽然出于说明目的将网络100示为包括特定数目的末端节点120、接入网络110a、网络接入服务器125、服务网关160和服务器114、180、170,但是在其他实施例中,网络100中包括更多或更少这样的组件。
图2是根据一个实施例图示出经由网络传送的数据分组中的因特网协议(IP)数据报中的两个HTTP事务的框图。经由网络100传输的数据分组包括IP数据报230,IP数据报230是封装在一个或多个其他协议(例如第1层、第2层或第2.5层协议)中的第3层协议。IP数据报230包括IP头部232和IP有效载荷238。传输HTTP协议有效载荷的IP有效载荷238包括TCP(第4层)数据分组,该TCP数据分组包括TCP头部242和TCP有效载荷248。IP头部的大小一般是20个字节;TCP头部的大小一般也是20个字节。字节是代表便利的信息单元的二进制数字的集合。在大多数实施例中,字节是八个二进制数字(比特)。
一个或多个HTTP请求或响应被包括在TCP有效载荷248中。在图示实施例中,针对被标记为HTTP事务251a、251b的两个不同HTTP事务的请求或响应被包括在TCP有效载荷248中。针对每个事务的请求或响应被包括在一个IP数据报中。针对同一事务的互补响应或请求被包括在另一个不同的IP数据报中。
图3是根据一个实施例图示出在TCP会话期间交换的TCP数据分组的序列的时序图。在图3中时间向下增长。在特定时刻,TCP数据分组在特定的TCP客户端310(例如为网络接入服务器125a运行的TCP客户端)和特定的TCP服务器(例如用于HTTP内容服务器170a的TCP服务器)之间交换。虽然出于说明目的示出了特定数目的TCP数据分组,但是在其他实施例中在TCP客户端310和TCP服务器320交换更多或更少的TCP数据分组。
用于单个会话的所有TCP数据分组都在TCP客户端主机上的TCP客户端进程和TCP服务器主机上的TCP服务器进程之间,如TCP头部242中的源端口号和目的地端口号以及IP头部232中的源IP地址和目的地IP地址分别指示的。任何数据分组都可以基于TCP和IP头部中的源和接收者端口和IP地址来被识别为TCP会话的成员。
TCP会话开始于从客户端310发送到服务器320的TCP SYN数据分组331。TCP SYN数据分组在TCP头部242的SYN标志字段中具有设置值,并且没有TCP有效载荷。TCP SYN数据分组中的源和目的地端口和IP地址唯一地限定TCP会话。为了提供信息以确保客户端发送的所有数据分组在会话期间都被服务器接收,TCP SYN数据分组在TCP头部242中的SEQ#字段中包括任意的客户端初始序列号。
TCP服务器利用TCP SYN/ACK数据分组332对来自客户端的TCPSYN数据分组作出响应。TCP SYN/ACK数据分组在SYN标志字段中具有设置值,并且在TCP头部242的ACK(确认)标志字段中具有设置值,并且不具有TCP有效载荷。SYN标志消耗不与TCP有效载荷的大小相关联的单个序列号。为了提供信息来确保服务器发送的所有数据分组在会话期间都被客户端接收,TCP SYN/ACK数据分组332在TCP头部242的SEQ#字段中包括任意的服务器初始序列号。服务器还通过在TCPSYN/ACK数据分组的TCP头部242的ACK#字段中包括客户端初始序列号的值来确认接收到来自客户端的TCP SYN消息。
TCP客户端利用TCP ACK数据分组333对来自服务器的TCPSYN/ACK数据分组作出响应。TCP ACK数据分组333在TCP头部242的ACK标志字段中具有设置值,在SEQ#字段中具有客户端序列号的下一个值,并且一般不具有TCP有效载荷。客户端通过在TCP ACK数据分组的TCP头部242中的ACK#字段中包括服务器序列号的下一个值来确认接收到来自服务器的TCP SYN/ACK消息。此时,客户端和服务器都已经交换了支持TCP会话的信息,包括每个进程将使用的序列号。
TCP客户端通过利用在先前三个分组的交换中达成一致的序列号向服务器发送TCP数据分组334,来发起HTTP交换。因此,数据分组334在SEQ#字段中包括客户端序列号的值,并且在ACK#字段中包括服务器序列号。在TCP有效载荷230中,包括一个或多个HTTP请求,这些请求指示出将要获得的一个或多个相应资源。请求包括命令、资源标识符和协议/版本,并且可选地包括一些额外的字段,之后是回车(CR)换行(LF)字符模式。资源一般是用本领域中公知的统一资源标识符(URI)或统一资源定位符(URL)命名惯例来标识的。TCP有效载荷230具有由一个或多个请求的大小所决定的字节数目。
TCP服务器通过向客户端发送TCP数据分组335来作出响应,该TCP数据分组335确认在请求分组334中接收到的所有字节,并且至少包括所请求的第一资源的一部分,最多可包括所请求的所有资源。因此,数据分组335在SEQ#字段中包括服务器序列号的值,并且通过在ACK#字段中的与客户端序列号与接收到的TCP有效载荷的大小的相加值相等的值来确认接收到的TCP有效载荷。因此,序列号被递增,递增量等于具有非零有效载荷的数据分组中的有效载荷大小。在TCP数据分组335的TCP有效载荷230中,至少包括了响应的一部分。第一响应的全部都在设置第二响应的任何部分之前被TCP服务器320发送。
TCP客户端通过向服务器发送另一TCP数据分组336来作出响应,该TCP数据分组336确认在响应分组35中接收到的所有字节,并且在TCP有效载荷230中包括零个、一个或多个额外的HTTP请求。通过将序列号递增客户端在先前有效载荷中发送的字节数目来指示另一个请求(从而指示另一个事务)。因此,如果客户端初始序列号是1000,并且第一请求引起了99字节的TCP有效载荷,则第一请求将具有序列号1001,并且对于第二请求,SEQ#字段中的值将会是1100。数据分组336在SEQ#字段中包括被递增了所发送有效载荷的大小的序列号,并且通过ACK#字段中的与服务器初始序列号和从服务器接收的TCP有效载荷的大小的相加值相等的值来确认接收到的TCP有效载荷。因此,如果服务器初始序列号为5000,并且第一响应引起了900字节的TCP有效载荷,则第一响应的SEQ#字段内容将会是5001,并且第二TCP请求数据分组的ACK#字段中的值将会是5901。
在图示实施例中,TCP数据分组336包括两个HTTP请求,它们作为HTTP第一事务请求251a和HTTP第二事务请求251b出现在TCP有效载荷248中。
具有HTTP响应的至少一部分的TCP数据分组337是TCP客户端服务器发送的下一个数据分组,它们分别将SEQ#字段和ACK#字段递增了所发送和接收的有效载荷的大小。在图示实施例中,TCP数据分组337包括两个HTTP响应,它们作为HTTP第一事务响应251a和HTTP第二事务响应251b出现在TCP有效载荷248中。
TCP客户端310通过发送如上所述的TCP ACK数据分组333那样的TCP ACK数据分组来确认接收到的响应,而不作出新的请求。在图示实施例中,TCP ACK数据分组338是响应于TCP数据分组337而发送的。TCP数据分组337中的ACK#字段中的值确认从服务器接收的字节的数目。
省略号340指示在TCP会话期间在TCP客户端310和服务器320之间交换的其他TCP分组。
当TCP客户端310和TCP服务器320都发送TCP FIN分组,并且每个TCP参与者都发送TCP ACK分组以确认接收到TCP FIN分组时,会话显式地结束。在图示实施例中,TCP客户端310发送TCP FIN数据分组349。TCP FIN数据分组在TCP头部242中的FIN标志字段中具有设置值。当从在此客户端和此服务器之间发送TCP分组起已经经过了多于空闲阈值的时间时,TCP会话可以隐式地结束。
2.0用于分别记账的方法
图4A是根据一个实施例在高级别上图示出用于对TCP会话期间的多个HTTP事务分别记账的方法400的流程图。在图示实施例中,该方法在服务网关中实现,该服务网关被部署为接收在HTTP客户端(例如网络接入服务器125)与HTTP内容服务器(例如内容服务器170a)之间交换的所有数据分组。在其他实施例中,服务网关被部署为接收在不同的客户端和服务器(例如RTSP客户端和服务器)之间交换的所有数据分组。虽然在图4A和随后的流程图中出于说明目的以特定顺序示出了步骤,但是在其他实施例中,可以以不同的顺序或者在时间上重叠地执行步骤,或者可以省略一个或多个步骤,或者可以进行某种变化的组合。
根据方法400,TCP有效载荷被解析以确定多个事务之间的至少一个边界,并且与事务相关联的字节至少部分取决于该边界。在参考图4B、4C、4D和5来更详细描述的一些实施例中,HTTP事务之间的边界是作为针对客户端到服务器方向和服务器到客户端方向的分开的TCP序列号来存储的。
在步骤402中,在服务网关处接收具有TCP有效载荷的IP数据报。例如,在SG 160处接收图3所示的任何TCP数据分组。
在步骤404中,确定TCP有效载荷是否包括数据。如果不包括,则控制传递到步骤420。例如,如果IP数据报持有TCP SYN或ACK或FIN数据分组,则控制传递到步骤420。
在步骤420中,将IP数据报中事务之间的IP和TCP头部字节与TCP会话内的事务关联起来。TCP会话由在步骤402中接收到的IP数据报的IP头部中的一对IP地址以及TCP头部中的一对端口号来唯一地标识。例如,会话发起字节与接下来的第一事务相关联;会话终止字节与会话终止之前的最后的事务相关联;并且响应确认字节与被确认的事务相关联。然后控制从步骤420传递到步骤494,如下所述,以将IP数据报转发到IP目的地。利用TCP序列号和事务表来将头部字节与事务关联起来的步骤420的实施例在下文中将参考图4B和HTTP事务来更详细描述。
如果在步骤404中确定TCP有效载荷包括数据,则控制传递到步骤410。在步骤410中,将具有数据的IP数据报中的IP和TCP头部字节与TCP会话内的一个或多个事务关联起来。例如,在一些实施例中,IP数据报中的所有头部字节都与TCP有效载荷中的多个HTTP事务中的第一HTTP事务关联起来。在一些实施例中,IP数据报中的所有头部字节都与TCP有效载荷中的多个HTTP事务中的最后的HTTP事务关联起来。在一些实施例中,IP数据报中的所有头部字节在TCP有效载荷中的多个HTTP事务之间被平均划分。在一些实施例中,省略步骤410而支持步骤492(在下文更详细描述),以将头部字节成比例地与IP数据报中的多个HTTP事务关联起来。使用TCP序列号和事务表来将头部字节与事务关联起来的步骤410的实施例在下文中将参考图4C针对HTTP事务来更详细描述。
在步骤440中,解析TCP有效载荷以找出事务之间的下一边界。例如,对于HTTP事务,可以利用RFC 2616中阐述的规则中的任何一种或全部来执行解析。例如,HTTP请求边界是基于请求行结束处的CRLF模式的。或者,HTTP响应边界是基于新的响应状态行起始处的“HTTP”模式的。边界出现在一个事务的最后一个字节和下一事务的第一字节之间。CRLF可被认为是第一事务的最后一个字节或者下一事务的第一个字节。可以以任何方式来指示边界的位置。例如,在一些实施例中,利用出现在边界之前的TCP有效载荷字节的百分比或分数来指示边界。在一些实施例中,通过第一事务中的最后一个字节的号码来指示边界;在一些实施例中,通过下一事务的第一字节的号码来指示边界。在下文中出于说明目的,事务中的最后一个字节的号码指示出HTTP事务的边界。在一些实施例中,字节是从有效载荷起始处开始编号的;在一些实施例中,字节是从TCP头部的序列号开始编号的,从而在整个TCP会话期间的每个方向上字节位置都是唯一的。
在步骤460中,边界的位置被记录在持久性存储器中。在一些实施例中,边界的位置被保存在易失性存储器中而没有被存储在持久性存储器上,并且步骤460被省略。
在步骤480中,基于边界来将TCP有效载荷字节与事务关联起来。例如,HTTP边界之间的TCP有效载荷中的所有字节都与一个HTTP事务相关联。可以以任何方式来指示TCP会话内的事务。在图示实施例中,HTTP事务通过从1(用于会话内的第一HTTP事务)开始的序数来编号。如上所述,会话由一对IP地址和一对TCP端口号来唯一地指示。因此,与TCP数据分组334中的第一HTTP请求相关联的字节与由端口80以及网络服务器主机124的IP地址和服务器170a的主机的IP地址标识的TCP会话中的第一HTTP事务相关联。
使用TCP序列号和事务表来将TCP有效载荷字节与事务关联起来的步骤440、460、480的实施例将在下文中参考图4D针对HTTP事务来更详细描述。
在步骤490中,确定是否达到了TCP有效载荷的结尾。如果否,则控制传递回步骤440,以找出TCP有效载荷中的下一边界。如果找到了另一边界,则控制传递回步骤460。如果在TCP有效载荷中没有找到其他边界,则控制传递回步骤490,并由该步骤去到步骤492。
在步骤492中,基于边界位置将当前IP数据报的头部字节与一个或多个HTTP事务关联起来。例如,在一些实施例中,头部字节的与各个事务相关联的部分与边界之间针对该事务的有效载荷的部分成比例。在一些实施例中,省略步骤492,并且在步骤410中任意地或者基于事务编号而不是基于由边界决定的事务相对大小来将头部字节与HTTP事务关联起来。
在步骤493中,将IP数据报转发到目的地IP地址。
在496中,确定事务是否完成。SG在充分长的时间中维护事务和字节计数之间的关联,以允许对照正确事务对开放TCP会话上的TCP重传进行计数。当两个方向上的TCP有效载荷都只涉及特定事务之后的事务时,该特定事务完成。如果事务尚未完成,则控制传递回步骤402,以接收针对该事务或TCP会话的下一IP数据报。
在一些实施例中,步骤496包括确定TCP会话是否结束的步骤。例如,确定TCP FIN数据分组(例如数据分组349)是否已经被客户端和服务器两者都接收和确认。如果TCP会话尚未结束,则控制传递回步骤402,以接收针对该TCP会话的下一IP数据报。
当事务或TCP会话结束时,控制传递到步骤498。在步骤498中,基于与已完成的事务相关联的字节计数的计费数据被发送到计费服务器,例如计费服务器180。可以以任何方式从字节计数得出计费数据。例如,在一些实施例中,计费数据是原始的字节计数。在一些实施例中,计费数据是字节计数乘以计费率或者被某些其他因子加权而得到的数据。在计费数据被成功发送之后,事务与字节计数的关联被从存储器中删除。当TCP会话结束时,针对最后一个事务的计费数据被发送,并且最后一个事务与字节计数的关联被从存储器中删除。
控制传递回步骤402以接收另一个IP数据报,从而例如完成其他事务或者开始新的事务或者开始新的TCP会话。
3.0使用TCP序列号的方法
图5是根据一个实施例图示出事务表510的框图。事务表510是用于分别存储字节计数和相同IP数据报中的不同事务之间的关联的数据结构。
在图示实施例中,事务表510包括第一事务记录520a、第一事务记录520b以及由省略号530标记的零个或更多个其他事务记录,在下文中它们被统称为事务记录520。每个事务记录520都包括TCP客户端到服务器方向字段521、TCP服务器到客户端方向字段522、字节计数字段527和相关器字段528。TCP客户端到服务器方向字段521包括起始序列号字段523和结束序列号字段525。TCP服务器到客户端方向字段522包括起始序列号字段524和结束序列号字段526。
起始序列号字段523保存着指示出在客户端到服务器方向上的给定事务中的第一TCP有效载荷字节的数据,该TCP有效载荷字节是从TCP头部中的序列号开始编号的,使得在整个TCP会话中在该方向上字节位置是唯一的。类似地,起始序列号字段524保持着指示出在相反(服务器到客户端)方向上的同一事务中的第一TCP有效载荷字节的数据,该TCP有效载荷字节是从TCP头部中的序列号开始编号的,使得在整个TCP会话中在该方向上字节位置是唯一的。
结束序列号字段525保存着指示出在客户端到服务器方向上的、给定事务中的最后的TCP有效载荷字节的数据,该字节是从TCP头部中的序列号开始编号的。类似地,结束序列号字段526保持着指示出在相反(服务器到客户端)方向上的同一事务中的最后的TCP有效载荷字节的数据,该字节是从TCP头部中的序列号开始编号的。
字节计数字段527保存着指示出与事务相关联的字节的数目的数据,该数据被用于形成计费记录。在一些实施例中,字节计数字段527包括在TCP客户端到服务器方向字段521中包括的客户端->服务器方向的一个字节计数字段和TCP服务器到客户端方向字段522中包括的服务器->客户端方向的第二字节计数字段。为了简化说明,下文中假定存在保存着两个方向上的字节总数的单个字节计数字段。
相关器字段528保存着指示出用于形成计费记录的关于事务的其他信息的数据,例如所递送的资源的URL、内容提供者、该资源的计费率、与TCP客户端相关联的用户以及用户简档信息,例如所付费购买的服务级别。在优选实施例中,相关器528保存着指向另一个表中的存储着关于所述事务的其他信息的记录的指针。
图4B是根据实施例421更详细图示出使用TCP序列号来对多个HTTP事务分别记账的图4A的方法的步骤420的流程图。步骤421是针对诸如SYN、ACK和FIN之类的数据分组的、没有HTTP数据的TCP有效载荷执行的。根据步骤421,用于建立会话的头部字节与TCP会话中的第一HTTP事务相关联;用于确认事务的头部字节与该事务相关联;其他头部字节与TCP会话中的最近的(最后的)事务相关联。步骤421包括步骤422、424、426、428、430、432、434、436。
为了说明下文描述的步骤421以及随后的步骤的操作和结果,假定由数据分组331至338来给出的示例性TCP会话被路由通过SG 160。SG160检查数据分组331到338并且确定用于发送到计费服务器180的计费数据。出于说明目的,还假定客户端任意初始序列号为1,并且服务器任意初始序列号为100。还假定数据分组334包括一个37字节的HTTP请求;数据分组335包括一个42字节的HTTP响应;数据分组336包括两个分别为15字节和12字节的HTTP请求;数据分组337包括两个分别为80字节和70字节的HTTP响应。这些相关的示例值总结在表1中。
表1 TCP会话中的数据分组的示例性属性
分组 | 类型 | 方向 | SEQ# | ACK# | 事务 | 大小 |
331 | SYN | C→ | 1 | 0 | 0 | -- |
332 | SYN/ACK | ←S | 100 | 1 | 0 | -- |
333 | ACK | C→ | 2 | 101 | 0 | -- |
334 | 数据请求 | C→ | 2 | 101 | 1 | 37 |
335 | 数据响应 | ←S | 101 | 38 | 1 | 42 |
336 | 数据请求 | C→ | 39 | 142 | 2 | 15,12 |
337 | 数据响应 | ←S | 143 | 65 | 2 | 80,70 |
338 | ACK | C→ | 66 | 292 | 0 | -- |
在这八个数据分组中的示例性的八个IP数据报中发送的IP字节的总数是8*40+37+42+15+12+80+70=576字节,这576个字节将被分摊在由分组334中的一个请求和分组336中的两个请求启动的三个HTTP事务中。
假定在步骤402期间在接收到的IP数据报中标识了唯一的TCP会话,并且没有针对该TCP会话的HTTP事务表510。因此,为该唯一TCP会话生成没有记录的HTTP事务表510。确定:在针对此TCP会话的这个第一IP数据报中,客户端具有标记为IPclient的源IP地址的IP地址(例如网络接入服务器主机124),服务器具有标记为IPserver的目的地IP地址(例如服务器170a的主机)。然后通过是IPclient值还是IPserver值占据IP数据报的源IP地址字段来确定任何数据分组的方向。
在步骤422中,确定在TCP头部中SYN标记是否被设置。如果是,则控制流向步骤424,以将数据存储在第一HTTP事务记录中。
在步骤424中,TCP头部的TCP序列号被存储在第一HTTP事务记录520a的起始序列号字段(例如523)中,并且该值加上1(因为SYN使序列号提高)被存储在第一HTTP事务记录520a的针对该方向的结束序列号字段(例如525)中。如果第一HTTP事务记录尚不存在,则在步骤424中生成该记录,其中空值被用于相反方向,并且字节计数为零。IP头部(20字节)和TCP头部(20字节)以及TCP有效载荷(0字节)的大小被添加到第一HTTP事务记录520a的字节计数字段527。因此40字节被添加到字节计数字段527的内容。然后控制传递到步骤494,以将IP数据报转发到其目的地IP地址。
如果在步骤422中确定在TCP头部中未设置SYN标志,则控制传递到步骤426。在步骤426中,确定在TCP头部中是否设置了ACK标志。如果是,则控制流向步骤430和之后的步骤(在下文描述),以将该IP数据报的头部字节添加到与ACK相关联的HTTP事务(如果存在的话)。如果否,则控制传递到步骤428。例如,如果在TCP头部中设置了TCPFIN标志,则控制传递到步骤428。
在步骤428中,IP头部和TCP头部的字节被添加到HTTP事务表510中的最后的事务记录520的字节计数字段527。然后控制传递到步骤594,以将数据分组转发到目的地IP地址。
在步骤430中,使第一HTTP事务记录成为当前事务记录。控制传递到步骤432。在步骤432中,确定ACK值减1是否大于当前事务的相反方向字段中的结束序列号字段中的值。如果是,则ACK并不是在确认当前事务,而是在确认后一个事务。控制传递到步骤434,以使下一HTTP事务记录成为当前的事务记录。控制传递回步骤432,以确定ACK数据报是否在确认当前事务记录的HTTP事务。
如果在步骤432中确定ACK值减1并不大于当前事务记录的相反方向字段中的结束序列号字段中的值,则ACK数据报正在确认当前事务记录的HTTP事务。控制随后传递到步骤436。
在其他实施例中,将ACK值与不同顺序(例如从表中最后一个HTTP记录开始并向第一个前进)的针对相反方向的序列范围相比较。
在步骤436中,IP头部和TCP头部的字节被添加到HTTP事务表510中的当前事务记录520的字节计数字段527。然后控制传递到步骤494,以将数据分组转发到目的地IP地址。
步骤421针对示例性的八个数据分组中的前几个的结果在表2A中示出。在表2A中,从客户端起的方向由符号“从C”指示;从服务器起的方向由符号“从S”指示。这些结果按如下方式进行积累。在步骤402中接收数据分组331,并且控制通过步骤404而传递到步骤421,因为它不具有HTTP有效载荷。在步骤422中,确定SYN标志被设置,因此控制传递到步骤424。在步骤424中,TCP头部SEQ字段中的值“1”被存储在起始序列号字段523中,并且该值加1被存储在第一HTTP事务记录520a的针对客户端到服务器方向的结束序列号字段525中。IP数据报的大小(40字节)被添加到目前为空的字节计数字段527。控制传递到步骤494以转发IP数据报。数据分组332在步骤402中被接收并通过步骤404被导向步骤421,因为它不具有HTTP有效载荷。在步骤422中,确定SYN标志被设置,因此控制传递到步骤424。在步骤424中,TCP头部SEQ#字段值“100”被存储在起始序列号字段523中,并且该量加1被存储在第一HTTP事务记录520a的针对服务器到客户端方向的结束序列号字段525中。IP数据报的大小(40字节)被添加到目前保存着值40的字节计数字段527。控制传递到步骤494以转发IP数据报。数据分组333在步骤402中被接收并通过步骤404被导向步骤421,因为它不具有HTTP有效载荷。在步骤422中,确定SYN标志未被设置,因此控制传递到步骤426。在步骤426中,确定ACK标志被设置,因此控制传递到步骤430以使记录#1成为当前事务记录。数据分组333是来自客户端方向的,并且具有ACK值“101”。在步骤432中,将ACK值减1(100)与当前事务记录中的针对相反方向(即从服务器)的结束序列号字段中的值相比较。该值为“101”。因为100不大于101,所以控制传递到步骤436。在步骤436中,IP数据报的大小(40字节)被添加到目前保存着值80的字节计数字段527。控制传递到步骤494以转发IP数据报。
表2A.在前三个示例性IP数据报之后HTTP事务表的内容
在一些实施例中,生成另一数据结构的记录来描述第一HTTP事务。此时,如本领域中公知的,客户端和服务器IP地址是已知的,并且基于用户利用客户端主机登录到网络110b上时与AAA服务器114的数据分组交换可以得知客户端的用户的简档。出于说明目的假定所知的关于事务的信息被存储在另一数据结构中,该数据结构在这里被称为事务描述数据结构。还假定指向事务描述数据结构中针对当前事务的该信息的指针由符号“指针A”来标记。指针A的值被存储在第一事务记录的相关器字段528中。
图4C是根据实施例411更详细图示出使用TCP序列号来对多个HTTP事务分别记账的图4A的方法的步骤410的流程图。步骤411是针对具有HTTP数据的TCP有效载荷(例如具有HTTP请求和响应的有效载荷)来执行的。根据步骤411,具有HTTP数据的头部字节与TCP有效载荷中的第一HTTP事务相关联。步骤411包括步骤412、413、414、416、417、418。
在步骤412中,使HTTP事务表510中的第一HTTP事务记录520a成为当前事务记录。在步骤413中,确定TCP头部的SEQ#字段中的值是否落在当前事务记录的针对同一方向的序列号范围之内。如果是,则控制传递到步骤414。在步骤414中,头部字节被添加到当前事务记录的字节计数字段。然后控制传递到步骤440和其后的步骤,以确定TCP有效载荷中HTTP事务之间的边界(如果存在的话)。
如果在步骤413中确定TCP头部的SEQ#字段中的值没有落在当前事务记录的针对相同方向的序列号范围内,则控制传递到步骤416。在步骤416中,确定在事务表510中是否存在另一个事务记录520。如果是,则控制传递到步骤417。在步骤417中,使事务表510中的下一事务记录520成为当前事务记录,并且控制传递回步骤413。
步骤413、416、417搜索表510以找出具有下述序列号范围的事务,所述序列号范围包含TCP头部中的SEQ#的值。如果找到这样的记录,则控制传递到步骤414,以将头部字节添加到该记录的字节计数。在其他实施例中,将SEQ#值与不同顺序(例如从表中最后一个HTTP记录开始并且向第一个前进)的针对相同方向的序列范围相比较。如果没有找到这样的记录,则对于图示实施例,如下所述,新的事务记录520在步骤418中被添加到事务表。
如果在步骤416中确定在事务表510中没有其他事务记录520,则控制传递到步骤418。这发生在TCP头部的SEQ#字段中的值没有落在表510中的任何记录520的序列号范围内的情况下。在步骤418中,新的事务记录520被添加到HTTP事务表510。TCP头部中的SEQ#字段的值被存储在新的事务记录520的起始序列号字段(例如523)和结束序列号字段(例如535)中。针对相反方向的起始和结束序列号字段的值是通过将前一事务记录的针对相反方向的结束序列号字段中的值加上1来确定的。头部字节被添加到字节计数字段527。然后控制传递到步骤440和其后的步骤,以确定TCP有效载荷中的HTTP事务之间的边界(如果存在的话)。
步骤411针对示例性的八个数据分组中的接下来的数据分组的结果在表2B中示出。这些结果按如下方式进行积累。数据分组334在步骤402中被接收,并且控制通过步骤404被传递到步骤411,因为它具有HTTP有效载荷。数据分组334具有SEQ#字段值2并且处于从客户端起的方向中。在步骤412中,使第一HTTP事务记录520a成为当前事务记录。在步骤413中,确定该值“2”处于第一事务记录的从客户端起的方向上的序列号范围内,该范围是“1至2”。因此,控制传递到步骤414。在步骤414中,40个头部字节被添加到已经存在于针对当前事务520的字节计数字段527中的值。然后控制传递到步骤440。
表2B.在处理第四示例性IP数据报的头部之后HTTP事务表的内容
图4D是根据一个实施例更详细图示出使用TCP序列号来对多个HTTP事务分别记账的方法400的步骤440、460、480的流程图。在图4D中,步骤441是步骤440的实施例;步骤461是步骤460的实施例;步骤481是步骤480的实施例。步骤441包括步骤442;步骤461包括步骤462、464;步骤481包括步骤482、484、485。
在步骤442中,确定在TCP有效载荷结束之前是否存在HTTP事务边界。可以使用任何方法来确定边界,如上所述。
如果在TCP有效载荷结束之前不存在HTTP事务边界,则控制传递到步骤462以将TCP有效载荷的其余部分作为当前事务的一部分来对待。在步骤462中,到TCP有效载荷结束为止的字节计数减去1被添加到同一方向上当前事务的结束序列号字段。在特定实施例中,将TCP SEQ#+max{0,TCP有效载荷-1}与结束序列号字段中的当前值相比较。如果TCPSEQ#+TCP有效载荷大于结束序列号字段中的当前值,则它变成新的结束序列号。这可以处理重传、乱序分组和其他现象。注意,至少在一些实施例中,序列号空间可以卷绕,并且可由算法来处理。结束序列号字段中的值按照序列号对当前事务的最后一个字节进行标记,该字节作为事务的边界。控制传递到步骤482。在步骤482中,到TCP有效载荷结束为止的字节计数被添加到当前事务的字节计数。然后控制传递到步骤490,该步骤确定已经达到TCP有效载荷的结束,于是控制传递到步骤492和494,如上所述。步骤492基于在步骤460中确定的边界来将头部字节与HTTP事务关联起来,并且该步骤在图示实施例中被省略,图示实施例将所有头部字节都与TCP有效载荷中的第一事务关联起来。步骤494将IP数据报转发到目的地IP地址。
在处理数据分组334、335之后,步骤462、482针对没有HTTP事务边界的IP数据报的结果在表2C中示出。这些结果如下积累。在步骤441中确定在数据分组334的TCP有效载荷中没有找到HTTP事务边界。因此控制传递到步骤462。在步骤462中,到TCP有效载荷结束为止的字节计数减去1被添加到当前事务记录的相同方向上的结束序列号字段。如以上针对步骤411所述,当前事务记录是第一事务记录520a。TCP有效载荷中的到TCP有效载荷结束为止的字节计数对于数据分组334为37字节,并且方向为从客户端起,如表1所示。因此37-1被添加到针对客户端到服务器方向的结束序列号字段(值2)。在步骤482中,37被添加到字节计数字段。
表2C.在处理五个示例性IP数据报之后HTTP事务表的内容
类似地,数据分组335在步骤402中被接收,并且控制通过步骤404被导向步骤411,因为它具有HTTP有效载荷。数据分组335具有SEQ#字段值101,并且处于从服务器起的方向上。在步骤411期间,以与以上针对数据分组334来描述的方式相似的方式,40被添加到第一事务的字节计数。TCP有效载荷中到TCP有效载荷结束为止的字节计数对于数据分组335为42字节。因此42-1被添加到针对服务器到客户端方向的结束序列号字段(值101)。在步骤482中,42被添加到字节计数字段。
第一事务的更多细节(例如被请求资源的URL)基于HTTP数据中的请求而被确定,并且被添加到由指针A指向的事务描述数据结构。
如果在步骤442中确定在TCP有效载荷结束之前存在HTTP事务边界,则控制传递到步骤464。在步骤464中,0与到边界为止的字节计数减去1中的最大者被添加到同一方向上当前事务的结束序列号字段。这按照序列号标记了当前事务的最后一个字节,该字节作为事务的边界。控制传递到步骤484。在步骤484中,到边界为止的字节计数被添加到当前事务的字节计数。
然后控制传递到步骤485,以递增事务记录。如果在当前事务记录之后没有事务记录520,则新的事务记录被添加到事务表510。在步骤485中,向前一事务记录的结束序列号字段的值加1,并且递增后的值被存储在当前事务记录的起始序列号字段中和结束序列号字段中。控制传递到步骤490。在步骤490中,确定是否达到TCP有效载荷的结束;如果没有,则控制传递回步骤441以找出另一个边界(如果存在的话)。
在分别处理具有HTTP事务边界的数据分组336、337之后,步骤411、441、461、481的更多工作在表2D和表2E中示出。
表2D中的结果如下积累。数据分组336在步骤402中被接收,并且控制通过步骤404被导向步骤411,因为它具有HTTP有效载荷。数据分组336具有SEQ#字段值39并且处于从客户端起的方向上。在步骤412中,使第一HTTP事务记录520a成为当前事务记录。在步骤413中,确定该SEQ#字段值“39”不在第一事务记录的从客户端起的方向上的序列号范围中,该范围是“1至38”。因此,控制传递到步骤416。在步骤416中,确定在表510中没有其他事务记录520,因此控制传递到步骤418。在步骤418中,第二事务记录520b被添加到事务表510,并且TCP头部的SEQ#字段中的值“39”被存储在针对客户端到服务器方向的起始序列号字段和结束序列号字段中。通过将第一事务记录的针对相反方向的结束序列号字段中的值142加上1来获得相反方向的起始序列号字段和结束序列号字段的值。此外,在步骤418中,40个头部字节被添加到第二HTTP事务记录520b的字节计数字段527。另一个记录也被添加到事务描述数据结构并且被指针B所指向。指针B被存储在第二数据记录的相关器字段528中。然后控制传递到步骤440的实施例441。
表2D.在处理六个示例性IP数据报之后HTTP事务表的内容
在步骤441中,在步骤442中确定在有效载荷结束之前存在HTTP事务边界。如表1中所示,数据分组336在TCP有效载荷的前15个字节中包括一个请求,并且在TCP有效载荷的后12个字节中包括第二请求。控制传递到步骤464。在步骤464中,到边界为止的15个字节减去1被添加到第二HTTP事务记录中的结束序列号字段中的值“39”,以给出新值“53”。在步骤484中,到边界为止的15字节被添加到字节计数字段。然后控制传递到步骤485,以递增事务记录以用于下一HTTP事务。由于此时在HTTP事务表510中没有第三HTTP事务记录,因此第三HTTP事务记录520在步骤485期间被添加到表中并且被填充以空值。在步骤485中,“1”被加到前一事务的结束序列号字段中的值(53=39+15-1),并且被存储在第三事务的起始序列号字段中和结束序列号字段中。然后控制传递到步骤490,并且回到步骤441。
回到步骤441,确定在TCP有效载荷中没有其它HTTP事务边界。因此,控制传递到步骤462和步骤482,在步骤462中到TCP有效载荷结束为止的12个字节减去1被添加到第三事务的结束序列号字段,在步骤482中12字节被添加到字节计数字段。因此生成了表2D中显示的值。
表2E中的结果如下积累。数据分组337在步骤402中被接收,并且通过步骤404被导向步骤411,因为它具有HTTP有效载荷。数据分组337具有SEQ#字段值143并且处在从服务器起的方向上。在步骤412中,使第一HTTP事务记录520a成为当前事务记录。在步骤413中,确定该值“143”不在第一事务记录的从服务器起的方向上的序列号范围中,该范围是“100至142”。因此,控制传递到步骤416和417以递增到下一记录520。在步骤413中,确定该值“143”在第二事务记录的从服务器起的方向上的序列号范围中,该范围是“143至143”。控制传递到步骤414以将头部字节添加到字节计数字段。因此40个字节被添加到第二事务。然后控制传递到步骤440的实施例441。
表2E.在处理七个示例性IP数据报之后HTTP事务表的内容
在步骤441中,确定在有效载荷结束之前存在HTTP事务边界。如表1中所示,数据分组337在TCP有效载荷的前80个字节中包括一个响应,并且在TCP有效载荷的后70个字节中包括第二响应。控制传递到步骤464。在步骤464中,到边界为止的80个字节减去1被添加到第二HTTP事务记录中的结束序列号字段中的值“143”,以给出新值“222”。在步骤484中,到边界为止的80字节被添加到字节计数字段。然后控制传递到步骤485,以递增事务记录以用于下一HTTP事务。在步骤485中,“1”被加到前一事务的结束序列号字段中的值(222),并且被存储在第三事务的起始序列号字段中和结束序列号字段中。然后控制传递到步骤490,并且回到步骤441。
回到步骤441,确定在TCP有效载荷中没有其它HTTP事务边界。因此,控制传递到步骤462和步骤482,在步骤462中到TCP有效载荷结束为止的70个字节减去1被添加到第三事务的结束序列号字段,在步骤482中70字节被添加到第三事务的字节计数字段。因此生成了表2E中显示的值。
最后的ACK数据分组338中的40个字节随后根据步骤421被添加。数据分组338在步骤402中被接收并且通过步骤404被导向步骤421,因为它不具有HTTP有效载荷。在步骤422中,确定SYN标志未被设置,因此控制传递到步骤426。在步骤426中,确定ACK标志被设置,因此控制传递到步骤430以使记录#1成为当前事务记录。数据分组338是来自客户端方向的,并且具有ACK值“292”。在步骤434中,将ACK值减1(291)与当前事务记录中的针对相反方向(即从服务器起)的结束序列号字段中的值相比较。在第一记录中,该值为“38”。因为291大于38,所以控制传递到步骤432,以递增事务记录号。在第三事务中,针对相反方向的结束序列号字段的值为“292”。因为291不大于292,所以控制传递到步骤436。在步骤436中,IP数据报的大小(40字节)被添加到第三事务的目前保存着值82的字节计数字段527,使第三事务的字节计数变为122。控制传递到步骤494以转发IP数据报。在TCP会话的前八个IP数据报之后的事务表的状态在表3中示出。
表3.在处理八个示例性IP数据报之后HTTP事务表的内容
如表3所示,八个示例性IP数据报中的578个字节至少部分基于相同IP数据报之内HTTP事务的边界而分布在三个事务中。在现有技术方法中,这里与第三事务相关联的122个字节将都与第二事务相关联;没有字节与第三事务相关联。
在这里注意,在数据分组338中的ACK消息之后,第三事务可能仍然开放。例如,另一数据分组可被从服务器320发送,其中具有针对第三事务的额外的响应数据。
在图4A所示的步骤498期间,在事务完成之后,基于字节计数的计费数据被发送到计费服务器并且关联被删除。如上所述,服务网关将在充分长的时间中维护该关联,例如HTTP事务表510中的HTTP事务记录520,以允许对照正确的HTTP事务来对开放TCP会话上的TCP重传进行计数。在使用序列号范围来分离HTTP事务的实施例中,当两个方向上的TCP SEQ#字段中的值都比结束序列号要大TCP窗口大小时,可以认为事务完成。出于说明目的,假定客户端到服务器方向上的TCP窗口大小是16000个字节,服务器到客户端方向上的TCP窗口大小是32000。于是当针对客户端到服务器方向的SEQ#字段中的值大于16038并且针对服务器到客户端方向的SEQ#字段中的值大于32142时,第一HTTP事务的HTTP事务记录520a可被去除。
利用上文描述的方法400和结构510,IP数据报字节计数被分布在不同的HTTP事务中。预期IP数据报计数可类似地分布在TCP数据分组中携带的其他事务中。例如,在一些实施例中,IP数据报计数被分布在RTSP事务中。RTSP事务在RFC 2326中定义,特此通过引用将该RFC2326的全部内容结合进来,就好像在这里完全阐述了一样。在一些实施例中,音频流的计费率不同于视频流。在一些实施例中,计费基于起始和停止时的时钟时间,其中对于PAUSE操作的开始到停止有一个计费率,而对于PLAY操作的开始到停止有另一个不同的计费率。在这样的实施例中,HTTP事务表510被替换成用于RTSP事务的类似表格,并且与方法400类似的方法将头部和有效载荷字节与RTSP事务而不是HTTP事务关联起来。
4.0实现机构-硬件概述
图6是示出实现本发明的一个实施例的计算机系统600的框图。优选实施例是利用运行在诸如路由器设备之类的网络元件上的一个或多个计算机程序来实现的。因此,在此实施例中,计算机系统600是路由器。
计算机系统600包括用于在计算机系统600的其他内部和外部组件之间传递信息的通信机构,例如总线610。信息被表示为可测量现象的物理信号,所述可测量现象通常是电压,但在其他实施例中包括诸如磁、电磁、压力、化学、分子原子和量子交互之类的现象。例如,北磁场和南磁场或者零电压和非零电压代表二进制数字(比特)的两个状态(0,1)。二进制数字的序列构成用于表示数字或字符代码的数字数据。总线610包括许多并行的信息导体,以便信息在耦合到总线610的设备之间被迅速传送。用于处理信息的一个或多个处理器602与总线610相耦合。处理器602对信息执行一组操作。该组操作包括从总线610接收信息或将信息置于总线610上。该组操作一般还包括比较两个或更多个信息单元、移动信息单元的位置以及例如通过加法或乘法来组合两个或更多个信息单元。将由处理器602执行的操作序列构成计算机指令。
计算机系统600还包括耦合到总线610的存储器604。诸如随机访问存储器(RAM)或其他动态存储设备之类的存储器604存储包括计算机指令在内的信息。动态存储器允许存储在其中的信息被计算机系统600改变。RAM允许存储在被称为存储器地址的位置处的信息单元以独立于相邻地址处的信息的方式被存储和取得。存储器604还被处理器602用来在计算机指令执行期间存储临时值。计算机系统600还包括耦合到总线610的只读存储器(ROM)606或其他静态存储设备,其用于存储不被计算机系统600改变的静态信息,包括指令。同样耦合到总线610的是非易失性(持续性)存储设备608,例如磁盘或光盘,其用于存储即使在计算机系统600被关断或者由于其他原因掉电时也会持续下来的信息,包括指令。
术语计算机可读介质在这里用来指任何参与向处理器602提供包括用于执行的指令在内的信息的介质。这种介质可采取许多形式,包括但不限于非易失性介质、易失性介质和传输介质。非易失性介质例如包括光盘或磁盘,例如存储设备608。易失性介质例如包括动态存储器604。传输介质例如包括同轴电缆、铜线、光缆和在无需导线或线缆的情况下通过空间传播的波,例如声波和电磁波,包括无线电波、光波和红外波。经由传输介质传输的信号在这里被称为载波。
计算机可读介质的常见形式例如包括软盘、柔性盘、硬盘、磁带或任何其他磁介质,致密盘ROM(CD-ROM)、数字视频盘(DVD)或任何其他光介质,穿孔卡、纸带、或任何其他具有孔图案的物理介质,RAM、可编程ROM(PROM)、可擦除PROM(EPROM)、FLASH-EPROM、任何其他存储器芯片或卡盘、载波或者计算机可以读取的任何其他介质。
包括指令在内的信息被从外部终端612提供到总线610以供处理器使用,所述外部终端612例如是具有包含由人类用户操作的数字字母键的键盘的终端或者是传感器。传感器检测其附近的状况,并将这些检测变换成与计算机系统600中用于表示信息的信号相兼容的信号。耦合到总线610的终端612的主要用于与人类交互的其他外部组件包括用于呈现图像的显示设备(例如阴极射线管(CRT)或液晶显示器(LCD)或等离子屏幕)和用于控制在显示器上呈现的小光标图像的位置并发出与在终端612的显示器上呈现的图形元素相关联的命令的定点设备(例如鼠标或跟踪球或光标方向键)。在一些实施例中,终端612被省略。
计算机系统600还包括耦合到总线610的通信接口670的一个或多个实例。通信接口670提供到利用其自己的处理器来工作的多种外部设备的双向通信耦合,所述外部设备例如是打印机、扫描仪、外部盘和终端612。在计算机系统600中运行的固件或软件提供终端接口或者基于字符的命令接口,以便外部命令能够被提供给计算机系统。例如,通信接口670可以是并行端口或串行端口,例如RS-232或RS-422接口,或者是个人计算机上的通用串行总线(USB)端口。在一些实施例中,通信接口670是综合服务数字网(ISDN)卡或数字订户线(DSL)卡或提供到相应类型的电话线的信息通信连接的电话调制解调器。在一些实施例中,通信接口670是将总线610上的信号转换成用于经由同轴电缆的通信连接的信号或者用于经由光缆的通信连接的光信号的线缆调制解调器。作为另一示例,通信接口670可以是用于提供到兼容的LAN(例如以太网)的数据通信连接的局域网(LAN)卡。也可实现无线链路。对于无线链路,通信接口670发送和接收携带信息流(例如数字数据)的电信号、声信号或电磁信号,包括红外信号和光信号。这种信号是载波的示例。
在图示实施例中,诸如专用集成电路(IC)620之类的专用硬件耦合到总线610。专用硬件被配置为为了特殊的目的而足够迅速地执行不由处理器602执行的操作。专用IC的示例包括用于生成图像以便显示的图形加速器卡、用于对经由网络发送的消息进行加密和解密的密码板、语音识别、以及到特殊外部设备的接口,所述特殊外部设备例如是重复执行在硬件中更高效实现的某个复杂操作序列的机械臂和医学扫描装备。
在用作路由器的图示计算机中,计算机系统600包括交换系统630,作为用于切换信息以便在网络上流动的专用硬件。交换系统630一般包括多个通信接口,例如通信接口670,用于耦合到多个其他设备。一般来说,每个耦合都具有与网络中的或附接到网络的另一设备相连接的网络链路632,所述网络例如是图示实施例中的本地网络680,具有其自己的处理器的多种外部设备与该网络相连接。在一些实施例中,输入接口或输出接口或两者被链接到一个或多个外部网络元件中的每一个。虽然在图示实施例中网络链路632包括三个网络链路632a、632b、632c,但在其他实施例中,更多或更少的链路被连接到交换系统630。网络链路632一般通过一个或多个网络来提供到使用或处理信息的其他设备的信息通信。例如,网络链路632b可通过本地网络680来提供到主机计算机682或由因特网服务提供者(ISP)操作的装备684的连接。ISP装备684进而又通过现在通常被称为因特网690的网络的公共的世界范围的分组交换通信网络来提供数据通信服务。被称为服务器692的连接到因特网的计算机响应于经由因特网接收的信息而提供服务。例如,服务器692提供用于交换系统630的路由信息。
交换系统630包括被配置为执行与在网络680的元件之间传递信息相关联的交换功能的逻辑和电路,所述传递信息包括传递沿一条网络链路(例如632a)接收的信息以作为相同或不同网络链路(例如632c)上的输出。交换系统630根据公知的预定协议和惯例将到达输入接口的信息流量切换到输出接口。在一些实施例中,交换系统630包括其自己的处理器和存储器,以便利用软件来执行一些交换功能。在一些实施例中,交换系统630依赖于处理器602、存储器604、ROM 606、存储设备608或某种组合来利用软件执行一个或多个交换功能。例如,交换系统630与实施特定协议的处理器602合作,可确定在链路632a上到达输入接口的数据分组的目的地,并利用输出接口在链路632c上将它发送到正确的目的地。目的地可包括主机682、服务器692、连接到本地网络680或因特网690的其他终端设备,或者本地网络680或因特网690中的其他路由和交换设备。
本发明涉及使用计算机系统600来实现这里描述的技术。根据本发明的一个实施例,这些技术是由计算机系统600响应于处理器602执行包含在存储器604中的一个或多个指令的一个或多个序列来执行的。这种指令也被称为软件和程序代码,它们可被从另一计算机可读介质(例如存储设备608)读取到存储器604中。对包含在存储器604中的指令序列的执行致使处理器602执行这里描述的方法步骤。在替换实施例中,诸如专用集成电路620和交换系统630中的电路之类的硬件可取代软件或与软件结合来实现本发明。从而,本发明的实施例不局限于硬件和软件的任何特定组合。
通过通信接口(例如接口670)经由网络链路632和其他网络来传输的信号(该信号携带去往和来自计算机系统600的信息)是载波的示例性形式。计算机系统600可通过网络680、690等等,通过网络链路632和通信接口(例如接口670)来发送和接收信息,包括程序代码。在使用因特网690的示例中,服务器692通过交换系统630中的通信接口,通过因特网690、ISP装备684、本地网络680和网络链路632b来发送从计算机600发送来的消息所请求的用于特定应用的程序代码。接收到的代码可在其被接收时被处理器602或交换系统630执行,或者可被存储在存储设备608或其他非易失性设备中以便以后执行,或者两种情况兼有。这样,计算机系统600可以以载波形式获得应用程序代码。
各种形式的计算机可读介质可用于将指令或数据或两者的一个或多个序列运送到处理器602以便执行。例如,指令和数据可以首先承载在远程计算机(例如主机682)的磁盘上。远程计算机可以将指令和数据加载到其动态存储器中,并利用调制解调器经由电话线来发送指令和数据。计算机系统600的本地调制解调器接收电话线上的指令和数据,并使用红外发射器来将指令和数据转换为红外信号,该红外信号就是充当网络链路632b的载波。充当交换系统630中的通信接口的红外检测器接收在红外信号中携带的指令和数据,并且将代表该指令和数据的信息置于总线610上。总线610将信息运送到存储器604,处理器602利用与指令一起发送的一些数据来从存储器604中取得指令并执行指令。在存储器604中接收的指令和数据可以可选地在被处理器602或交换系统603执行之前或之后存储在存储设备608上。
5.0扩展和替换
在以上说明中,已参考特定实施例描述了本发明。但是,应当清楚,在不脱离本发明更宽广的精神和范围的前提下,可以进行各种修改和变化。因此,说明书和附图都应当被认为是示例性的,而非限制性的。
Claims (18)
1.一种用于对利用传输控制协议(TCP)经由网络传送的相同数据分组中的多个事务分别记账的方法,包括以下步骤:
在服务网关处接收包括传输控制协议(TCP)有效载荷数据的因特网协议(IP)数据分组;
解析所述传输控制协议(TCP)有效载荷以确定指示出第一事务和第二事务之间的边界上的字节位置的边界数据,所述边界数据定义了与所述第一事务相关联的第一超文本传送协议(HTTP)事务和与所述第二事务相关联的第二超文本传送协议(HTTP)事务,所述第一超文本传送协议(HTTP)事务和第二超文本传送协议(HTTP)事务涉及服务器与请求信息的客户端通信;
基于所述边界数据来确定指示出所述传输控制协议(TCP)有效载荷中与所述第一事务相关联的字节的数目的第一字节计数;
基于所述边界数据来确定指示出所述传输控制协议(TCP)有效载荷中与所述第二事务相关联的字节的数目的第二字节计数;
确定所述第一事务和所述第二事务的完成;
至少部分基于所述第一字节计数来确定所述第一事务的第一记账数据;以及
至少部分基于所述第二字节计数来确定所述第二事务的第二记账数据。
2.如权利要求1所述的方法,其中:
所述因特网协议(IP)数据分组包括传输控制协议(TCP)头部,该传输控制协议(TCP)头部包括序列数据,该序列数据指示出在一个传输控制协议(TCP)会话期间,在从所述数据分组的因特网协议(IP)源到所述数据分组的因特网协议(IP)目的地的一个或多个传输控制协议(TCP)有效载荷中传输的所有字节之中,所述传输控制协议(TCP)有效载荷中的第一字节的序列号;并且
所述确定与所述第一事务相关联的第一字节计数的步骤还包括基于所述序列数据和所述边界数据将所述第一事务与第一序列范围关联起来。
3.如权利要求1所述的方法,其中:
所述因特网协议(IP)数据分组包括序列数据,该序列数据指示出在一个传输控制协议(TCP)会话期间,在从所述数据分组的因特网协议(IP)源到所述数据分组的因特网协议(IP)目的地的一个或多个传输控制协议(TCP)有效载荷中传输的所有字节之中,所述传输控制协议(TCP)有效载荷中的第一字节的序列号;并且
所述确定与所述第二事务相关联的第二字节计数的步骤还包括基于所述序列数据和所述边界数据将所述第二事务与第二序列范围关联起来。
4.如权利要求3所述的方法,其中:
所述因特网协议(IP)数据分组包括指示出所述传输控制协议(TCP)有效载荷的大小的大小数据;并且
所述确定与所述第二事务相关联的第二字节计数的步骤还包括基于所述大小数据将所述第二事务与第二序列范围关联起来。
5.如权利要求1所述的方法,其中:
所述因特网协议(IP)数据分组包括与所述有效载荷数据不同的头部数据,该头部数据指示出因特网协议(IP)头部和传输控制协议(TCP)头部;并且
所述确定第一记账数据的步骤还包括至少部分基于所述头部数据中的字节数目来确定所述第一记账数据的步骤。
6.如权利要求1所述的方法,还包括为所述第一事务形成具有两组条目的数据结构的步骤,针对第一方向序列范围的第一方向条目与从所述数据分组的因特网协议(IP)源传播到所述数据分组的因特网协议(IP)目的地的数据分组中的所述第一事务相关联,针对第二方向序列范围的第二方向条目与从所述数据分组的因特网协议(IP)目的地传播到所述数据分组的因特网协议(IP)源的数据分组中的所述第一事务相关联。
7.如权利要求6所述的方法,其中所述两组条目的每个条目包括用于保存指示出序列范围的起始的数据的起始字段和用于保存指示出所述序列范围的结束的数据的结束字段。
8.如权利要求1所述的方法,所述确定所述第一记账数据的步骤还包括:
确定与所述第一事务相关联的第一每字节费用;以及
基于将所述第一字节计数乘以所述第一每字节费用来确定所述第一记账数据。
9.如权利要求1所述的方法,还包括:
基于所述第一记账数据形成计费记录;以及
将所述计费记录发送到一个进程,该进程使得为请求所述第一事务的一方和对所述第一事务作出响应的一方中的至少一个评估针对所述第一事务的费用。
10.一种用于对利用传输控制协议(TCP)经由网络传送的相同数据分组中的多个事务分别记账的设备,包括:
用于在服务网关处接收包括传输控制协议(TCP)有效载荷数据的因特网协议(IP)数据分组的装置;
用于解析所述传输控制协议(TCP)有效载荷以确定指示出第一事务和第二事务之间的边界上的字节位置的边界数据的装置,所述边界数据定义了与所述第一事务相关联的第一超文本传送协议(HTTP)事务和与所述第二事务相关联的第二超文本传送协议(HTTP)事务,所述第一超文本传送协议(HTTP)事务和第二超文本传送协议(HTTP)事务涉及服务器与请求信息的客户端通信;
用于基于所述边界数据来确定指示出所述传输控制协议(TCP)有效载荷中与所述第一事务相关联的字节的数目的第一字节计数的装置;
用于基于所述边界数据来确定指示出所述传输控制协议(TCP)有效载荷中与所述第二事务相关联的字节的数目的第二字节计数的装置;
用于确定所述第一事务和所述第二事务的完成的装置;
用于至少部分基于所述第一字节计数来确定所述第一事务的第一记账数据的装置;以及
用于至少部分基于所述第二字节计数来确定所述第二事务的第二记账数据的装置。
11.如权利要求10所述的设备,其中:
所述因特网协议(IP)数据分组包括序列数据,该序列数据指示出在一个传输控制协议(TCP)会话期间,在从所述数据分组的因特网协议(IP)源到所述数据分组的因特网协议(IP)目的地的一个或多个传输控制协议(TCP)有效载荷中传输的所有字节之中,所述传输控制协议(TCP)有效载荷中的第一字节的序列号;并且
所述确定与所述第一事务相关联的第一字节计数的步骤还包括基于所述序列数据和所述边界数据将所述第一事务与第一序列范围关联起来。
12.如权利要求10所述的设备,其中:
所述因特网协议(IP)数据分组包括序列数据,该序列数据指示出在一个传输控制协议(TCP)会话期间,在从所述数据分组的因特网协议(IP)源到所述数据分组的因特网协议(IP)目的地的一个或多个传输控制协议(TCP)有效载荷中传输的所有字节之中,所述传输控制协议(TCP)有效载荷中的第一字节的序列号;并且
所述确定与所述第二事务相关联的第二字节计数的步骤还包括基于所述序列数据和所述边界数据将所述第二事务与第二序列范围关联起来。
13.如权利要求12所述的设备,其中:
所述因特网协议(IP)数据分组包括指示出所述传输控制协议(TCP)有效载荷的大小的大小数据;并且
所述确定与所述第二事务相关联的第二字节计数的步骤还包括基于所述大小数据将所述第二事务与第二序列范围关联起来。
14.如权利要求10所述的设备,其中:
所述因特网协议(IP)数据分组包括与所述有效载荷数据不同的头部数据,该头部数据指示出因特网协议(IP)头部和传输控制协议(TCP)头部;并且
所述确定第一记账数据的步骤还包括至少部分基于所述头部数据中的字节数目来确定所述第一记账数据的步骤。
15.如权利要求10所述的设备,还包括用于为所述第一事务形成具有两组条目的数据结构的的装置,针对第一方向序列范围的第一方向条目与从所述数据分组的因特网协议(IP)源传播到所述数据分组的因特网协议(IP)目的地的数据分组中的所述第一事务相关联,针对第二方向序列范围的第二方向条目与从所述数据分组的因特网协议(IP)目的地传播到所述数据分组的因特网协议(IP)源的数据分组中的所述第一事务相关联。
16.如权利要求15所述的设备,其中所述两组条目的每个条目包括用于保存指示出序列范围的起始的数据的起始字段和用于保存指示出所述序列范围的结束的数据的结束字段。
17.如权利要求10所述的设备,所述用于确定所述第一记账数据的装置还包括:
用于确定与所述第一事务相关联的第一每字节费用的装置;以及
用于基于将所述第一字节计数乘以所述第一每字节费用来确定所述第一记账数据的装置。
18.如权利要求10所述的设备,还包括:
用于基于所述第一记账数据形成计费记录的装置;以及
用于将所述计费记录发送到一个进程的装置,该进程使得为请求所述第一事务的一方和对所述第一事务作出响应的一方中的至少一个评估针对所述第一事务的费用。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/175,849 | 2005-07-06 | ||
US11/175,849 US8438281B2 (en) | 2005-07-06 | 2005-07-06 | Techniques for accounting for multiple transactions in a transport control protocol (TCP) payload |
PCT/US2006/023333 WO2007008334A2 (en) | 2005-07-06 | 2006-06-15 | Techniques for accounting for multiple transactions in a transport control protocol (tcp) payload |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101375264A CN101375264A (zh) | 2009-02-25 |
CN101375264B true CN101375264B (zh) | 2012-12-05 |
Family
ID=37619507
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006800325810A Expired - Fee Related CN101375264B (zh) | 2005-07-06 | 2006-06-15 | 用于对tcp有效载荷中的多个事务进行记帐的技术 |
Country Status (4)
Country | Link |
---|---|
US (2) | US8438281B2 (zh) |
EP (1) | EP1899843B1 (zh) |
CN (1) | CN101375264B (zh) |
WO (1) | WO2007008334A2 (zh) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8438281B2 (en) | 2005-07-06 | 2013-05-07 | Cisco Technology, Inc. | Techniques for accounting for multiple transactions in a transport control protocol (TCP) payload |
US7715825B2 (en) * | 2005-09-28 | 2010-05-11 | Research In Motion Limited | Pushback methods and apparatus for use in communicating messages to mobile communication devices |
US8213412B2 (en) | 2005-09-29 | 2012-07-03 | Comcast Cable Holdings, Llc | System and method for providing multimedia services utilizing a local proxy |
US7570609B2 (en) | 2005-11-08 | 2009-08-04 | Research In Motion Limited | System and method of message delivery in a wireless communication network |
US20070106739A1 (en) * | 2005-11-08 | 2007-05-10 | David Clark | Wireless messaging using notification messages in a wireless communication network |
US8270413B2 (en) | 2005-11-28 | 2012-09-18 | Cisco Technology, Inc. | Method and apparatus for self-learning of VPNS from combination of unidirectional tunnels in MPLS/VPN networks |
EP2082506B1 (en) * | 2006-11-01 | 2016-10-19 | Telefonaktiebolaget LM Ericsson (publ) | Method for content synchronization when broadcasting data in a wireless network |
JP4968264B2 (ja) * | 2006-12-20 | 2012-07-04 | 日本電気株式会社 | 通信端末、端末、通信システム、通信方法及びプログラム |
US20080201166A1 (en) * | 2007-02-16 | 2008-08-21 | General Electric Company | System and method to bill a healthcare entity for use of an asset of a supplier |
US8589974B2 (en) * | 2008-01-16 | 2013-11-19 | Cisco Technology, Inc. | Electronic advertising using distributed demographics |
US20090259577A1 (en) * | 2008-04-10 | 2009-10-15 | Cisco Technology, Inc. | Providing Billing Instructions Associated With a New Protocol in a Network Environment |
US8301876B2 (en) * | 2008-05-16 | 2012-10-30 | Emc Corporation | Techniques for secure network communication |
US8588240B2 (en) * | 2008-10-07 | 2013-11-19 | Cisco Technology, Inc. | Methods and systems for accounting in an access gateway |
US8306038B1 (en) | 2009-12-29 | 2012-11-06 | F5 Networks, Inc. | Methods for enhancing TCP communications and systems thereof |
WO2012119217A1 (en) * | 2011-03-04 | 2012-09-13 | Research In Motion Limited | Mobile device driven information exchange |
JP5768017B2 (ja) * | 2012-07-25 | 2015-08-26 | 株式会社東芝 | 通信端末、通信方法および通信プログラム |
US20140355623A1 (en) * | 2013-06-03 | 2014-12-04 | Futurewei Technologies, Inc. | Transmission Control Protocol (TCP) Connection Control Parameter In-Band Signaling |
US9485289B2 (en) | 2013-08-28 | 2016-11-01 | Cisco Technology, Inc. | HTTP streaming client adaptation algorithm based on proportional-integral control |
US20170111272A1 (en) * | 2015-10-14 | 2017-04-20 | Varmour Networks, Inc. | Determining Direction of Network Sessions |
EP3319288A1 (en) * | 2016-11-07 | 2018-05-09 | Secucloud GmbH | Protocol detection by parsing layer-4 packets in a network security system |
CN108377223B (zh) * | 2018-01-05 | 2019-12-06 | 网宿科技股份有限公司 | 一种多包识别方法、数据包识别方法及流量引导方法 |
US11068380B2 (en) * | 2018-08-08 | 2021-07-20 | Servicenow, Inc. | Capturing and encoding of network transactions for playback in a simulation environment |
CN112491655B (zh) * | 2020-11-20 | 2022-07-12 | 中国建设银行股份有限公司 | 一种tcp传输异常类型的确定方法、装置、电子设备及存储介质 |
US11379258B1 (en) * | 2021-07-30 | 2022-07-05 | Goldman Sachs & Co. LLC | Expression engine for testing transaction processing system |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1141232A (ja) * | 1997-07-17 | 1999-02-12 | Fujitsu Ltd | Lanシステムにおける従量課金方式 |
US7046643B1 (en) * | 1997-07-30 | 2006-05-16 | Bellsouth Intellectual Property Corporation | Method for dynamic multi-level pricing for wireless communications according to quality of service |
US6650640B1 (en) * | 1999-03-01 | 2003-11-18 | Sun Microsystems, Inc. | Method and apparatus for managing a network flow in a high performance network interface |
CN1293478C (zh) * | 1999-06-30 | 2007-01-03 | 倾向探测公司 | 用于监控网络流量的方法和设备 |
US20020069309A1 (en) * | 2000-09-25 | 2002-06-06 | Edward Balassanian | Method and system for data metering |
US7055028B2 (en) * | 2000-10-10 | 2006-05-30 | Juniper Networks, Inc. | HTTP multiplexor/demultiplexor system for use in secure transactions |
US6795848B1 (en) | 2000-11-08 | 2004-09-21 | Hughes Electronics Corporation | System and method of reading ahead of objects for delivery to an HTTP proxy server |
US7080136B2 (en) * | 2001-03-18 | 2006-07-18 | At & T Corp. | Method and apparatus for size-dependent sampling for managing a data network |
US7124202B2 (en) * | 2001-11-13 | 2006-10-17 | Intel Corporation | System and method for aggregating channel segment ID's into a first section and data segments into a second section |
US8301521B2 (en) * | 2001-11-14 | 2012-10-30 | International Business Machines Corporation | Mechanism for tracking traffic statistics on a per packet basis to enable variable price billing |
US20030091031A1 (en) * | 2001-11-14 | 2003-05-15 | International Business Machines Corporation | Variable pricing structure for transmitting packets across a communications link |
US20030105855A1 (en) * | 2001-11-26 | 2003-06-05 | Big Pipe Inc. | Usage-based billing method and system for computer networks |
US7359326B1 (en) * | 2002-02-05 | 2008-04-15 | 3Com Corporation | Method for splitting data and acknowledgements in a TCP session |
EP1482680A4 (en) | 2002-03-29 | 2010-01-27 | Ntt Docomo Inc | METHOD FOR COMMUNICATION DELIVERY IN CONNECTION-TYPE COMMUNICATION, RELAY RELAY DEVICE, AND ACCOUNTING MANAGEMENT DEVICE |
US7406087B1 (en) * | 2002-11-08 | 2008-07-29 | Juniper Networks, Inc. | Systems and methods for accelerating TCP/IP data stream processing |
US6934751B2 (en) * | 2002-11-29 | 2005-08-23 | Motorola, Inc. | Method and device for providing more accurate subscriber device billing |
US7817721B2 (en) * | 2003-05-15 | 2010-10-19 | Lsi Corporation | Posting status data in digital transport stream processing |
US7366790B1 (en) * | 2003-07-24 | 2008-04-29 | Compuware Corporation | System and method of active latency detection for network applications |
US7443867B2 (en) * | 2003-08-15 | 2008-10-28 | Nortel Networks Limited | Method for performing network services |
US20050102371A1 (en) * | 2003-11-07 | 2005-05-12 | Emre Aksu | Streaming from a server to a client |
JP4160092B2 (ja) * | 2004-03-09 | 2008-10-01 | ケイティーフリーテル カンパニー リミテッド | パケットデータ課金細分化方法及びそのシステム |
US7610225B2 (en) * | 2004-08-13 | 2009-10-27 | Qualcomm Incorporated | Methods and apparatus for performing resource tracking and accounting at a mobile node |
JP5058991B2 (ja) | 2005-06-29 | 2012-10-24 | コンプメディクス リミテッド | 導電ブリッジを備えるセンサ・アセンブリ |
US8438281B2 (en) | 2005-07-06 | 2013-05-07 | Cisco Technology, Inc. | Techniques for accounting for multiple transactions in a transport control protocol (TCP) payload |
-
2005
- 2005-07-06 US US11/175,849 patent/US8438281B2/en active Active
-
2006
- 2006-06-15 EP EP06773262A patent/EP1899843B1/en active Active
- 2006-06-15 CN CN2006800325810A patent/CN101375264B/zh not_active Expired - Fee Related
- 2006-06-15 WO PCT/US2006/023333 patent/WO2007008334A2/en active Application Filing
-
2013
- 2013-04-09 US US13/859,510 patent/US9716636B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US8438281B2 (en) | 2013-05-07 |
WO2007008334A2 (en) | 2007-01-18 |
EP1899843A2 (en) | 2008-03-19 |
US20070011329A1 (en) | 2007-01-11 |
CN101375264A (zh) | 2009-02-25 |
EP1899843A4 (en) | 2011-12-28 |
EP1899843B1 (en) | 2012-11-28 |
US20140149580A1 (en) | 2014-05-29 |
US9716636B2 (en) | 2017-07-25 |
WO2007008334A3 (en) | 2008-08-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101375264B (zh) | 用于对tcp有效载荷中的多个事务进行记帐的技术 | |
CN103051725B (zh) | 应用识别方法、数据挖掘方法、装置及系统 | |
JP4160092B2 (ja) | パケットデータ課金細分化方法及びそのシステム | |
CN1135025C (zh) | 通信系统和其中使用的方法及一种无线通信设备 | |
US7738452B1 (en) | Techniques for load balancing subscriber-aware application proxies | |
US8639846B2 (en) | Adaptive gateway for switching transactions and data on unreliable networks using context-based rules | |
CN101663590B (zh) | 在网络的内容网关处对乱序数据分组的解析 | |
CN101855646A (zh) | 目标移动内容插入和/或替换 | |
CN1647451B (zh) | 用于在网络环境中监视信息的装置、方法和系统 | |
WO2001058110A2 (en) | A network gateway-based billing method | |
CN108200165A (zh) | 请求传输系统、方法、装置及存储介质 | |
CN108200158A (zh) | 请求传输系统、方法、装置及存储介质 | |
US7206850B2 (en) | Communication system, relay device, service providing device, relaying method, service providing method and program product | |
JP2006502462A (ja) | サービスの永久記録をリモートプリンタで生成するための方法とシステム | |
JP4598308B2 (ja) | データ通信システム及びデータ通信方法 | |
WO2007066279A2 (en) | Accounting information filtering method and apparatus | |
TWI222289B (en) | System for returning rates back to content providers, gateway used for the system, and method of doing the same | |
KR100483741B1 (ko) | 무선 인터넷 서비스를 위한 다중 프록시 게이트웨이 연동방법 | |
CN101466088A (zh) | 一种Java无线服务计费的系统和实现方法 | |
CN108040000A (zh) | 一种信息传送方法及设备 | |
CN104243522B (zh) | 用于超文本传输协议网络的方法及宽带网络网关 | |
JP3348714B2 (ja) | 携帯端末事業者内装置、課金処理方法、及び課金処理プログラムを記録した記録媒体 | |
CN108260225A (zh) | 数据关联方法和装置 | |
KR101530529B1 (ko) | 무선 환경의 메시지 운영 방법 | |
KR101508759B1 (ko) | 컨텐츠 연동 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121205 Termination date: 20210615 |
|
CF01 | Termination of patent right due to non-payment of annual fee |