维持会话连接的制作方法

文档序号:7695826阅读:184来源:国知局
专利名称:维持会话连接的制作方法
技术领域
所描述的技术一般涉及数据通信网络,尤其涉及维持会话连接。
背景技术
计算设备用户有时使用其计算设备来与其它用户进行通信。例如,用户可使用计算设备,通过发送或接收键入的消息,如通过使用MICR0S0FTMESSENGER( “MESSENGER”)即时消息通信产品,而与另一用户进行通信。作为另一个例子,用户可通过使用话筒说话并通过扬声器或头戴式耳机听见其他用户,如通过使用互联网协议上的话音(“VoIP”)应用程序,而与另一个用户进行通信。这些用户可使用各种计算设备,如个人计算机、个人数字助理、蜂窝电话、启用VoIP的电话,等等。将这些类型的通信服务提供给用户的应用程序也可能需要提供存在信息 (presence information)。存在信息传达用户的能力或者意愿,以使用计算设备进行通信。 存在信息可由计算设备自动检测,或者可由用户主动选择。计算设备可自动观察并传递存在信息,如用户“状态”。例如,当用户没有登录到任何计算设备或没有使用(或登录到)观察并传递存在信息的应用程序时,用户状态可被自动表示为“脱机”。当用户启动或登录到诸如MESSENGER等观察并传达存在信息的应用程序时,用户状态可被自动表示为“联机”。 当用户一段时间没有在计算设备上执行任何行动时,应用程序可自动表示用户“离开”。用户也可主动选择其状态。例如,用户可表示他们“外出就餐”或者“忙碌”,这可表示他们可能无法立即对来自其他用户的消息做出响应。多个计算设备可向一注册服务器计算设备注册其存在信息,这样以使“监视程序”,即希望确定用户状态的应用程序,可通过查询注册服务器或预订自动接收存在信息来确定有意义的存在信息。例如,MESSENGER可向注册服务器表明,用户在一段时间内还没有在计算设备上执行任何行动,因此用户存在信息可以是“离开”。启用VoIP的电话可向注册服务器表明,用户已经打了电话,因此该用户的存在信息可以是“接听电话”。当监视程序从注册服务器接收到该存在信息时,它可确定用户状态是“接听电话,且不能对计算设备上的消息做出响应”。然而,若用户开始在计算设备上执行行动,则监视程序可确定用户状态是 “接听电话,但能够对计算设备上的消息做出响应”。若用户主动在计算设备上表明其用户状态是“离开”,并使用启用VoIP的电话,则监视程序可确定用户状态是“漫游”。通信应用程序有时需要确立并管理计算设备之间的会话。会话是在一段时间内出现的计算设备之间的一组交互。例如,诸如MESSENGER或VoIP等实时通信应用程序代表用户建立通信设备之间的会话。这些应用程序可使用诸如“会话发起协议”(“SIP”)等各种机制来建立会话。SIP是一种应用层控制协议,计算设备可使用它来发现另一个计算设备, 并建立、修改和终止计算设备之间的会话。
应用程序可将SIP用于另一个协议来发送或接收信息。通过将SIP用于其它协议,应用程序可创建并管理会话,并在会话期间交换信息。以SIP来使用以交换信息的协议可将该信息分割为消息。例如,VoIP应用程序可将长的叙述分割为较短的消息。在会话期间交换消息被称为“对话”。SIP可使用较低级通信层来传输对话的消息,如传输控制协议 /互联网协议(“TCP/IP”),它通常用于传输层以及网络层协议。传输控制协议(”TCP”)是面向连接的、可靠的传递传输层协议。TCP通常被描述为一传输层,它提供应用层(如使用SIP的应用程序)和网络层之间的接口。应用层一般通过发送或接收数据流(如许多数据字节)来与TCP层进行通信。TCP将这个数据流组织为段,它可由诸如互联网协议(“IP”)等在网络层使用的协议携带。这些数据段通常被称为“分组”、“帧”或者“消息”。每条消息一般包含报头和净荷。报头包含用于路由和解释消息所需的数据。净荷包含被发送或接收的实际数据。应用层、传输层以及网络层,连同其它层,共同被称为数据通信栈。连接中的消息可经过中间计算设备。当发送计算设备数据通信栈的传输层或网络层建立与接收计算设备中数据通信栈的相应层的连接时,由计算设备交换的消息可经过几个中间计算设备。例如,消息可经过代理服务器、网络地址转换器或者网关。这些中间计算设备接收、处理并转发消息。例如,代理服务器可以是连接到内联网的计算设备和连接到因特网的计算设备之间的中介。该代理服务器可例如通过忽略来自内联网外部的连接请求, 试图使内联网更安全。中间计算设备可终止两个计算设备之间的空闲连接,以有效地使用网络资源。例如,在连接到内联网的用户计算设备(“计算设备A”)上执行的MESSENGER或VoIP应用程序可建立与在连接到因特网的另一个计算设备(“计算设备B”)上执行的应用程序的基于 SIP的会话。该会话可使用计算设备A和B之间的TCP/IP连接,而且由计算设备交换的消息可经过代理服务器。当在一段时间内没有在连接中交换消息时,代理服务器可关闭它与计算设备B之间的连接,以保存网络资源。然而,计算设备A可能不知道该连接已被关闭, 因为它与代理服务器的连接保持打开。结果,在计算设备B上执行的应用程序可能错误地假定计算设备A的应用程序(或用户)不再处于联机状态或者使用该连接。此外,为使代理服务器所连接的内联网更加安全,代理服务器可忽略来自未连接到内联网的设备,诸如连接到因特网的计算设备的连接请求。随后,在连接到内联网的计算设备B上执行的应用程序可能无法查询在计算设备A上执行的应用程序的状态或请求重新建立会话。中间计算设备即使在计算设备使用“保持活跃”机制的时候也可关闭连接。某些计算设备使用保持活跃机制来保持连接活跃,而不论消息缺乏与否。该机制包括发送“保持活跃”消息,以表明发送者还没有关闭连接。然而,有效的中间计算设备可识别保持活跃消息, 并在保持发送计算设备和中间计算设备之间的连接活跃时,可终止与在保持活跃消息中表明的接收者的连接(如,与连接到因特网的计算设备的连接)。连接可通过发送应用层的有效消息而得到维持。例如,使用传输层中的TCP的SIP 应用程序可周期性地发送有效的SIP消息,如REGISTER(寄存器)消息。REGISTER消息可用于使SIP服务器能够将消息发送者的统一资源标识符(“URI”)与发送者使用的计算设备相关联。当有效SIP消息不能被发送或接收时,SIP应用程序可检测到其TCP连接是不可用的。发送REGISTER,或者实际上包含有效数据的任何有效SIP消息的问题,是当多个客户机和服务器需要这样做以维持连接时,这样做可能是计算密集的。在REGISTER消息的情况下,接收这样消息的服务器可能需要对该消息进行语法分析,以确定发送者计算设备的URI 和身份,并且可能进一步需要将数据储存在可能在另一个服务器上的数据库中。这样,不依赖于消息TCP保持活跃或广泛计算处理来维持会话连接的有效方法将具有显著的实用性。SIP是一种因特网提议标准。其规范“RFC 3261”,可在<http://www. ietf. org/ rfC/rfC;^61.tXt>处获得。用于对涉及事件通知的SIP的扩展的规范“RFC 3沈5”可在<http://www. ietf. org/rfc/rfc3265. txt>处获得。涉及即时消息通信系统中的存在信息的规范“RFC 2778” 可在 <http//www. ietf. org/rfc/rfc2778. txt> 处获得。涉及SIP 中的存在信息的提议规范的草稿可在<http://www. ietf. org/intemet-drafts/ draft-ietf-simple-presene-10. txt>处获得。所有这四个规范通过整体引用合并于此。

发明内容
在一实施例中,提供了用于维持会话连接的技术。该技术在不发送消息时可导致会话连接由于超时条件而关闭时发送心跳消息。心跳消息是有效的传输层消息,它会被数据通信栈的较高层处的协议忽略。例如,该技术可发送其净荷中仅包含回车和换行 (“CRLF”)的TCP消息。因为TCP层将仅包含CRLF的消息认为是有效TCP消息,所以诸如代理服务器这样的中间计算设备可以不将心跳消息解释为“保持活跃”消息,并可维持会话连接。


图1是示出用于维持会话连接的系统的实施例的框图。图2是示出图1的网络的实施例的框图。图3是示出由计算设备所使用的数据通信栈的实施例的框图。图4是示出sendjnessage例程的实施例的流程图。图5是示出sustain_connection例程的实施例的流程图。图6是示出sendjieartbeat子例程的实施例的流程图。图7是示出receive_message子例程的实施例的流程图。图8是示出一实施例中的消息流的消息流图。图9是示出一实施例中的消息流的消息流图。图10是示出一实施例中的消息流的框图。
具体实施例方式在一实施例中,提供了用于维持会话连接的技术。该技术在不发送消息可导致会话连接由于超时条件而关闭时发送心跳消息。心跳消息是包含非空净荷的有效传输层消息,它会被数据通信栈的较高层处的协议忽略。例如,该技术可发送在其净荷中仅包含回车和换行(“CRLF’)的TCP消息。因为TCP层将仅包含CRLF的消息认为是有效的TCP消息, 所以诸如代理服务器这样的中间计算设备可复位涉及其中发送或接收消息的连接的消息时钟。该消息时钟表明自从消息在连接中被最后一次发送或接收以来已过去的时间量。当
6连接的消息时钟表明已经过了阈值量的时间(如表明超时条件已经出现)时,中间计算设备可关闭该连接。因为消息时钟在消息被发送或接收时被复位,所以该连接可可以不被关闭,除非另一个消息在阈值量的时间过去之前没有被发送或接收。当接收者计算设备的TCP 层将接收到的心跳消息转发到其数据通信栈的较高层时,该较高层可忽略心跳消息。例如, SIP可忽略仅包含诸如空格、制表符、回车、换行或CRLF等空白的其它有效SIP消息。若接收到包含除CRLF之外信息的消息,则较高层可试图将这些消息解释为包含不能被忽略的信息。在各种实施例中,心跳可只包含回车、换行或可在传输层有效但被数据通信栈的较高层忽略的任何数据。这样,通过发送有效传输层消息,如被SIP忽略的心跳消息,即使在处于数据通信栈中高于传输层的层的计算设备之间没有交换任何信息,该技术也可维持会话连接。可在协议的规范或定义中定义何种类型的消息是有效但可被忽略的。在一实施例中,被传输层以上的层所忽略的消息可包括,如回车、换行、空格、制表符、或者任何一般的空白字符。在一实施例中,只包含空白字符的这样的消息能以回车或换行结束。可用于消息中以维持连接而不导致过量计算负担的字符可通过分析在可能关闭连接的协议(如TCP)之上使用的协议来确定。现在转到附图,图1是示出用于维持会话连接的系统的实施例的框图。该系统可包含一个或多个客户机102、一个或多个网络104、以及将客户机和网络连接起来的网络, 如因特网114。客户机可通过网络连接108连接到因特网。网络104可使用各种形式的数据通信链路110连接到因特网。客户机可以是,如计算机、蜂窝电话、或者连接到因特网的其它设备。网络可以是如内联网。客户机也可使用专用数据通信链路112直接连接到网络。 类似地,网络可使用专用数据通信链路112直接连接到其它网络。因特网也可连接到各种其它计算设备(未示出)。这里描述的连接可以是物理的、无线的,并且可实际上可以是任何形式的数据通信网络连接。图2是示出图1的网络的实施例的框图。网络200包含一个或多个客户机202、服务器204、以及边缘代理服务器212。网络也可包含其它设备(未示出)。所示的网络设备 (以及未示出的那些设备)可通过与网络相关联的数据通信网络(未示出)而互联。客户机202和服务器204可执行各种活动,包括交换SIP消息。边缘代理服务器212可以同时连接到网络200( “内部”网络)相连和“外部”网络。如因特网(未示出)。当客户机想要打开到网络外部的服务器的会话时,边缘代理可例如确定该会话是否应被打开,以及应使用哪个通信链路。图3是示出由图1和图2的计算设备所使用的数据通信栈的实施例的框图。计算设备可使用一个或多个数据通信栈来彼此通信。在所示的示例中,计算设备300使用与这些计算设备相关联的数据通信栈来与计算设备303进行通信。计算设备301和302可使用其相关联的数据通信栈在计算设备300和303之间接收并转发消息。计算设备300具有包含应用层304、传输层306、网络层308、数据链路层310以及物理层312的数据通信栈。应用层可包含SIP应用程序以及其它的应用程序。SIP应用程序可具有与传输层通信的组件或层。SIP应用程序的这个通信层可发送或接收心跳消息。 计算设备301、302和303可具有类似的数据通信栈。具体地,计算设备303可具有包含应用层314、传输层316、网络层318、数据链路层320以及物理层322的数据通信栈。一些或所有这些应用层可另外包含SIP应用程序。
当两个计算设备被连接起来时,其数据通信栈的层可具有彼此之间的逻辑或物理连接。例如,当计算设备300通过计算设备301和302连接到计算设备303时,物理层312 可通过物理连接3M连接到计算设备301的物理层,计算设备301可通过物理连接连接到计算设备302的物理层,计算设备302可通过物理连接连接到计算设备303的物理层。每个计算设备可通过如调制解调器、网络接口卡或者诸如通过因特网等其它连接而彼此相连。 因特网由各种物理连接组成,如电话线、微波链路、以及其它形式的有线和无线物理连接, 它们共同形成了消息的多条路线。实际上,因特网的早期目标是让发送者即使在网络不工作时也能够与接收者进行通信。当计算设备300将数据发送到计算设备303时,数据可通过因特网在不同的物理路线上行进。数据通信栈的较高层,如数据链路层310和320、网络层308和318、传输层306和 316,以及应用层304和314可通过诸如逻辑连接3沈、3观、330和332等逻辑连接而相连。 当数据通信栈的两层具有逻辑连接并交换数据时,该数据可通过物理连接沿着发送计算设备的数据通信栈“向下”发送到数据通信栈的物理层,然后沿着接收计算设备的数据通信栈 “向上”发送。例如,当计算设备300的SIP应用程序304与计算设备303的SIP应用程序 314进行通信时,SIP应用程序304可将数据传递到传输层306,传输层306可将数据传递到网络层308,网络层308可将数据传递到数据链路层310,数据链路层310可将数据传递到物理层312。物理层312可通过物理连接3M传递数据,且最终可将数据传递到物理层 322。物理层322可将其接收的数据向上传递到数据链路层320,数据链路层320可将数据传递到网络层318,网络层318可将数据传递到传输层316,传输层最终可将数据传递到SIP 应用程序314。当计算设备301和302在其物理连接上接收数据时,它们也可沿其数据通信栈向上发送数据。可能的情况是,数据通信栈的较低层,而不是应用层,能够处理接收到的数据, 而不将其发送到较高层。例如,当SIP应用程序304将SIP消息发送到SIP应用程序时,它可将对应于SIP消息的数据发送到传输层306。计算设备301和302的数据通信栈均接收其物理层上的数据,它们可将接收到的数据沿着数据通信栈向上传递到其各自的传输层。 传输层可从接收到的数据中识别出在数据中表示的目的地是计算设备303,它可简单地将数据转发到传输层316 (通过其对应的较低层)。这样,计算设备301和302的应用/SIP层可以不必处理或者甚至查看消息。当任一计算设备301或者302的传输层在一段时间内没有接收到任何数据时,计算设备可关闭对应于计算设备300和303之间的SIP会话的连接。例如,若计算设备301 不能在来自计算设备300或者计算设备302的连接上接收任何消息,则它可假定该连接不再是必要的,并关闭该连接。这样,计算设备300和303之间的进一步SIP消息也许无法经过通过计算设备301和302的先前打开的连接。图4是示出sendjnessage (发送消息)例程的实施例的流程图。该例程可由应用层组件执行,如SIP应用程序的组件,以发送消息。sendjnessage例程可由如在计算设备上执行的SIP应用程序在它将消息发送到在另一个计算设备上执行的SIP应用程序时使用。 该例程开始于方框402,那里它接收消息的指示作为参数。在方框404处,该例程复位时钟值,如通过将其设置到零。时钟值是自从消息被最后一次发送以来已经过的时间的指示。这个值可由系统组件检查,以确定连接是否应被关闭。在方框406处,该例程将在方框402处接收到的消息发送到传输层。该例程可使用由传输层所展现的应用程序接口来发送消息。 在方框408处,该例程返回到其调用者处。图5是示出sustairucormection (维持连接)例程的实施例的流程图。该例程由诸如SIP应用程序的组件这样的应用层组件来执行,以维持连接。该连接可能需要在如表示自从消息被最后一次发送以来已经过的时间量的时钟值超过超时值时候被维持。适当的超时数可通过如使用传输层的API来确定传输层的属性而确定,或者可由系统管理员来定义。该例程开始于方框502。在方框504处,该例程确定时钟值是否在超时值附近。若时钟值超过超时值,则该连接可能已经被关闭了。结果,超时值之前的某段时间应当被选择。 若时钟值在超时值附近,则该例程继续到方框506。否则,该例程继续到方框508。在方框 506处,该例程调用sencLheartbeat (发送心跳)子例程,它发送可维持连接的消息。send_ heartbeat子例程在下文相关图6来进一步描述。在方框508处,该例程返回到其调用者处。sustairucormection例程可在与发送或接收消息的线程分离的线程循环中被重复调用。或者,sustain_connection例程可响应于在超时之前以某个指定时间间隔触发的时钟事件而被调用。或者,sustairucormect例程可简单地以小于超时值的某个时间间隔发送心跳消息,而不论时钟值如何。例如,若代理服务器可在非活动状态一分钟之后超时,则该例程可每隔30秒发送一次心跳消息,即使消息在几秒钟之前已被发送或接收到。图6是示出sencLheartbeat (发送心跳)子例程的实施例的流程图。该子例程由诸如SIP应用程序的组件等应用层组件来执行,以发送心跳消息。该心跳消息可被发送,以维持若在一段时间内在连接中没有发送消息可被关闭的连接。该子例程开始于方框602, 那里它接收会话指示作为参数。在方框604处,该子例程创建心跳消息。心跳消息是可被数据通信栈的一层所忽略但也许不能被数据通信栈的另一层所忽略的消息。例如,心跳消息可由SIP应用程序发送,以在TCP连接具有被处理两个具有打开的SIP会话的计算设备之间的消息的另一个计算设备(如代理服务器)关闭的风险时,维持TCP连接。心跳消息例如可仅包含CRLF字符。或者,心跳消息可包含以CRLF结束的一个或多个空格或制表符。 若不使用CRLF,心跳消息也可使用回车或换行字符。对TCP层而言,这样的消息可以是有效消息,它在消息被发送或接收时复位时钟值。然而,SIP应用程序可忽略这样的消息。这样,通过发送这样的心跳消息,TCP连接可保持打开,SIP存在信息由此可保持准确,且没有任何无用信息被呈现给SIP应用程序。在另一个实施例中,仅回车或换行字符可在心跳消息中发送。在方框606处,子例程调用sencLmessage子例程,并将所创建的心跳消息作为参数传递给它。sencLmessage子例程在上文相关图4描述。在方框608处,该子例程返回到其调用者处。图7是示出receivejiiessage (接收消息)子例程的实施例的流程图。该子例程可由接收者计算设备的应用层组件,如SIP应用程序的组件来执行。该子例程开始于方框 702,那里它接收消息指示作为参数。在方框704处,该子例程确定接收到的消息是否为心跳消息。子例程可试图通过检查消息的内容是否仅是回车、换行或者两者兼有,来确定接收到的消息是否为心跳消息。或者,receivejiiessage子例程可被定制,以寻找消息中已知为
9标识心跳消息的任何其它信息。若接收到的消息是心跳消息,则该子例程继续到方框706。 否则,该子例程继续到方框708。在方框706处,该子例程可确认消息。通常,传输层确认消息。然而,在某些情况下,应用层组件可能需要确认消息。因为根据执行该子例程的应用层组件,这个步骤可以是可任选的,所以方框706被表示为虚线。在方框708处,该子例程可将消息转发到如SIP应用程序。在方框710处,该子例程返回到其调用者处。一接收到消息,子例程就可复位时钟值(未示出),它可用于确定是否需要发送心跳消息以维持会话。图8是示出一实施例中的消息流的消息流图。在所示的实施例中,计算设备1已经建立了与计算设备2的SIP会话。在会话中交换的消息经过代理服务器。例如,当计算设备1在时间0处发送消息1时,该消息经过代理服务器,且计算设备2在时间1处接收该消息。类似地,当计算设备2在时间2处发送消息2时,该消息在计算设备1在时间3处接收到它之前经过代理服务器。每当代理服务器转发或接收消息时,它可复位时钟。例如,当代理服务器转发消息1时,它将时钟值复位为0。类似地,当代理服务器接收到消息2时,它将时钟值复位到0。时钟值可例如响应于系统时钟而自动递增。若时钟值超过超时值,则代理服务器可关闭与会话相关联的连接。在所示的示例中,计算设备1也许无法在时钟值超过超时值之后发送消息3。图9是示出一实施例中的消息流的消息流图。在所示的实施例中,计算设备1和 2已经在时间0和3之间交换了消息1和2,如图8中所示并在上文中所解释的。在时间4 处,计算设备1在识别出超时即将来临(图中用虚线表示)之后,可在时间5所表示的超时之前将心跳消息发送到计算设备2。在发送心跳消息之后,代理服务器可复位时钟,因此,计算设备1能够在时间6处发送消息3,这是因为代理服务器还没有关闭连接。通过在代理服务器超时之前发送心跳消息,系统能够维持计算设备1和2之间的连接。发送心跳消息的计算设备可能需要试图在心跳消息接收者的时钟值也不超过超时值的充足时间内发送心跳消息。图10是示出一实施例中的消息流的框图。在所示的实施例中,发送者计算设备 1000已经打开了与接收者计算设备1002的SIP会话。当发送者计算设备通过其应用/SIP 层1004来发送SIP消息1时,传输层1006可将消息分割成两段Sl和S2。为防止超时,发送者计算设备可发送心跳消息S3。该心跳消息可包含回车、换行,或者两者兼有,或者表示可被应用程序忽略的心跳消息这样的其它信息。然后,接收者计算设备可发送SIP消息2, 它被传输层1016分割成传输消息S4、S5和S6。被分割的消息可以有各种大小。在一实施例中,计算设备可在某些连接中发送心跳消息,并可将另一机制用于另一个连接来维持其连接。例如,计算设备可在将消息发送到其自己的“宿主(home)”服务器或与之相连的其它计算设备时使用心跳消息,这是因为宿主服务器能够将心跳消息与计算设备的连接相关联,并处存该关联指示。通过这样做,若连接随后丢失的话,服务器能够有效地更新计算设备的存在信息。计算设备可在这样做有利时在其它连接中发送REGISTER 器消息。例如,计算设备可在中间设备不能转发心跳消息时发送REGISTER消息。尽管这里讨论的特定示例涉及使用SIP和TCP,但是其它实施例可使用其它等效或类似的协议。在其上实现维持会话连接的技术的计算设备可包括中央处理单元、存储器、输入设备(如键盘和定位设备)、输出设备(如显示设备)以及存储设备(如盘驱动器)。存储器和存储设备是计算机可读介质,它可包含实现安全系统的指令。另外,数据结构和消息结构可被储存或通过诸如通信链路上的信号等数据传输介质来发送。可使用各种通信链路, 如因特网、局域网、广域网或者点对点拨号连接。图1示出其中可实现维持会话连接的技术的合适操作环境的示例。该操作环境仅是合适操作环境的一个示例,并非暗示对本系统使用范围或功能的任何限制。适合使用的其它公知的计算系统、环境和配置包括个人计算机、服务器计算机、包括“智能”蜂窝电话的手持式或膝上型设备、多处理器系统、基于微处理器的系统、可编程消费者电子设备、网络 PC、小型机、大型机、包括任何上面系统或设备的分布式计算环境,等等。可在诸如由一个或多个计算机或其它设备执行的程序模块等计算机可执行指令的通用上下文中描述用于维持会话连接的技术。一般而言,程序模块包括例程、程序、对象、 组件、数据结构等,它们执行特定的任务或实现特定的抽象数据类型。通常,程序模块的功能可如各实施例中所需的被组合或分布。如前述,应当认识到,为说明的目的,此处已经描述了本发明的具体实施例,但是在不背离本发明的精神和范围的前提下,可做出不同的修改。因此,本发明只受到所附权利要求书的限制。
权利要求
1.一种由代理服务器计算设备执行的用于维持第一计算设备和第二计算设备之间的会话连接的方法,包括在所述代理服务器计算设备处接收来自所述第一计算设备的心跳消息,所述第一计算设备和所述第二计算设备具有使用会话发起协议的打开的会话,并且所述心跳消息是传输层协议的有效消息,但被所述会话发起协议忽略;复位所述第一计算设备和所述第二计算设备之间的所述会话连接的消息时钟;以及将所述心跳消息从所述代理服务器计算设备发送到所述第二计算设备,由此所述心跳消息的发送在所述第一计算设备和所述第二计算设备之间维持所述会话连接。
2 如权利要求1所述的方法,其特征在于,复位所述消息时钟发生在将所述心跳消息从所述代理服务器计算设备发送到所述第二计算设备之后。
3.如权利要求1所述的方法,其特征在于,所述心跳消息包括空白字符。
4.如权利要求3所述的方法,其特征在于,所述空白字符包括换行和回车中的一个或多个。
5.如权利要求1所述的方法,其特征在于,所述传输层协议是TCP/IP。
6.如权利要求1所述的方法,其特征在于,所述消息时钟测量自从前一消息被发送或接收以来已经过的时间。
7.如权利要求1所述的方法,其特征在于,所述消息时钟涉及由数据通信栈的传输层发送或接收的消息。
8.如权利要求1所述的方法,其特征在于,所述代理服务器计算设备包括边缘代理服务器。
9.如权利要求8所述的方法,其特征在于,所述第一计算设备驻留在网络内,并且所述第二计算设备驻留在所述网络外。
10.如权利要求1所述的方法,其特征在于,进一步包括在停止所述会话连接后,在所述代理服务器计算设备处接收来自所述第一计算设备和所述第二计算设备中的一个的 REGISTER 消息。
11.如权利要求1所述的方法,其特征在于,进一步包括在接收所述心跳消息后的一段时间,在所述代理服务器计算设备处接收来自所述第一计算设备的第二心跳消息;以及确定是否一时钟值被所述一段时间超过。
12.如权利要求11所述的方法,其特征在于,进一步包括在确定所述一段时间超过了所述时钟值后,结束所述第一计算设备和所述第二计算设备之间的所述会话连接。
13.如权利要求1所述的方法,其特征在于,进一步包括在确定所述一段时间没有超过所述时钟值后,复位所述消息时钟,从而维持所述会话连接。
14.一种在第一计算设备和第二计算设备之间通信地耦合并被配置成维持所述第一计算设备和所述第二计算设备之间的会话连接的代理服务器,所述代理服务器包括通过与所述第一计算设备的通信接收消息的第一组件;将所接收的消息发送到所述第二计算设备的第二组件;以及确定所接收到的消息是否是心跳消息的第三组件,所述心跳消息是传输层协议的有效消息,但被所述会话发起协议忽略,并且在确定所接收到的消息是心跳消息后,复位所述第一计算设备和所述第二计算设备之间的所述会话连接的消息时钟,从而维持所述第一计算设备和所述第二计算设备之间的所述会话连接。
15.如权利要求14所述的代理服务器,其特征在于,所述代理服务器包括边缘代理服务器。
16.一种由计算设备执行的用于维持会话连接的方法,包括使用会话发起协议建立与第二计算设备的会话,所述会话具有会话连接;以及使用传输层协议通过代理服务器从所述第二计算设备接收心跳消息,其中所述会话发起协议由数据通信栈中高于第二协议的较高层使用,其中所述心跳消息是传输层协议的有效消息,但被所述会话发起协议忽略,并且所述心跳消息的接收维持在所述计算设备处的所述会话连接;其中所述会话通过所述代理服务器在所述计算设备和所述第二计算设备之间建立并维持,并且其中在在所述计算设备处从所述第二计算设备接收所述心跳消息后,复位所述会话连接的消息时钟。
17.如权利要求16所述的方法,其特征在于,当接收到所述会话连接的消息后经过了一段时间,接收所述心跳消息,所述一段时间小于超时值。
18.如权利要求16所述的方法,其特征在于,其中所述连接的消息时钟在所述代理服务器处被管理。
19.如权利要求18所述的方法,其特征在于,所述消息时钟由所述代理服务器复位。
20.如权利要求19所述的方法,其特征在于,所述代理服务器包括边缘代理服务器。
全文摘要
在一实施例中,提供了用于维持会话连接的技术。该技术在不发送消息可导致会话连接由于超时条件而被关闭时发送心跳消息。心跳消息是有效传输层消息,它可被数据通信栈的较高层处的协议忽略。例如,该技术可发送在其净荷中仅包含回车和换行(“CRLF”)的TCP消息。因为TCP层将仅包含CRLF的消息认为是有效TCP消息,所以诸如代理服务器这样的中间计算设备可以不将心跳消息解释为“保持活跃”消息,并可维持会话连接。
文档编号H04L12/58GK102209119SQ20111016214
公开日2011年10月5日 申请日期2005年6月30日 优先权日2004年6月30日
发明者J·E·安德瑞, M·马尔卡良 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1