CN1753391A - 使用具有同步频率的时钟的可靠的消息通信 - Google Patents

使用具有同步频率的时钟的可靠的消息通信 Download PDF

Info

Publication number
CN1753391A
CN1753391A CNA2005101133088A CN200510113308A CN1753391A CN 1753391 A CN1753391 A CN 1753391A CN A2005101133088 A CNA2005101133088 A CN A2005101133088A CN 200510113308 A CN200510113308 A CN 200510113308A CN 1753391 A CN1753391 A CN 1753391A
Authority
CN
China
Prior art keywords
message
action
mutual
described message
destination
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.)
Granted
Application number
CNA2005101133088A
Other languages
English (en)
Other versions
CN1753391B (zh
Inventor
D·E·朗沃斯
G·K·R·卡基韦亚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN1753391A publication Critical patent/CN1753391A/zh
Application granted granted Critical
Publication of CN1753391B publication Critical patent/CN1753391B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • H04L1/188Time-out mechanisms
    • H04L1/1883Time-out mechanisms using multiple timers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L7/00Arrangements for synchronising receiver with transmitter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1829Arrangements specially adapted for the receiver end
    • H04L1/1848Time-out mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/1607Details of the supervisory signal
    • H04L1/1621Group acknowledgement, i.e. the acknowledgement message defining a range of identifiers, e.g. of sequence numbers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/1607Details of the supervisory signal
    • H04L1/1685Details of the supervisory signal the supervisory signal being transmitted in response to a specific request, e.g. to a polling signal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • H04L1/188Time-out mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/28Timers or timing mechanisms used in protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/326Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the transport layer [OSI layer 4]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)
  • Communication Control (AREA)

Abstract

本发明涉及使用具有同步频率的时钟的可靠消息通信的方法、系统和计算机程序产品。本发明的实施例确保至多一次(at-most-once)的消息传送。源和目的地使用具有同步频率的时钟。给消息分配存活时间(Time-To-Live)(“TTL”)值,从而当基于TTL值的对应消息计时器到期,则状态消息在源处得到更新,并且在目的地处被移除。据此,在目的地处维护状态信息所消耗的资源可在较短时间周期内被释放。如果有关状态信息被移除,则源可以向消息目的地重新发送状态信息。当消息目的地遭受无意的存储丢失时,消息处理器实例ID确保最多一次传送。当TTL值无限且不使用实例ID时,本发明的实施例还可用于例如恰好一次传送(exactly-once-delivery)。

Description

使用具有同步频率的时钟的可靠的消息通信
相关申请的参照
技术领域
本发明涉及电子消息通信,并且由其涉及使用具有同步频率的时钟的可靠消息通信。
背景技术
计算机系统和有关技术影响社会的许多方面。的确,计算机系统处理信息的能力已经改变了我们生活和工作的方式。计算机系统如今一般执行许多在计算机系统出现之前是手动执行的任务(例如,文字处理、计划安排、和数据库管理)。近年来计算机系统已被彼此耦合并耦合到其它电子设备以构成各种有线和无线计算机网络,通过这些网络,计算机系统和其它电子设备可传递电子数据。结果,许多在一个计算机系统中执行的任务(例如,语音通信、存取电子邮件、控制家用电器、网络浏览、和打印文档)包括了许多计算机系统和/或其它电子设备经由有线和/或无线计算机网络的电子消息的交换。
网络实际上已经如此普及,以至于一简单的网络使能的计算系统可通过通常称为“因特网”的各种网络的聚集,与遍布全球的数以百万的其它计算系统中的任何一个通信。此类计算系统可包括台式计算机、膝上计算机、或平板式个人计算机;个人数字助理(PDA);电话;或能够通过数字网络通信的任何其它计算机或设备。
为了通过网络通信,一个计算设备(本文中称为“发送计算设备”)构造或者存取一个电子消息,并将该电子消息通过网络发送到另一个计算系统(本文中称为“接收计算设备”)。当该电子消息是电子邮件或即时消息时,该电子消息可由人类用户阅读,或相反,可由在接收计算设备上运行的某个应用程序阅读。电子消息可在人类用户可能的协助下,由发送计算系统上运行的某个应用程序构造。
尽管此类电子消息通信有利地允许计算系统交换信息,然而网络有时未能传送电子消息。取决于电子消息的重要程度,这可能是十分有害的,在某些情况下甚至可能是灾难性的。因此,一些可靠的电子消息通信技术已经被开发出来。
一般而言,可靠的消息通信技术是要将电子消息从源通过可松弛、复制、重排和延迟消息的通信网络传送到目的地。某些电子消息可被多次传送和处理而不会产生危害。然而,这并不适用于所有消息。一般而言,最安全的方式是确保消息被发送一次或一次也不被发送。
某些可靠的消息通信技术实行确认消息。例如,传输控制协议(及其它传输协议)实行基于确认的可靠消息通信。具体地,当接收计算系统从发送计算系统收到一个电子消息,接收计算系统向发送计算系统发出一个确认消息。一收到该确认消息,发送计算系统可以在确知接收计算系统的确收到了该电子消息的前提下采取适当的行动。否则,如果发送计算系统没有收到确认消息,发送计算系统可采取诸如重新发送该电子消息等适当的行动。但是为每个收到的电子消息发送确认信息可能导致会潜在地并且不必要地消耗网络带宽的大量确认消息。
为了减少需要发送的确认消息的个数,开发出了累积确认。在累积确认中,发送计算系统向会话中的每个电子消息分配一个序列号。某给定电子消息的序列号通常与该会话中前一个电子消息相比增加了1。返回给发送计算系统的累积确认包括表示成功收到的消息的一连串相连序列号的最后一个序列号。例如,假设接收计算系统收到具有序列号1到50、和55到99的电子消息,但没有收到具有序列号51-54的消息。接收计算系统可返回仅标识收到的序列的累积确认。
但是,当发送计算系统未能收到确认消息(单独的或累积的)时,发送计算系统可能就没有办法判断是电子消息传送失败,还使对应的确认消息传送失败。即,发送计算系统对于接收计算系统是否收到电子消息是存疑的。在某些环境中,多次传送和处理电子消息可能是可接收的。因此,在这些环境中(例如,涉及基于静态Web的内容),当没有收到对应的确认消息时,发送计算系统可重新发送电子消息。但是,在其它环境中,多次传送和/或处理电子消息可能是不可接收的。因此,在这些其它环境中(例如,涉及银行交易),当没有收到对应的确认消息时,发送计算机系统不会重新发送电子消息。
为使发送计算设备免于必需作出可能不正确的重新发送的决定,设计出了重复检测机制。重复检测机制降低了接收计算系统处理同一个消息(或同一消息序列)一次以上的可能性。为了实现重复检测机制,许多接收计算机系统存储与发送计算机系统相关联的状态信息。例如,接收计算机系统可存储一个所有先前被处理过(由发送计算系统的IP地址和序列号标识)的先前的消息(或消息序列)的指示(例如,在数据库或列表中)。因此,如果某个收到的消息在该列表中出现(即,先前已收到过该消息),则弃置收到的消息,避免了重复处理该消息。接收计算系统通常将状态信息诸如会话的长度等存储很长的时间(可能永远)以显著提高重复检测的机会。
由于计算系统的数量和网络上(例如,因特网上)交换的消息数量,实现重复检测所需的资源可能相当大。例如,在因特网上的任何给定时间,数以百万计的计算机系统正在交换电子消息。即使在单个接收计算机系统处(例如,零售服务器),在给定的某一天与数以千计、或甚至数以万计的不同发送计算系统交互也是不罕见的。因此,为了实现重复检测,这些接收计算系统可长期存储从每个发送计算机系统收到的每个消息的指示。因为每个发送计算系统都可能发送数以千计的消息作为一次事务的一部分,接收计算系统可能需要为大量(例如,数百万或数千万个)消息维护状态。
一些其它的可靠的消息通信技术利用同步到绝对时间的时钟。但是,将时钟同步到绝对时间要求同步协议和高连通性。在诸如因特网等某些网络上,高连通性实际上是不可能的,因为计算机系统频繁地连接到网络或从网络断开。此外,利用具有绝对同步时间的时钟的可靠的消息通信技术实现的成本可能更高。据此,更常使用维护状态的可靠的消息通信技术,并且在当不可能和绝对时钟同步更严格的操作参数一致时常常是必需的。因此,许多联网计算机系统必需分配可能相当大量的资源以维护涉及于其它计算机系统的通信的状态。因而便于以资源更有效方式的可靠的消息通信的系统、方法和计算机程序产品将是有利的。
发明内容
前述的现有技术的问题为本发明的原理所克服,本发明针对使用具有同步频率的时钟的可靠消息通信的方法、系统和计算机程序产品。在一些实施例中,消息目的地处理包括具有消息ID和存活时间(TTL)值的消息第一副本。消息目的地更新交互高速缓存以指示已经处理过具有该消息ID的消息。消息目的地在处理了消息的第一副本之后,并且在基于TTL值的倒数计时器到期之前,收到消息的第二副本(也具有该消息ID)。消息目的地基于指示先前已经处理过具有该消息ID的一个消息的交互高速缓存,拒收消息的第二副本。
在其它实施例中,消息目的地处理具有交互ID、消息ID和TTL值的消息的第一副本。响应于最后一个基于在已处理消息中指定的TTL值的倒数计时器到期,消息目的地从其交互高速缓存中移除与交互ID相关联的进度信息。消息目的地在倒数计时器到期之后收到消息的第二副本。消息目的地向具有与消息目的地的时钟频率同步的时钟频率的对应消息源发送请求,要求交互ID的进度的指示。消息目的地收到交互已经进展、从而具有该消息ID的消息可被弃置的指示。消息目的地弃置消息的第二副本。
在其它实施例中,消息目的地收到与一个在先的实例ID对应的消息的第一副本。接着,消息目的地在初始化成具有该在先实例ID的消息处理器实例处处理消息的第一副本。消息目的地检测到目的地计算机系统所利用的存储器内容有无意的丢失。消息目的地重新初始化消息处理器实例,使更新的实例ID与在先的实例ID不同。消息目的地在重新初始化消息处理器实例之后收到消息的第二副本,消息的第二副本对应于在先的实例ID。消息目的地拒收消息的第二副本,因为消息的第二副本对应于与更新的实例ID不同的实例ID。
在另外的实施例中,消息源向具有与消息源时钟频率同步的时钟频率的消息目的地发送具有交互ID、消息ID和TTL值的消息第一副本。消息源在发送消息的第一副本之后,向目标计算机系统发送具有交互ID、消息ID和更新TTL值的消息第二副本。更新TTL值是从消息的第一副本中指定的TTL值减去从消息的第一副本被发送起已过去的时间计算出来的。消息源检测到消息TTL到期。消息源更新交互高速缓存以指示消息不再需要确认。
本发明的这些及其它对象和特征将会从以下描述和所附的权利要求书变得更加完全显而易见,或可通过如下文所述地实施本发明来学会本发明。
附图说明
为了进一步阐明本发明以上及其它优点和特征,将参考附图中示出的具体实施例来呈现对本发明更具体的描述。应当理解这些附图仅描述了若干本发明典型的实施例,因此不应被视为限制本发明的范围。将通过使用附图更具体和详细地描述和解释本发明,其中:
图1示出便于使用具有同步频率时钟的可靠的消息通信的计算机体系结构的示例。
图2示出便于在消息ID在消息目的地的交互高速缓存中维护时可靠地处理消息通信的第一个示例性消息流程。
图3示出便于在消息ID从消息目的地的交互高速缓存中被刷新掉时可靠地处理消息通信的第二个示例性消息流程。
图4示出便于在消息目的地遭受无意的存储丢失时可靠地处理消息通信的第三个示例性消息流程。
图5示出本发明的原理的合适的操作环境。
图6示出一种使消息源能可靠地传送消息的方法的示例性流程图。
图7示出一种使消息目的地能可靠地处理消息的方法的示例性流程图。
具体实施方式
前述的现有技术的问题为本发明的原理所克服,本发明针对使用具有同步频率的时钟的可靠的消息通信的方法、系统和计算机程序产品。在一些实施例中,消息目的地处理具有消息ID和存活时间(TTL)值的消息第一副本。消息目的地更新交互高速缓存以指示已经处理过具有该消息ID的消息。消息目的地在处理了消息的第一副本之后,并且在基于TTL值的倒数计时器到期之前,收到消息的第二副本(也具有该消息ID)。消息目的地基于指示先前已经处理过具有该消息ID的一个消息的交互高速缓存,拒收消息的第二副本。
在其它实施例中,消息目的地处理具有交互ID、消息ID和TTL值的消息的第一副本。响应于最后一个基于在已处理消息中指定的TTL值的倒数计时器到期,消息目的地从其交互高速缓存中移除与交互ID相关联的进度信息。消息目的地在倒数计时器到期之后收到消息的第二副本。消息目的地向具有与消息目的地的时钟频率同步的时钟频率的对应消息源发送请求,要求交互ID的进度的指示。消息目的地收到交互已经进展、从而具有该消息ID的消息可被弃置的指示。消息目的地弃置消息的第二副本。
在其它实施例中,消息目的地收到与一个在先的实例ID对应的消息的第一副本。接着,消息目的地在初始化成具有该在先实例ID的消息处理器实例处处理消息的第一副本。消息目的地检测到目的地计算机系统所利用的存储器内容有无意的丢失。消息目的地重新初始化消息处理器实例,使更新的实例ID与在先的实例ID不同。消息目的地在重新初始化消息处理器实例之后收到消息的第二副本,消息的第二副本对应于在先的实例ID。消息目的地拒收消息的第二副本,因为消息的第二副本对应于与更新的实例ID不同的实例ID。
在另外的实施例中,消息源向具有与消息源时钟频率同步的时钟频率的消息目的地发送具有交互ID、消息ID和TTL值的消息第一副本。消息源在发送消息的第一副本之后,向目标计算机系统发送具有交互ID、消息ID和更新TTL值的消息第二副本。更新TTL值是从消息的第一副本中指定的TTL值减去从消息的第一副本被发送起已过去的时间计算出来的。消息源检测到消息TTL到期。消息源更新交互高速缓存以指示消息不再需要确认。
在本发明范围之内的实施例包括计算机可读介质,用以装载或持有存储在其上的计算机可执行指令或数据结构。此类计算计可读介质可以是通用或专用计算计系统可访问的任何可用介质。作为示例,而非限制,此类计算机可读介质可包括物理存储介质,诸如RAM、ROM、EPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁存储设备、或任何其它可用于装载或存储计算机可执行指令、计算机可读指令、或数据结构所需程序代码手段、并可由通用或专用计算机系统访问的介质。
在此描述及所附权利要求书中,“网络”定义为实现计算机系统和/或模块之间电子数据的传输的一个或多个数据链路。当通过网络或其它通信连接(有线的、无线的、或有线和/或无线的组合)向计算机系统传送或提供信息时,该连接被恰如其分地表述为术语计算机可读介质。以上各项的组合也应被包括到计算机可读介质的范围之内。计算机可读指令包括例如使通用计算机系统或专用计算机系统执行某个功能或某组功能的指令和数据。计算机可执行指令可以是例如二进制码、诸如汇编语言等中间格式指令或甚至源代码。
在此描述及所附权利要求书中,“计算机系统”定义为协同工作以对电子数据进行操作的一个或多个软件模块、一个或多个硬件模块、或其组合。例如,计算机系统的定义包括个人计算机的硬件组件,以及诸如该个人计算机的操作系统等软件模块。各个模块的物理布局并不重要。计算机系统可包括经由网络耦合的一个或多个计算机。类似地,计算机系统可包括单个物理设备(诸如移动电话或个人数字助理“PDA”),其中各个内部模块(诸如存储器和处理器)协同工作以对电子数据进行操作。
本领域技术人员应当理解,可在网络计算环境中用许多类型的计算机系统配置来实施本发明,这些配置包括,个人计算机、膝上计算机、手持式设备、多处理器系统、基于微处理器的或可编程的消费者电子设备、网络PC、小型计算机、大型计算机、移动电话、PDA、寻呼机、等等。本发明还可在分布式系统环境中实施,其中通过网络连接的(通过有线的数据链路、无线数据链路、或通过有线和无线数据链路的结合)本地和远程计算机系统同时执行任务。在分布式系统环境中,程序模块可同时位于本地和远程记忆存储设备中。
在此描述和所附权利要求书中,“消息源”定义为可靠的消息通信交换的起源。消息源既可表示创建了要可靠传送的消息的应用程序,又可表示管理可靠交换的基础结构。在简单对象访问协议(“SOAP”)处理模型中,源是初始发送者。
在此描述和所附权利要求书中,“消息目的地”定义为可靠的消息通信交换的目标。消息目的地既可表示使用消息的应用程序,又可表示管理可靠交换的基础结构。在SOAP处理模型中,目的地是最终的接收者。
在此描述和所附权利要求书中,当消息源和消息目的地的时钟滴答频率在频率的可允许漂移上处于某指定上限之内时,消息源和消息目标具有“同步的时钟频率”。
漂移可以各种不同方式定义。当指全球世界时钟时,偏移可定义为:
偏移=|(S2-S1)-(D2-D1)|/(C2-C1)
并且上限可定义为:
上限=Min(单向等待时间)/Max(TTL)
其中S1和D1分别是在世界时钟有值C1的实例时,源和目的地处的时钟值,且S2和D2分别是在后来世界时钟有值C2的实例时,源和目的地处的时钟值。当漂移<上限时,漂移是可允许的(即,源和目的地时钟可视为具有同步的频率)。
单向等待时间是从目的地到源测量的(例如,如目的地为某未知序列所初始化的“REQACKACK”消息的等待时间所捕获的)。TTS是在某个消息上指定的TTL,诸如往返延迟的倍数。因此,指定消息的较大TTL导致对源和目的地时钟的漂移率有更严格的要求。另一方面,指定消息的较小TTL导致对源和目的地时钟的漂移率有较宽松的要求。
不参考全球世界时钟的情况下,从源的角度出发的漂移可定义为:
漂移-源=(D2-D1)/(S2-S1)
从目的地角度出发的漂移可定义为:
漂移-目的地=(S2-S1)/(D2-D1)
且上限可定义为:
上限=Min(单向等待时间)/Max(TTL)。
以上假设两个时钟都往前走。即,S2>S1且D2>D1。在某些例子中,例如,当目的地时钟走得较快,可能出现漂移-源>1且漂移-目的地<1的情况。当漂移-目的地<上限时,漂移是可允许的(即,源和目的地可视为具有同步的频率)。单向等待时间是从目的地到源测量的。TTL是消息上指定的TTL,诸如往返延迟的倍数。
应当理解,本发明的实施例不要求各时钟同步到绝对时间。
消息通信体系结构
图1示出便于用具有同步频率的时钟的可靠消息通信的计算机体系结构100的例子。如计算机体系结构100中所示,计算机系统102、103、104、106和107连接到网络101。网络101可以是局域网(“LAN”)、广域网(“WAN”)、或甚至因特网。连接到网络101的计算机系统可从计算机体系结构100中所连接的其它计算机系统接收数据或往其发送数据。据此,计算机系统102、103、104、106和107,以及其它连接的计算机系统(未图示),可通过网络101交换消息相关的数据(例如,因特网协议(“IP”)数据报和诸如传输控制协议(“TCP”)、超文本传输协议(“HTTP”)、简单邮件传输协议(“SMTP”)等其它使用IP数据报的较高层协议)。
计算机系统102、103、104、106和107分别包括对应的交互高速缓存122、123、124、126和127。这些交互高速缓存122、123、124、126和127的每一个可维护对应于与其它计算机系统的交互序列的交互ID、和已为每个交互序列所处理的消息的消息ID的列表。这些交互高速缓存122、123、124、126和127的每一个还可为每个消息维护存活时间(“TTL”)值。TTL值可指示源试图向目的地传送消息的持续时间。当在源处TTL到期,源可指示该消息不再需要确认(例如,作为源视其为已丢失的结果)。当在目的地处TTL到期,目的地随即可从交互高速缓存中移除对应的消息ID和/或交互ID(从而释放了系统资源)。
计算机系统102、103、104、106和107分别包括对应的时钟112、113、114、116和117。这些时钟112、113、114、116和117的每一个都具有同步的频率。即,这些时钟在时间上以本质上同样的频率前进。例如,在时钟112、113、114、116和117之间对秒、分、小时、日、月、年等的定义可以有一个共识。因此,即使当多个时钟的绝对时间不同步时,多个时钟之间时间的相对改变可以是一致的。
据此,当某段时间以后第一时钟前进若干分钟时,第二时钟(有和第一时钟同步的频率)会前进同样的分钟数的可能性是极高的。例如,可能第一时钟有绝对时间下午5:05,且第二时钟有绝对时间下午5:07。如果,在6分钟后,第一时钟前进至下午5:11,则第二时钟已前进至下午5:13的可能性是极高的。
此外,应当理解,各时钟的频率相对于彼此可能有一些漂移,而这些时钟仍可被视为具有同步的频率的时钟。例如,当通信中的计算机系统处的时钟之间的漂移率少于通信计算机系统之间的往返等待时间时,本发明的实施例尤其有利。
在某些实施例中,目的地可在源认为某消息(A)已被处理过或(B)已丢失之后,遗忘它已经处理过该消息(例如,通过从存储器中移除某个消息交互)。在实施中,当目的地(从源)收到包含对应消息ID的ACKACK头时可发生事件(A)。在实施中,当TTL到期时可发生事件(B)。即,目的地知道,如果源的TTL到期则源认为消息丢失。在某些实施例中,在最小往返延迟之后消息得到确认(发送消息,接着收到确认)。因此,可将TTL设为某个大于往返延迟的值。在实施中,将TTL设成往返延迟的倍数以支持若干次的重新发送(或设成一无限值以便于恰好一次传送(exactly-once-delivery))。
可能计算机系统107包括从包括计算机系统102、103、104和106处的客户程序等大量客户程序(例如,Web浏览器)接收电子消息的服务器(例如,Web服务器)。因此,计算机系统107可执行处理从这些客户程序中的任何一个所收到的消息的消息处理(例如,消息处理实例137)。
消息源算法
现在参考图6,图6示出使源能够可靠传送消息的方法600的示例性流程图。方法600包括向消息添加交互ID、序列号、和TTL值的动作。例如,计算机系统106可向消息152添加交互ID 152、计数153、和TTL值154。从而,消息可以是消息(ID,N,TTL,数据)的格式,其中数据增加了可靠消息通信基础结构所使用的跟踪信息。
ID唯一地标识消息源和消息目的地之间的交互。消息偏移量N可以是标识消息源和消息目的地之间的互动中某个消息的偏移量(例如,序号)的整数值。交互ID和消息偏移量N在一起可以唯一地标识一个可靠消息。TTL指示消息源将试图可靠传送某消息的持续事件。
方法600包括启动具有TTL值持续事件的倒数计时器的动作(动作602)。例如,计算机系统106可启动具有TTL值154的持续时间的倒数计时器。方法600包括发送消息的动作。例如,计算机系统106(消息源)可向计算机系统107(消息目的地)发送消息151。
可能消息源将TTL值设为消息源和消息目的地之间的往返等待时间的倍数。在某个指定的间隔(例如,等于往返等待时间),消息源可试图重新发送消息(例如,消息151)。例如,如果计算机系统106和107之间的往返等待时间为10毫秒,TTL值可设为60毫秒。将TTL值设为60毫秒将允许至少6次重新发送(取决于具体的间隔)。
方法600包括检测重新发送间隔到期的动作(动作604)。例如,计算机系统106可检测对应于消息151的重新发送间隔到期。
方法600包括判定消息是否已得到确认(判定框605)。当消息已得到确认(判定框605处为是),方法600执行动作607。例如,计算机系统106可从计算机系统107接收指示交互ID 152和计数153的ACK。从而,确认可以是ACK(ID,N)的形式,其中确认指示ID所标识的交互的消息N(或N所表示的一个或多个消息偏移量范围,诸如(1-6,10-14,16))到达消息目的地。当消息源收到ACK,消息源可更新对应的交互高速缓存(例如,交互高速缓存126),以指示某消息(例如,消息151)不再需要确认。
另一方面,当消息未得到确认(判定框605处为否),方法600在判定框606进行判定。因此,方法600可包括判定倒数计时器是否已经到期(判定框606)。例如,计算机系统106可判定基于TTL值154的倒数计时器是否已到期。当倒数计时器到期时(判定框606处为是),方法600执行动作607。另一方面,当倒数计时器还未到期时(判定框606处为否),方法600执行动作608。
方法600包括重新计算TTL值和倒数计时器的动作(动作608)。例如,计算机系统106可在检测到重新发送的间隔之后为消息151重新计算TTL值和倒数计时器。因此,如果初始TTL值为60毫秒且重新发送间隔为10毫秒,则可在重新发送消息151前将新的TTL值设为50毫秒。
方法600包括指示消息不再需要确认的动作(动作607)。例如,计算机系统106可更新交互高速缓存126以指示消息151不再需要确认。因此,计算机系统106在从计算机系统107收到确认之后,或在倒数计时器到期时,终止消息151的任何重发。
消息源可不时地或响应于来自消息目的地的请求而发送确认-确认(ACKACK),以向消息目的地指示消息源不再需要确认。例如,计算机系统106可向计算机系统107发送包括交互ID 152和计数153的ACKACK 171。从而,确认-确认可以是ACKACK(ID,N)的形式,其中确认-确认指示对于ID所标识的交互,消息源不再需要对消息N(或N所表示的一个或多个消息偏移量范围,诸如(1-3,5,8-12))的确认。ACKACK还可包括表示消息目的地处的消息处理器实例的实例ID。例如,ACKACK 171包括对应于计算机系统106已知的消息处理实例137的最后一个实例的实例ID 172。
来自消息目的地的请求可以是指示消息目的地需要交互的进度的请求确认-确认消息(图1中未示出)。由此,请求确认-确认可以是REQACKACK(ID)的形式,其中请求确认-确认指示消息目的地在继续进行之前需要ID所标识的交互的进度。源可周期性地和在收到REQACKACK(ID)时,向目的地发送ACKACK(ID,N)。
消息目的地算法
现在参考图7,图7示出使目的地能可靠传送消息的方法700的示例性流程图。方法700包括接收消息的动作。例如,计算机系统107可接收消息151(动作701)。方法700包括判定收到的实例ID(如果有的话)是否匹配当前的实例ID。例如,计算机系统107可判定实例ID 172是否匹配消息处理实例137的当前实例ID。计算机系统106可选择性地在消息151中包括实例ID 172(未图示)。但是,可要求计算机系统106将其包括在它响应于REQACKACK所发送的ACKACK消息中。例如,在收到消息151之后,计算机系统107可向计算机系统106发送REQACKACK(交互ID 152)。计算机系统106可以ACKACK(交互ID 152,消息偏移量(可能和计数153不同),实例ID 172)响应。
当收到的实例ID不匹配当前实例ID(判定框702处为否),方法700执行动作708。另一方面,当收到的实例ID匹配当前实例ID时(判定框702处为是),方法700进行判定框703处的判定。
方法700包括判定消息是否需要确认(判定框703)。例如,计算机系统107可判定消息151是否需要确认。计算机系统107可检查交互高速缓存127以判定是否先前曾收到过消息151的ACKACK。如果先前收到过ACKACK,消息151不再需要确认。可能交互高速缓存127不包括交互ID 151所标识的交互。因此,计算机系统107可向计算机系统106发送REQACKACK(交互ID 151)。响应于此,计算机系统107可从计算机系统106收到对应的ACKACK。计算机系统107可用ACKACK中的进度信息(例如,消息偏移量和实例ID)更新交互高速缓存127。
方法700包括发送确认的动作(动作704)。例如,计算机系统107可向计算机系统106发送包括实例ID 152和计数153的ACK 161以确认收到消息151。
方法700还包括判定是否要处理消息。例如,计算机系统107还可判定是否要处理消息151。当不要处理消息时(判定框705处为否),方法700执行动作708。另一方面,当要处理消息时(判定框705处为是),方法700执行动作706。
方法700包括启动倒数计时器的动作(动作706)。例如,一收到消息151,计算机系统107可启动基于TTL值154的倒数计时器。计算机系统107必需维护交互ID 152和计数153,直至计数器到期,或收到对应的ACKACK。方法700包括处理消息的动作(动作707)。例如,计算机系统107可向消息处理实例137传送消息151,消息处理实例137进而处理该消息。
方法700包括更新交互高速缓存的动作(动作709)。例如,计算机系统107可更新交互高速缓存127。交互高速缓存可在收到ACKACK(例如,ACKACK 171)之后更新,或者在倒数计时器(例如,基于TTL值154)到期之后更新。因此,计算机系统107可刷新交互高速缓存127中倒数计时器已到期且交互ID已空闲了一段时间的交互。
方法700包括弃置消息的动作(动作708)。例如,计算机系统107可弃置消息151。当实例ID不匹配时,先前收到消息的ACKACK时,先前已处理过该消息时,或某消息的倒数计时器已到期时,消息可被弃置。
消息源和消息目的地相互操作
方法600(消息源的角度)和方法700(消息目的地的角度)可相互操作以提供可靠的消息通信。在某些实施例中,在处理初始消息序列之前先设立各种预设条件。例如,消息源接收唯一地标识消息目的地端点实例(例如,消息处理实例137)的端点引用,且呈送给消息目的地端点实例的各消息之间的相关性是有意义的。每当消息目的地端点实例被初始化时,目的地可复位实例ID(例如,无状态引导时间)。此外,消息源可以还知道消息目的地的策略(如果它们存在的话),并且能够按此构造遵守任何策略的消息(例如,在WS-Metadata Exchange的帮助下)。此外,当要求安全消息交换时,消息源和消息目的地可建立安全的上下文(例如,在WS-SecureConversation的帮助下)。
甚至在当目的地从存储器周期性地移除可靠的消息通信序列信息时,其它保护可靠的消息通信序列信息的机制也是可能的。例如,消息目的地可用私钥(例如,属于某公钥/私钥对)加密会话密钥(或共享密钥),并向消息源发送该加密的会话密钥(例如,在令牌中)。消息源收到令牌并可保留该令牌供稍后使用。消息源还可用对应的公钥(属于某公钥/私钥对)将加密的会话密钥解密,以揭示未加密的会话密钥。交互中的后续消息可用此会话密钥来保护。
消息目的地可能不时地收到该消息目的地已经遗忘(即,交互ID等已从对应交互高速缓存中移除)的某个交互的消息。响应于此,消息目的地可向消息源发送REQACKACK,请求该交互的跟踪信息。响应于REQACKACK(可能包括在ACKACK中),消息源可向消息目的地发送先前收到的该交互的令牌。消息目的地可解密该令牌(它知道其自身的公钥/私钥对)以揭示对应于该交互的未加密会话密钥或共享密钥。交互中所包括的后续消息可用此会话密钥来保护。
当消息源不能提供某交互的令牌时(并因此不能提供对应的会话或共享密钥),消息目的地启动具有新的交互ID和消息ID为1的新的交互。消息目的地可随即向消息源发送新的令牌,为新的交互建立新的安全环境。由此,本发明的实施例可用于减少,或可能防止,可靠消息通信会话被截取的可能性。
此外,还可建立各种协议的变体,以确保可靠的消息通信。例如,消息源可将消息偏移量(N)初始化到1,并为交互中每个后续的消息将消息偏移量增加1。此外,确认可包括消息目的地成功地收到的、或者ACKACK中指定的除未收到的消息的消息偏移量以外的每个消息的一个或多个范围。因此,消息源发布的ACKACK可包括每个已收到ACK或TTL已到期的消息的一个或多个消息偏移量的确认范围。当TTL到期,目的地知道源认为消息(或某些范围的消息)已经丢失。因此,目的地可关闭对该消息(或该范围消息)的消息范围的确认。
因此,当在各种不同条件下收到消息的多个副本时,确保对消息处理实例进行至多一次传送。例如,当消息ID和对应的指定交互在消息目的地处的某个交互高速缓存中维护时(在TTL到期之前或之后),当消息ID(可能还有对应的指定交互)已被刷新出消息目的地处的交互高速缓存时,及当消息目的地遭受无意的存储丢失时,确保了至多一次传送。
当消息目的地处收到消息时,消息目的地判定所收到的消息是否包括实例ID。如果收到的消息不包括实例ID,并且该消息所指定的交互ID未在交互高速缓存中出现时,消息目的地向消息源发送REQACKACK。消息源以包括实例ID的ACKACK(基于所建立的协议变体)来响应。所收到的实例ID(无论是包括在消息中或ACKACK中)是向消息源指示为先前某个时间的对应消息处理器实例的当前ID(基于所建立的预设条件)的实例ID。消息目的地将收到的实例ID与对应消息处理器的当前ID相比。当收到的实例ID和当前ID不匹配时(可能指示消息目的地在指定交互期间遭受无意的存储丢失),则拒收该消息,并且使指定的交互失败。
另一方面,当收到的实例ID与当前ID匹配时(因此消息目的地在指定交互期间维护了交互高速缓存),检查来自收到的消息的其它跟踪信息。消息目的地检查对应的交互高速缓存以判定所收到消息的消息ID和交互ID是否先前被处理过。因为消息目的地可能周期性地刷新对应的交互高速缓存(但不一定立即在TTL值到期后立即刷新),交互高速缓存甚至可为过期的消息维护跟踪信息(至少某段时间)。因此,对应的交互高速缓存可指示消息先前被处理过,作为所收到的消息被传送到消息处理器实例的结果。当对应的交互高速缓存指示所收到的消息先前被处理过时,所收到的消息被弃置。
但是,可能对应的交互高速缓存不包括消息的跟踪信息。当对应的交互高速缓存不包括跟踪信息时,消息目的地向消息源发送REQACKACK。例如,可能所收到的消息先前被目的地处理过。如果对于所收到的消息所指定的交互ID,跟踪信息没有在目的地交互高速缓存中出现,则对于消息目的地处所有是指定交互的-部分的消息,倒数计时器肯定已经到期。否则,目的地消息处理器不可能已经将指定交互从其交互高速缓存中刷新掉。这指示消息的倒数计时器在消息源肯定也已经到期,因为消息源将在发送消息之前启动倒数计时器,并且消息源和消息目的地具有同步的时钟频率。
在消息源处,或通过接收先前的ACK,或通过倒数计时器到期,消息源指示(在返回的ACKACK中)不再需要对该消息的确认(即使最后在倒数计时器到期之前已发送了该消息)。消息目的地接收ACKACK,并将来自该ACKACK的跟踪信息与消息中所包括的跟踪信息对比。因为ACKACK指示不需要对该消息的确认,所以消息目的地弃置该消息。
图2示出便于在消息ID在消息目的地的交互高速缓存中维护时的可靠消息通信的第一个示例性消息流程。当在TTL到期之前收到消息的第二副本时,消息流程200确保至多一次传送。
如消息流程200中所示,源201和目的地202交换电子消息。可能源201是计算机系统102、103、104和106中的一个,目的地202是计算机系统107。源210和目的地202具有以同步的时钟频率203前进的时钟。因此,源201和目的地202处的时间值的相关改变是一致的可能性极高。例如,如果在某段时间以后,源201处的时钟前进了10分12秒,则在同一段时间以后目的地202处的对应时钟也前进了10分12秒的可能性极高。
消息流程200包括消息源201(例如,Web浏览器)发送消息204的动作。消息204包括交互ID 214、消息ID 224、存活时间(TTL)值234和数据244。交互ID 214将消息204标识为对应于消息源201和消息目的地202之间的某个指定交互。消息ID 224标识消息204在作为指定交互(对应于交互ID 214)的一部分所交换的消息序列中的位置。数据244是一部分要传输到目的地202处的某个模块(例如,消息处理器实例236)的数据(例如,应用程序数据)。TTL值234指示源201将试图传送消息204的时间长度。
基于TTL值234,消息源201可设置计时器持续时间241的计时器239。
消息目的地202(例如,Web服务器)可接收消息204。一收到消息204,消息目的地202可向消息处理器实例236传输数据244,消息处理器实例236进而处理数据244。可更新交互高速缓存237以指示消息204已被处理。例如,可更新交互高速缓存237以指示已为交互ID 214所标识的交互处理了具有消息ID 224的消息。基于TTL值234,计时器249可设置计时器持续时间251。计时器持续时间251在计时器持续时间241之后的某时到期(例如,至少再过消息204的消息等待时间)。
消息目的地202可发送包括交互ID 214和消息ID 224的ACK消息208以指示消息204已被处理。但是,消息源201可能没有收到ACK消息208(例如,由于连接消息源201和消息目的地202的网络上的通信错误)。因此,当重新发送间隔到期,消息源201可向消息目的地202发送消息204的一个额外副本。如TTL值235所示,消息源201可为消息204重新计算TTL值,令其为到计时器239到期的所剩时间。
消息目的地202可在处理消息204的较早版本以后接收消息204的额外副本。消息目的地202可从交互ID 214和消息ID 224标识消息的额外副本。消息目的地202可检查交互高速缓存237并判定具有消息ID 224并对应于交互ID 214所标识的指定交互的消息(即,消息204)是否先前被处理过。由此,消息目的地可基于指示具有该消息ID 224的消息先前已被处理过的交互高速缓存237,弃置消息204的额外副本。
消息流程200还可在TTL到期之后收到消息的第二副本时确保至多一次传送。例如,TTL值234可替换地使计时器239设置计时器持续时间242,并使计时器249设置计时器持续时间252。计时器持续时间252在计时器持续时间242之后的某个时间到期(例如,至少再过消息204的消息等待时间)。
因此,如图2中所示,消息目的地202可在计时器持续时间252到期之后接收消息204的额外副本。但是,消息目的地202可在将交互ID 214和消息ID 224从存储器刷新掉之前等待一些时间。因此,当收到消息204的额外副本时,交互高速缓存237仍然包括交互ID 214和消息ID 224,即使消息持续时间252已经到期。因此,消息目的地202可基于指示具有消息ID 224的消息先前已经被处理过的交互高速缓存237而拒收消息204的额外副本。由此,在交互高速缓存维护消息ID时确保了至多一次传送。
图3示出便于在消息ID被从消息目的地的交互高速缓存中被刷新掉时可靠地处理消息的第二个示例性消息流程。消息流程300在对应消息偏移量已从存储器刷新掉之后收到消息的第二副本时确保至多一次传送。
如消息流程300中所示,消息源301和消息目的地302交换电子消息。可能源301是计算机系统102、103、104和106中的一个,消息目的地302是计算机系统107。消息源301和消息目的地302可具有以同步的时钟频率303前进的时钟。因此,消息源301和消息目的地302处的时间值的相对变化一致的可能性极高。例如,如果在某段时间之后,消息源301处的时钟前进了8分24秒,则在同一段时间之后消息目的地302处的对应时钟也前进了8分24秒的可能性极高。
消息源301(例如,Web浏览器)发送消息304。消息304包括交互ID 314、消息ID 324、存活时间(TTL)值334和数据344。交互ID 314将消息304标识成对应于具有消息目的地302的指定交互。消息ID 342标识消息304在作为指定交互(对应于交互ID 314)的一部分所交换的消息序列中的消息序列位置。数据344是一部分要传送到消息目的地302处的某个模块(例如,到消息处理器实例336)的数据(例如,应用程序数据)。TTL值334指示消息源301将试图传送消息304的时间长度。
基于TTL值334,消息源301可设置计时器持续时间341的计时器339。
消息目的地302(例如,Web服务器)可接收消息304。一收到消息304,消息目的地302可向消息处理器实例336传送数据344,消息处理器实例336进而处理数据344。可更新交互高速缓存337以指示消息304已被处理。例如,可更新交互缓存337以指示已为交互ID 314所标识的交互处理了具有消息ID 324的消息。基于TTL值334,计时器349可设置计时器持续时间351。计时器持续时间351在计时器持续时间341之后的某个时间到期(例如,至少再过消息304的消息等待时间)。
消息目的地302可发送包括交互ID 314和消息ID 324的ACK消息308以指示消息304已被处理。但是,消息源301可能没有收到ACK消息308(例如,由于连接消息源301和消息目的地302的网络上的通信错误)。因此,当重新发送间隔到期,消息源301可向消息目的地302发送消息304的额外副本。消息目的地302从消息源301接收消息304的额外副本。如TTL值335所示,消息源301可为消息304重新计算TTL值,令其为计时器339到期所剩的时间。
计时器持续时间351到期之后,消息ID 324(及还可能有交互ID 314)被从交互高速缓存337刷新掉。如消息流程300中所示,消息304的额外副本在计时器持续时间341到期之前从消息源301发送,并在计时器持续时间351到期之后在消息目的地302收到。在消息ID 324(及还可能有交互ID 314)从交互高速缓存337中被移除之后,消息目的地302还收到消息304的额外副本。因此,当收到消息目的地302的额外副本时,交互高速缓存337不包括消息304的跟踪信息。
由此,消息目的地302可向消息源301发送包括交互ID 314的REQACKACK306。REQACKACK 306是对交互ID 314所标识的交互的进度的指示的请求。此外,在发送了消息304的额外副本之后的某个时间,计时器持续时间(341或其等效时间)到期,且消息源301更新交互高速缓存327以指示消息104不再需要确认。例如,可更新交互高缓存速缓存327以指示对于交互ID 314所标识的交互,具有消息ID 324的消息不再需要确认。因此,响应于REQACKACK 306,消息源301向消息目的地302发送包括交互ID 314和消息偏移量324的ACKACK 307。ACKACK307指示交互ID 324所标识的交互已经进展至具有消息ID 324的消息可被弃置(即,不需要确认)的程度。因此,消息目的地302弃置消息304的额外副本。
一般而言,消息目的地302被配置成在不终止参与某个交互的情况下,从存储器移除涉及该交互的跟踪信息(即,遗忘跟踪信息)。当消息目的地302收到对应于没有包括在交互高速缓存337中的交互的消息,消息目的地302向适当的消息源(例如,消息源301)发送REQACKACK。消息源通过向消息目的地302返回包括该交互有关跟踪信息的对应ACKACK来响应。因此,适当的消息源可用适当的跟踪信息更新消息目的地。由此,即使在交互高速缓存已被刷新时,仍可确保至多一次传送。
图4示出便于在消息目的地遭受无意的存储丢失时可靠地处理消息的第三个示例性消息流程。消息流程400在无意的存储丢失后收到消息的第二副本时确保至多一次传送。
如消息流程400中所示,消息源401和消息目的地402交换电子消息。可能消息源401是计算机系统102、103、104和106中的一个,消息目的地402是计算机系统107。源401和目的地402可具有以同步的时钟频率403前进的时钟。因此,消息源401和消息目的地402处的时间值的相对改变一致的可能性极高。例如,如果在某段时间之后,消息源401处的时钟前进了8分24秒,则在同一段时间以后消息目的地402处的对应时钟也前进了8分24秒的可能性极高。
消息源401(例如,Web浏览器)发送消息404。消息404包括交互ID 414、消息ID 424、数据444,并可选择性地包括(如虚线所示)实例ID 452。交互ID 414将消息404标识为对应于与消息目的地402的指定交互。消息ID 424标识消息404在作为指定交互(对应于交互ID 314)的一部分所交换的消息序列中的消息序列位置。数据344是要传输到消息目的地402处的某个模块(例如,到消息处理器实例451)的数据(例如,应用程序数据)。实例ID 452是向消息源指示为先前某个时间的消息处理器实例451的当前实例ID的实例ID(基于建立的预定条件)。
消息目的地402(例如,Web浏览器)收到对应于实例ID 452的消息404。已检测到消息404中的实例ID和消息处理实例451的当前实例ID(例如,实例ID452)相匹配时,消息目的地402即对跟踪信息进行其它检查。在适当时候,消息目的地402向消息处理器实例451传送数据444,消息处理器实例451进而处理数据444。可更新交互高速缓存437以指示消息404已被处理。例如,可更新交互高速缓存437以指示已为交互ID 414所标识的交互处理了具有消息ID 424的消息。
在处理消息404之后,消息目的地402可能遭受无意的存储丢失(包括交互高速缓存437的内容)。因此,消息目的地402检测到(例如,在重新启动序列期间)消息目的地402所用的存储器内容无意地丢失了。因此,消息目的地402可将消息处理器实例451重新初始化成具有和在先实例ID 452不同的更新实例ID 462。
因为消息源401没有收到对消息404的确认,消息源401可试图重新发送消息404的额外副本(例如,当重新发送间隔到期时)。如图所示,消息404的额外副本选择性地包括实例ID 452。消息目的地402将消息404的额外副本中所包括的实例ID(实例ID 452)与消息处理器实例的当前实例ID(实例ID 462)对比。消息目的地402拒收该消息(使对应于交互ID 414的交互失败),因为消息404的额外副本对应于实例ID 452而不是实例ID 462。
当实例ID没有包括在消息404中时,消息目的地402可选择性地发送REQACKACK来请求对应于交互ID 414的交互的进度。消息源401可用包括交互ID 414、消息ID 424和实例ID 452的ACKACK 407来响应。从ACKACK 407,消息目的地402可判定应拒收消息404的额外副本(对应于交互ID 414的交互将失败)。此外,REQACKACK 406可选择性地包括实例ID 462。因此,消息源401可在新的交互的开始学习消息处理器实例451的实例ID。即,当REQACKACK包含目的地实例ID时,源可检测到目的地已经重新启动。因此,当目的地遭受无意的存储丢失时,确保了至多一次传送。
一般而言,应当理解在确认(ACK和ACKACK)中可包括多个消息偏移量ID。例如,确认可包括交互中某个范围的消息偏移量(例如,19-23)、交互中消息偏移量的列表(例如,1、4、7)、或交互中的消息偏移量的范围和列表的组合(例如,3、7、14-19、22、24-26)。还应理解,可将ACK和REQACKACK定义为消息头(诸如在SOAP处理模型中),从而可将其附到从目的地到源的任何消息流中。类似地,可将ACKACK定义为消息头,从而可将其附到从消息源到目的地的任何消息流中。
此外,因为ACKACK消息向消息目的地指示不需要确认的消息(或者因为收到了对应的ACK,或者因为这些消息已到期),所以ACKACK消息可用于消除确认范围之间的空隙。即,ACKACK的使用可使消息目的地将确认范围和列表合并成单个范围。例如,消息源可能收到确认1-10、13-15和17-20范围的消息的ACK消息。接着,消息ID 11和12在消息源处到期。因此,响应于在消息ID 11和12到期之后收到的REQACKACK,已发送的ACKACK可指示消息ID 1-15和17-20不再需要确认。因此,ACKACK可限制确认的大小,从而防止对于长期存在的交互,确认的大小不停地增长。
本发明的实施例还可在例如TTL值为无限且不使用实例ID时用于恰好一次传送。
此外,应当理解,消息流程200、300和400在任何给定时间,通过网络在多个计算机系统之间实施。例如,计算机系统102、103、104和106(以及连到网络101的其它计算机系统)的每一个可作为实现与计算机系统107的消息流程200、300和400的部件(可能同时地)交换消息。计算机系统102、103、104和106(以及连到网络101的其它计算机系统)的每一个可适当地在同一时间或不同时间实现消息流程200、300、400。此外,计算机系统102、103、104和106(以及连到网络101的其它计算机系统)的每一个可实现多个与计算机系统107的消息流程200、300、400。可能消息流程200、300和400的每个实例对应于不同的交互ID。
图5示出本发明的原理的合适的操作环境。图5和以下描述旨在提供可实现本发明的合适计算环境的简单、一般的描述。尽管不是必需,将在诸如计算机系统所执行的程序模块等计算机可执行指令的通用上下文中描述本发明。一般而言,程序模块包括执行特定任务或实现特定抽象数据结构的例程、程序、对象、组件、数据结构等等。计算机可执行指令、相关联的数据结构、和程序模块表示用于执行本文所揭示的方法的动作的程序代码手段的例子。
参考图5,用于实现本发明的示例性系统包括计算机系统520形式的通用计算设备,它包括处理单元521、系统存储器522和将包括系统存储器522在内的各个系统组件耦合到处理单元521的系统总线523。处理单元521可执行设计成包括本发明的特征在内的计算机系统520的特征的计算机可执行指令。系统总线523可以是若干种总线结构中的任何一种,包括存储器总线或存储器控制器、外围总线、使用各种总线体系结构中的任何一种的局部总线。系统存储器包括只读存储器(“ROM”)524和随机存取存储器(“RAM”)525。包含在诸如启动期间帮助在计算机系统520内部各元件之间传输信息的基本例程的基本输入/输出系统(“BIOS”)526可存储在ROM 524中。
计算机系统520还可包括读或写硬磁盘539的硬磁盘驱动器527、读或写可移动磁盘529的磁盘驱动器528、以及读或写诸如CD-ROM或其它光介质等可移动光盘531的光盘驱动器530。硬磁盘驱动器527、磁盘驱动器528以及光盘驱动器530分别由硬盘驱动器接口532、磁盘驱动器接口533以及光盘驱动器接口534连接到系统总线523。这些驱动器和相关的计算机可读介质为计算机系统520提供了计算机可执行指令、数据结构、程序模块及其它数据的非易失性存储。尽管本文所描述的示例环境使用硬磁盘539、可移动磁盘529和可移动光盘531,还可使用用于储存数据的其它类型的计算机可读介质,包括磁带盒、闪存卡、数字多功能盘、贝努利盒式磁带、RAM、ROM等等。
包含一个或多个程序模块的程序代码手段,包括操作系统535、一个或多个应用程序536、其它程序模块537以及程序数据538,可存储于硬盘539、磁盘529、光盘531、ROM 524或RAM 525中。用户可以通过键盘540、定位设备542或诸如话筒、操纵杆、游戏垫、扫描仪等其它输入设备(未图示),来将命令和信息输入到计算机系统520。这些及其它输入设备可通过耦合到系统总线523的输入/输出接口546连接到处理单元521。输入/输出接口546逻辑上代表各种不同的接口中的任意一种,诸如串行端口接口、PS/2接口、并行端口接口、通用串行总线(“USB”)接口、或电气与电子工程师协会(“IEEE”)1394接口(即,火线接口),或者甚至可逻辑上代表不同接口的组合。
监视器547或其它显示设备通过视频接口548也连接到系统总线523。诸如扬声器和打印机等其它外围设备(未图示)也可连接至计算机系统420。
计算机系统520可连接到各种网络,诸如办公室范围或企业范围的计算机网络、家庭网络、内联网和/或因特网。计算机系统520可通过此类网络与诸如远程计算机系统、远程应用程序和/或远程数据库等外部源交换数据。
计算机系统520包括网络接口553,通过此接口计算机系统520从外部源接收数据,和/或发送数据到外部源。如图5中所示,网络接口553便于通过链路551与远程计算机系统583交换数据。网络接口553逻辑上可以表示一个或多个软件和/或硬件模块,诸如网络接口卡和对应的网络驱动程序接口规范(“NDIS”)栈。链路551表示网络的一部分(例,以太网段),远程计算机系统583表示该网络的一个节点。
类似地,计算机系统520包括输入/输出接口546,通过该接口计算机系统520从外部源接收数据和/或向外部源发送数据。输入/输出接口546经由链路559耦合到调制解调器554(例如,标准调制解调器、电缆调制解调器或数字用户线(“DSL”)调制解调器),通过调制解调器计算机系统520从外部源接收数据和/或向外部源发送数据。如图5中所示,输入/输出接口546和调制解调器554便于通过链路552与远程计算机系统593交换数据。链路552表示网络的一部分,远程计算机系统593表示该网络的一个节点。
尽管图5表示本发明的一个合适的操作环境,然而本发明的原理可在能够实现本发明原理的任何系统(若有必要,可进行适当修改)中使用。图5中所示的环境只是示例性的,决非代表众多的可在其中实现本发明原理的环境的即使一小部分。
根据本发明,包括消息处理器示例和时钟以及包括交互ID、消息ID、TTL值、实例ID、计数、数据和交互高速缓存在内的相关联数据,可存储在与计算机系统520相关联的任意计算机可读介质中,并可从这些介质被访问。例如,部分此类模块和部分相关联的程序数据可包括在操作系统535、应用程序536、程序模块537和/或程序数据538中,以在系统存储器522中存储。
当诸如磁硬盘539等大容量存储设备耦合至计算机系统520,此类模块和相关联的程序数据也可存储在该大容量存储设备中。在联网环境中,相对于计算机系统520所描绘的程序模块或其部分,可存储在远程存储设备中,诸如与远程计算机系统583和/或远程计算机系统593相关联的系统存储器和/或大容量存储设备。可在如前所述的分布式环境下执行此类模块。
本发明能以其它具体形式实现而不会偏离其精神和本质特征。在任何方面所述的实施例均仅被视为示例性的,而非限制性的。因而,本发明范围由所附权利要求书而非之前的描述所指示。落入权利要求书的等效技术方案的意义和范围内的所有改变将被包含在它们的范围中。

Claims (50)

1.在网络上可与一个或多个其它计算机系统一起连接到网络的目的地计算机系统处,所述目的地计算机系统和所述其它计算机系统中的至少一个具有同步的时钟频率,一种可靠地处理消息的方法,所述方法包括:
接收具有消息ID和TTL值的消息的第一副本的动作,所述消息ID标识所述消息在一消息源和所述目的地计算机系统之间的交互中的位置,所述TTL值指示所述消息将何时到期;
更新交互高速缓存以指示已经收到所述消息的动作;
在处理了所述消息的第一副本以后接收所述消息的第二副本的动作,所述消息的第二副本具有所述消息ID;以及
基于指示先前已经处理过具有所述消息ID的消息的交互高速缓存弃置所述消息的第二副本的动作。
2.如权利要求1所述的方法,其特征在于,接收消息的第一副本的动作包括接收包括所述消息ID、交互ID、所述TTL值和应用程序数据的消息第一副本的动作,所述交互ID标识所述消息源和所述目的地计算机系统之间的一特定交互,所述消息源和目的地计算机系统的时钟频率是同步的。
3.如权利要求2所述的方法,其特征在于,更新交互高速缓存以指示已经收到所述消息的动作包括将所述消息ID和所述交互ID存储到所述交互高速缓存中的动作。
4.如权利要求1所述的方法,其特征在于,还包括:
在处理所述消息之后向所述消息源发送收到所述消息的确认的动作。
5.如权利要求1所述的方法,其特征在于,接收所述消息的第二副本的动作包括在基于所述TTL值的倒数计时器到期之前接收所述消息的第二副本的动作。
6.如权利要求1所述的方法,其特征在于,接收所述消息的第二副本的动作包括在基于所述TTL值的倒数计时器到期之后接收所述消息的第二副本的动作。
7.如权利要求1所述的方法,其特征在于,基于所述交互高速缓存弃置所述消息的第二副本的动作包括判定所述第二消息中所包括的消息ID和交互ID是存储在所述交互高速缓存中的动作。
8.如权利要求1所述的方法,其特征在于,所述目的地计算机系统包括Web服务器,并且所述消息源是Web浏览器。
9.如权利要求1所述的方法,其特征在于,还包括:
向所述消息源发送包括加密的会话密钥的令牌的动作,所述会话密钥是用一公钥/私钥对中的私钥来加密的,所述会话密钥用于保护所述消息源和所述目的地计算机系统之间的交互。
10.如权利要求9所述的方法,其特征在于,
在已从所述交互高速缓存中移除所述交互之后接收所述安全令牌的动作;
解密所述令牌以揭示所述会话密钥的动作;以及
即使在已从所述交互高速缓存中移除所述交互的情况下仍使用所述会话密钥来保护所述交互的动作。
11.在网络上可与一个或多个其它计算机系统一起连接到网络的目的地计算机系统处,所述目的地计算机系统和所述其它计算机系统中的至少一个具有同步的时钟频率,一种可靠地处理消息的方法,所述方法包括:
接收具有交互ID、消息ID和TTL值的消息的第一副本的动作,所述消息ID标识所述消息在所述交互ID所指定的交互中的位置,所述TTL值指示所述消息何时将到期;
在基于所述TTL值的倒数计时器到期之后从交互高速缓存中至少移除所述消息ID的动作;
在从所述交互高速缓存中移除所述消息ID之后接收所述消息的第二副本的动作;
向消息源发送对所述交互ID的进度的指示的请求的动作,所述消息源具有与所述目的地计算机系统的时钟频率同步的时钟频率;
接收所述交互已经进展到可弃置具有所述消息ID的消息的指示的动作;以及
弃置所述消息的第二副本的动作。
12.如权利要求11所述的方法,其特征在于,还包括:
从所述消息源接收所述消息的第一副本的动作,所述消息的第一副本包括应用程序数据;以及
向对应的消息处理器实例传送所述应用程序数据的动作。
13.如权利要求11所述的方法,其特征在于,还包括:
更新所述交互高速缓存以指示在从所述交互高速缓存移除所述消息ID之前已经收到所述消息的动作。
14.如权利要求11所述的方法,其特征在于,从交互高速缓存至少移除所述消息ID的动作包括在不终止对所述交互的参与的情况下,遗忘由所述交互ID指定的交互的进度的动作。
15.如权利要求11所述的方法,其特征在于,还包括:
在处理所述消息以后向所述消息源发送已经收到所述消息的确认的动作。
16.如权利要求11所述的方法,其特征在于,从所述交互高速缓存移除所述消息ID的动作包括检测所述交互ID所标识的交互已经空闲了一指定时间段。
17.如权利要求11所述的方法,其特征在于,从所述交互高速缓存移除所述消息ID的动作包括移除所述交互ID所指定的整个交互。
18.如权利要求11所述的方法,其特征在于,还包括:
在收到所述消息的第二副本之后,检测所述交互高速缓存不包括由所述消息的第二副本中所包括的交互ID所标识的交互的消息ID的动作。
19.如权利要求11所述的方法,其特征在于,向所述消息源发送对所述交互ID的进度的指示的请求包括发送REQACKACK的动作。
20.如权利要求21所述的方法,其特征在于,发送REQACKACK的动作包括发送包括一个或多个所述交互ID和一实例ID的REQACKACK的动作。
21.如权利要求11所述的方法,其特征在于,接收所述交互已经进展到可弃置具有所述消息ID的消息的指示的动作包括从所述消息源接收ACKACK的动作,所述ACKACK包括所述消息ID和所述交互ID。
22.如权利要求11所述的方法,其特征在于,接收所述交互已经进展到可弃置具有所述消息ID的消息的指示的动作包括接收ACKACK的动作,所述ACKACK还指示一个或多个附加消息ID在所述消息源处已经超时且不再需要确以。
23.如权利要求11所述的方法,其特征在于,接收所述交互已经进展到可弃置具有所述消息ID的消息的指示的动作包括接收涉及所述交互的进度信息的动作,从而即使先前已从所述交互高速缓存移除了所述交互的进度,所述目的地计算机系统仍可参与所述交互。
24.如权利要求11所述的方法,其特征在于,接收所述交互已经进展到可弃置具有所述消息ID的消息的指示的动作包括接收包括所述消息ID、交互ID和安全令牌的ACKACK的动作。
25.如权利要求11所述的方法,其特征在于,弃置所述消息的第二副本的动作包括判定所述第二消息中所包括的消息ID和交互ID与所述ACKACK中的消息ID和交互ID相匹配。
26.如权利要求11所述的方法,其特征在于,所述目的地计算机系统包括Web服务器,并且所述消息源是Web浏览器。
27.在网络上可与一个或多个其它计算机系统一起连接到网络的目的地计算机系统处,一种可靠地处理消息的方法,所述方法包括:
从消息源接收消息的第一副本的动作,所述消息的第一副本与一已设立实例ID相关联;
在被初始化成具有所述已设立实例ID的消息处理器实例处处理所述消息的第一副本的动作;
检测所述目的地计算机系统使用的存储器内容被无意地丢失的动作;
将所述消息处理器实例重新初始化成具有与所述已设立实例ID不同的更新的实例ID的动作;
在重新初始化所述消息处理器实例之后接收所述消息的第二副本的动作,所述消息的第二副本与所述已设立实例ID相关联;以及
因为所述消息的第二副本对应于与所述更新的实例ID不同的实例ID而拒收所述消息的第二副本的动作。
28.如权利要求27所述的方法,其特征在于,接收消息的第一副本的动作包括接收包括所述已设立实例ID的消息的第一副本的动作。
29.如权利要求27所述的方法,其特征在于,接收消息的第一副本的动作包括:
接收所述消息的第一副本的动作;
向所述消息源发送REQACKACK的动作;以及
接收包括所述已设立实例ID的ACKACK的动作。
30.如权利要求27所述的方法,其特征在于,在消息处理器实例处处理所述消息的第一副本的动作包括判定与所述第一消息相关联的已设立实例ID是所述消息处理器实例的当前实例ID的动作。
31.如权利要求27所述的方法,其特征在于,在消息处理器实例处处理所述消息的第一副本的动作包括向所述消息处理器实例传送所述消息中包含的应用程序数据的动作。
32.如权利要求27所述的方法,其特征在于,检测所述目的地计算机系统使用的存储器内容被无意地丢失的动作包括检测交互高速缓存的内容被丢失。
33.如权利要求27所述的方法,其特征在于,将所述消息处理器实例重新初始化成具有更新的实例ID的动作包括生成更新的实例ID。
34.如权利要求27所述的方法,其特征在于,接收所述消息的第二副本的动作包括接收包括所述已设立实例ID的消息的第二副本的动作。
35.如权利要求27所述的方法,其特征在于,接收所述消息的第二副本的动作包括:
接收所述消息的第二副本的动作;
向所述消息源发送REQACKACK的动作;以及
接收包括所述已设立实例ID的ACKACK的动作。
36.如权利要求27所述的方法,其特征在于,拒收所述消息的第二副本的动作包括判定所述已设立实例ID和所述更新的实例ID不同的动作。
37.如权利要求27所述的方法,其特征在于,还包括:
使所述消息中的交互ID所标识的交互失败的动作。
38.如权利要求27所述的方法,其特征在于,所述目的地计算机系统包括Web服务器,并且所述消息源是Web浏览器。
39.在网络上可与一个或多个其它计算机系统一起连接到网络的源计算机系统处,其中所述源计算机系统和所述其它计算机系统中的至少一个具有同步的时钟频率,一种可靠地处理消息的方法,所述方法包括:
向具有与所述源计算机系统的时钟频率同步的时钟频率的消息目的地发送具有交互ID、消息ID和TTL值的消息第一副本的动作,所述消息ID标识所述消息在所述交互ID所指定的交互中的位置,且所述TTL值指示所述消息何时将到期;
在发送所述消息的第一副本之后向所述消息目的地发送所述消息的第二副本的动作,所述消息的第二副本具有所述交互ID、所述消息ID和更新的TTL值,所述更新的TTL值是从所述TTL值以及从发送所述消息的第一副本起已经过去的时间计算得出的;
检测所述消息不再需要确认的动作;以及
更新交互高速缓存以指示所述消息不再需要确认的动作。
40.如权利要求39所述的方法,其特征在于,还包括:
基于所述TTL值设置消息计时器持续时间的动作。
41.如权利要求39所述的方法,其特征在于,发送所述消息的第二副本的动作包括以重新发送间隔来发送所述消息的第二副本。
42.如权利要求39所述的方法,其特征在于,还包括:
在发送所述消息的第二副本之后发送所述消息的至少一个额外副本的动作,所述消息的每个额外副本包括所述交互ID、所述消息ID和对应的TTL值,每个对应的TTL值是从紧接着的前一个对应TTL值和从发送所述消息的紧接着的前一个副本开始已经过去的时间计算得出的。
43.如权利要求39所述的方法,其特征在于,检测所述消息不再需要确认的动作包括从所述消息目的地接收对所述消息的确认的动作。
44.如权利要求39所述的方法,其特征在于,检测所述消息不再需要确认的动作包括检测基于所述TTL值的消息计时器持续时间已经到期的动作。
45.如权利要求39所述的方法,其特征在于,更新交互高速缓存以指示所述消息不再需要确认的动作包括将所述消息ID和交互ID存储到所述交互高速缓存中。
46.如权利要求39所述的方法,其特征在于,还包括:
从所述消息目的地接收REQACKACK的动作,所述REQACKACK请求所述交互ID所标识的交互的进度;以及
发送指示所述交互已经进展至所述消息ID所标识的消息的ACKACK,从而使所述消息目的地知道所述消息不需要确认的动作。
47.如权利要求39所述的方法,其特征在于,所述源计算机系统包括Web浏览器,并且所述消息目的是Web服务器。
48.如权利要求39所述的方法,其特征在于,还包括:
发送指示即使从未收到对所述消息的确认,所述消息也不再需要确认的ACKACK的动作。
49.如权利要求39所述的方法,其特征在于,还包括:
从消息目的地接收令牌的动作,所述令牌包括用一公钥/私钥对中的私钥加密的加密会话密钥,所述会话密钥用于保护所述消息目的地和所述源计算机系统之间的交互;
用所述公钥/私钥对中的公钥解密所述令牌以揭示所述会话密钥的动作;以及
用所揭示的会话密钥来保护向所述消息目的发送的后续通信的动作。
50.如权利要求49所述的方法,其特征在于,还包括:
响应于REQACKACK接着向所述消息目的地发送所收到的令牌的动作,从而使所述消息目的能够与所述源计算机系统建立安全环境。
CN2005101133088A 2004-09-21 2005-09-21 使用具有同步频率的时钟的可靠的消息通信 Expired - Fee Related CN1753391B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/946,386 US7483943B2 (en) 2004-09-21 2004-09-21 Reliable messaging using clocks with synchronized rates
US10/946,386 2004-09-21

Publications (2)

Publication Number Publication Date
CN1753391A true CN1753391A (zh) 2006-03-29
CN1753391B CN1753391B (zh) 2010-09-01

Family

ID=35519628

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2005101133088A Expired - Fee Related CN1753391B (zh) 2004-09-21 2005-09-21 使用具有同步频率的时钟的可靠的消息通信

Country Status (10)

Country Link
US (2) US7483943B2 (zh)
EP (1) EP1638291A3 (zh)
JP (1) JP4906295B2 (zh)
KR (1) KR101150039B1 (zh)
CN (1) CN1753391B (zh)
AU (1) AU2005203662B2 (zh)
BR (1) BRPI0503846A (zh)
CA (2) CA2895067A1 (zh)
MX (1) MXPA05009681A (zh)
RU (1) RU2387001C2 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101651526B (zh) * 2008-08-14 2013-02-13 武汉光发科技有限公司 一种网络设备间的消息传递方法
CN108055169A (zh) * 2011-09-02 2018-05-18 贸易技术国际公司 消息流完整性

Families Citing this family (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7676580B2 (en) * 2003-03-27 2010-03-09 Microsoft Corporation Message delivery with configurable assurances and features between two endpoints
US7421048B2 (en) * 2005-01-20 2008-09-02 Vixs Systems, Inc. System and method for multimedia delivery in a wireless environment
US7444135B2 (en) * 2005-07-08 2008-10-28 Research In Motion Limited Updating availability of an instant messaging contact
US7992203B2 (en) 2006-05-24 2011-08-02 Red Hat, Inc. Methods and systems for secure shared smartcard access
US8364952B2 (en) * 2006-06-06 2013-01-29 Red Hat, Inc. Methods and system for a key recovery plan
US8332637B2 (en) 2006-06-06 2012-12-11 Red Hat, Inc. Methods and systems for nonce generation in a token
US7822209B2 (en) 2006-06-06 2010-10-26 Red Hat, Inc. Methods and systems for key recovery for a token
US8495380B2 (en) 2006-06-06 2013-07-23 Red Hat, Inc. Methods and systems for server-side key generation
US8180741B2 (en) 2006-06-06 2012-05-15 Red Hat, Inc. Methods and systems for providing data objects on a token
US8098829B2 (en) * 2006-06-06 2012-01-17 Red Hat, Inc. Methods and systems for secure key delivery
US8099765B2 (en) 2006-06-07 2012-01-17 Red Hat, Inc. Methods and systems for remote password reset using an authentication credential managed by a third party
US8412927B2 (en) 2006-06-07 2013-04-02 Red Hat, Inc. Profile framework for token processing system
US9769158B2 (en) * 2006-06-07 2017-09-19 Red Hat, Inc. Guided enrollment and login for token users
US8707024B2 (en) * 2006-06-07 2014-04-22 Red Hat, Inc. Methods and systems for managing identity management security domains
US8589695B2 (en) * 2006-06-07 2013-11-19 Red Hat, Inc. Methods and systems for entropy collection for server-side key generation
US8806219B2 (en) 2006-08-23 2014-08-12 Red Hat, Inc. Time-based function back-off
US8787566B2 (en) * 2006-08-23 2014-07-22 Red Hat, Inc. Strong encryption
US9038154B2 (en) * 2006-08-31 2015-05-19 Red Hat, Inc. Token Registration
US8977844B2 (en) * 2006-08-31 2015-03-10 Red Hat, Inc. Smartcard formation with authentication keys
US8074265B2 (en) * 2006-08-31 2011-12-06 Red Hat, Inc. Methods and systems for verifying a location factor associated with a token
US8356342B2 (en) * 2006-08-31 2013-01-15 Red Hat, Inc. Method and system for issuing a kill sequence for a token
US8806045B2 (en) * 2006-09-01 2014-08-12 Microsoft Corporation Predictive popular content replication
US20080059591A1 (en) * 2006-09-01 2008-03-06 Martin Denis Optimized message counting
US8255457B2 (en) * 2006-09-01 2012-08-28 Microsoft Corporation Adaptive content load balancing
WO2008029793A1 (fr) * 2006-09-05 2008-03-13 Nec Corporation Procédé de récupération de paquets, système de communication, dispositif de traitement d'informations et programme
US8693690B2 (en) * 2006-12-04 2014-04-08 Red Hat, Inc. Organizing an extensible table for storing cryptographic objects
US8813243B2 (en) * 2007-02-02 2014-08-19 Red Hat, Inc. Reducing a size of a security-related data object stored on a token
US8639940B2 (en) * 2007-02-28 2014-01-28 Red Hat, Inc. Methods and systems for assigning roles on a token
US8832453B2 (en) 2007-02-28 2014-09-09 Red Hat, Inc. Token recycling
US9081948B2 (en) * 2007-03-13 2015-07-14 Red Hat, Inc. Configurable smartcard
US20080270629A1 (en) * 2007-04-27 2008-10-30 Yahoo! Inc. Data snychronization and device handling using sequence numbers
US7855975B2 (en) * 2007-05-30 2010-12-21 Sap Ag Response time estimation for intermittently-available nodes
US8214847B2 (en) * 2007-11-16 2012-07-03 Microsoft Corporation Distributed messaging system with configurable assurances
US8200836B2 (en) * 2007-11-16 2012-06-12 Microsoft Corporation Durable exactly once message delivery at scale
JP5045472B2 (ja) * 2008-02-07 2012-10-10 富士通株式会社 メール管理装置、メール管理方法およびメール管理プログラム
EP2107708A1 (en) * 2008-04-04 2009-10-07 Deutsche Thomson OHG Method for transporting data over a data connection and network component
US8261286B1 (en) * 2008-06-18 2012-09-04 Amazon Technologies, Inc. Fast sequential message store
US10362131B1 (en) 2008-06-18 2019-07-23 Amazon Technologies, Inc. Fault tolerant message delivery
US20100070588A1 (en) * 2008-09-15 2010-03-18 Yahoo! Inc. Reliability for instant messaging based on end point acknowledgements
US8644186B1 (en) 2008-10-03 2014-02-04 Cisco Technology, Inc. System and method for detecting loops for routing in a network environment
US8370443B2 (en) * 2009-09-08 2013-02-05 Microsoft Corporation Reliable messaging using publish subscribe mechanism
US8902765B1 (en) 2010-02-25 2014-12-02 Integrated Device Technology, Inc. Method and apparatus for congestion and fault management with time-to-live
US8452888B2 (en) * 2010-07-22 2013-05-28 International Business Machines Corporation Flow control for reliable message passing
US8520723B2 (en) 2010-12-09 2013-08-27 Qualcomm Incorporated Universal real-time interface for wireless modems
US8681631B2 (en) * 2012-05-31 2014-03-25 Cisco Technology, Inc. Loop dampening in a computer network
US9560006B2 (en) * 2012-07-26 2017-01-31 Google Inc. Method and apparatus for expiring messages in electronic communications
US8996860B1 (en) 2012-08-23 2015-03-31 Amazon Technologies, Inc. Tolerance factor-based secret decay
US9203818B1 (en) * 2012-08-23 2015-12-01 Amazon Technologies, Inc. Adaptive timeouts for security credentials
US9038148B1 (en) 2012-08-23 2015-05-19 Amazon Technologies, Inc. Secret variation for network sessions
US9161287B2 (en) * 2012-10-16 2015-10-13 Spectranetix, Inc. Technique for efficient message delivery in Ad Hoc, mesh, wireless computer networks
US10567349B2 (en) 2013-06-25 2020-02-18 Wickr Inc. Secure time-to-live
JP6404911B2 (ja) 2013-09-20 2018-10-17 オラクル・インターナショナル・コーポレイション ネットワーク通信環境における仲介主体のための信頼できるメッセージングのための手法
US9922350B2 (en) * 2014-07-16 2018-03-20 Software Ag Dynamically adaptable real-time customer experience manager and/or associated method
US10380687B2 (en) 2014-08-12 2019-08-13 Software Ag Trade surveillance and monitoring systems and/or methods
US9449218B2 (en) 2014-10-16 2016-09-20 Software Ag Usa, Inc. Large venue surveillance and reaction systems and methods using dynamically analyzed emotional input
FR3034280B1 (fr) * 2015-03-25 2017-03-24 Traxens Procede de communication au sein d'une grappe de profondeur dynamique de dispostifs electroniques communicants, dispositif electronique mettant en oeuvre ledit procede et systeme associes
CN106970921B (zh) * 2016-01-14 2020-10-16 阿里巴巴集团控股有限公司 一种数据迁移方法及装置
FR3055985B1 (fr) * 2016-09-15 2018-10-05 Alstom Transp Tech Procede de synchronisation d'un systeme par utilisation d'un temps de validite pour chaque signal de sortie
US10447623B2 (en) * 2017-02-24 2019-10-15 Satori Worldwide, Llc Data storage systems and methods using a real-time messaging system
US11252166B2 (en) * 2019-07-31 2022-02-15 Advanced New Technologies Co., Ltd. Providing data authorization based on blockchain
CN110473094B (zh) * 2019-07-31 2021-05-18 创新先进技术有限公司 基于区块链的数据授权方法及装置
US11057189B2 (en) 2019-07-31 2021-07-06 Advanced New Technologies Co., Ltd. Providing data authorization based on blockchain
US11251963B2 (en) 2019-07-31 2022-02-15 Advanced New Technologies Co., Ltd. Blockchain-based data authorization method and apparatus
US11304212B2 (en) * 2019-08-14 2022-04-12 Apple Inc. Target transmission time based transmit scheduling
US11310051B2 (en) * 2020-01-15 2022-04-19 Advanced New Technologies Co., Ltd. Blockchain-based data authorization method and apparatus
CN113377795A (zh) * 2021-06-23 2021-09-10 北京沃东天骏信息技术有限公司 一种消息处理的方法和装置

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5109384A (en) * 1988-11-02 1992-04-28 Tseung Lawrence C N Guaranteed reliable broadcast network
US5200999A (en) * 1991-09-27 1993-04-06 International Business Machines Corporation Public key cryptosystem key management based on control vectors
US5201000A (en) * 1991-09-27 1993-04-06 International Business Machines Corporation Method for generating public and private key pairs without using a passphrase
US5164988A (en) * 1991-10-31 1992-11-17 International Business Machines Corporation Method to establish and enforce a network cryptographic security policy in a public key cryptosystem
JP3088683B2 (ja) * 1997-05-29 2000-09-18 三菱電機株式会社 データ通信システム
US7080385B1 (en) * 1997-08-18 2006-07-18 Tibco Software Inc. Certified message delivery and queuing in multipoint publish/subscribe communications
US6381241B1 (en) * 1997-09-30 2002-04-30 Wireless Access Duplicate message detection and mending of garbled messages
JP3408495B2 (ja) * 2000-05-22 2003-05-19 Necソフト株式会社 再送電文二重通知防止方法
JP2002259331A (ja) * 2001-03-02 2002-09-13 Nec Eng Ltd 2重送信検出方法
JP2003150465A (ja) * 2001-11-19 2003-05-23 Nec Corp 分散処理システムにおけるトランザクション処理制御方式
JP3754382B2 (ja) * 2002-03-05 2006-03-08 日本電信電話株式会社 二重送信チェックシステム
FR2845545B1 (fr) * 2002-10-07 2005-02-04 Alstom Procede d'echange securitaire de messages d'information
US7360096B2 (en) * 2002-11-20 2008-04-15 Microsoft Corporation Securely processing client credentials used for Web-based access to resources
US7676580B2 (en) * 2003-03-27 2010-03-09 Microsoft Corporation Message delivery with configurable assurances and features between two endpoints
US7693952B2 (en) * 2003-03-27 2010-04-06 Microsoft Corporation Availability and scalability in a messaging system in a manner transparent to the application

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101651526B (zh) * 2008-08-14 2013-02-13 武汉光发科技有限公司 一种网络设备间的消息传递方法
CN108055169A (zh) * 2011-09-02 2018-05-18 贸易技术国际公司 消息流完整性

Also Published As

Publication number Publication date
US7483943B2 (en) 2009-01-27
CA2895067A1 (en) 2006-03-21
CA2516517C (en) 2016-05-17
RU2005129354A (ru) 2007-04-10
EP1638291A2 (en) 2006-03-22
KR20060050754A (ko) 2006-05-19
CN1753391B (zh) 2010-09-01
EP1638291A3 (en) 2015-04-01
BRPI0503846A (pt) 2006-05-02
JP4906295B2 (ja) 2012-03-28
JP2006094510A (ja) 2006-04-06
CA2516517A1 (en) 2006-03-21
KR101150039B1 (ko) 2012-05-30
AU2005203662B2 (en) 2010-05-27
US20060075133A1 (en) 2006-04-06
RU2387001C2 (ru) 2010-04-20
AU2010201826A1 (en) 2010-05-27
US7536436B2 (en) 2009-05-19
MXPA05009681A (es) 2006-03-27
AU2005203662A1 (en) 2006-04-06
US20060064464A1 (en) 2006-03-23

Similar Documents

Publication Publication Date Title
CN1753391A (zh) 使用具有同步频率的时钟的可靠的消息通信
US7881661B2 (en) Apparatus and method for providing notification on remote devices
CN1943206A (zh) 用于在集群系统的网络故障期间最大化连通性的系统和方法
CN115004673B (zh) 消息推送方法、装置、电子设备及计算机可读介质
CN101060417A (zh) 网络广告播发系统
CN1655552A (zh) 管理传输控制协议(tcp)连接
RU2008125171A (ru) Способ доставки уведомления об обновлении программного обеспечения к устройствам в системах связи
US20080163227A1 (en) Server and client, and update supporting and performing methods thereof
US9225585B2 (en) Method and system for device management, and server
WO2014152076A1 (en) Retry and snapshot enabled cross-platform synchronized communication queue
JP4635615B2 (ja) 情報処理装置、システム、データ同期方法及びプログラム
CN1917427B (zh) 一种快速恢复门户认证环境的方法和装置
CN1578249A (zh) 使用本地连接转化的虚拟连接
CN1595890A (zh) 与预订通知服务的虚拟连接
CN1679276A (zh) 窗口管理设施同步储存库提供器
CN1248517C (zh) 同步服务gprs支持节点和网关gprs支持节点的系统和方法
CN1929489A (zh) 实现会话与媒体流同步的处理方法、系统、机顶盒及装置
CN114615284A (zh) 集群内消息通知方法、接收方法及装置
CN101534292B (zh) 互联与交换网关、系统及其实现方法
JP2016152461A (ja) クラウドシステム、ルータ、管理用サーバおよびプログラム
KR101527196B1 (ko) 양방향 푸시 메시지 서비스 시스템 및 제어 방법
JP2009260839A (ja) 画像形成装置、通信管理方法、及びプログラム
CN116938482A (zh) 保持安全登录态的方法和装置、计算设备及存储介质
CN116743838A (zh) 会话配置方法、装置、存储介质、处理器及终端设备
JP4621158B2 (ja) ルータ装置及び通信制御方法

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
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150429

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150429

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20100901

Termination date: 20170921