会话保活方法和设备.pdf

上传人:62****3 文档编号:1593061 上传时间:2018-06-27 格式:PDF 页数:34 大小:2.32MB
返回 下载 相关 举报
摘要
申请专利号:

CN201310723732.9

申请日:

2013.12.24

公开号:

CN104734939A

公开日:

2015.06.24

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):H04L 12/58申请日:20131224|||公开

IPC分类号:

H04L12/58

主分类号:

H04L12/58

申请人:

华为技术有限公司

发明人:

郑能洪; 吴昊; 章海刚; 郭贤志

地址:

518129广东省深圳市龙岗区坂田华为总部办公楼

优先权:

专利代理机构:

代理人:

PDF下载: PDF下载
内容摘要

本申请公开了一种会话保活方法和设备,用以解决现有会话保活技术客户端接收的邮件内容被篡改的问题。该方法包括:代理服务器接收客户端通过代理服务器与客户端之间的会话发送的业务数据获取请求,并转发给真实服务器;接收所述真实服务器发送的第一报文,所述第一报文用于响应所述业务数据获取请求,所述第一报文携带用以表示所述真实服务器开始传输业务数据的信息;所述代理服务器通过依次向所述客户端发送至少两个第二报文,向所述客户端发送所述信息,每个报文携带所述信息的片段,发送次序相邻的两个报文的发送时间间隔小于所述会话的老化时间;当所述代理服务器发送完所述信息时,在会话的老化时间内,通过所述会话向客户端发送业务数据。

权利要求书

权利要求书1.  一种会话保活方法,其特征在于,包括: 代理服务器接收客户端通过所述代理服务器与所述客户端之间的会话发 送的业务数据获取请求,并将所述业务数据获取请求转发给真实服务器; 所述代理服务器接收所述真实服务器发送的第一报文,所述第一报文用于 响应所述业务数据获取请求,所述第一报文携带用以表示所述真实服务器开始 传输业务数据的信息; 所述代理服务器通过依次向所述客户端发送至少两个第二报文,向所述 客户端发送所述信息,所述至少两个第二报文中的每个报文携带所述信息的片 段,所述至少两个第二报文中发送次序相邻的两个报文的发送时间间隔小于所 述会话的老化时间; 当所述代理服务器发送完所述信息时,在所述会话的老化时间内,所述代 理服务器通过所述会话向所述客户端发送第一业务数据。 2.  如权利要求1所述的方法,其特征在于,所述至少两个第二报文中发 送次序相邻的两个报文分别携带的所述片段在所述信息中的位置相邻。 3.  如权利要求1或2所述的方法,其特征在于, 所述代理服务器通过所述会话向所述客户端发送第一业务数据之前,还包 括: 所述代理服务器接收所述真实服务器发送的第二业务数据; 处理所述真实服务器发送的第二业务数据,获得所述第一业务数据; 所述代理服务器通过依次向所述客户端发送至少两个第二报文,向所述客 户端发送所述信息,包括: 如果所述代理服务器处理完所述真实服务器发送的第二业务数据时 尚未发送完所述信息,生成一个携带有所述信息中所有未发送的片 段的报文, 并将生成的所述报文发送给所述客户端。 4.  如权利要求1-3任一所述的方法,其特征在于,所述代理服务器通过 依次向所述客户端发送至少两个第二报文,向所述客户端发送所述信息,包括: 向所述客户端发送所述至少两个第二报文中的至少一个报文; 向所述客户端发送所述至少两个第二报文中待发送的报文,发送所述待发 送的报文与发送前一个被发送的报文的时间间隔根据预定参数以及所述至少 两个第二报文中待发送的报文的数量确定,所述预定参数包括下述至少一种: 所述代理服务器与所述真实服务器之间的会话的传输带宽、所述代理服务器处 理所述第二业务数据的进度。 5.  如权利要求3所述的方法,其特征在于,所述处理所述真实服务器发 送的第二业务数据,获得所述第一业务数据,包括: 确定所述第二业务数据是否包含异常数据; 若确定所述第二业务数据未包含异常数据,则将所述第二业务数据作为所 述第一业务数据; 若确定所述业务数据包含异常数据,则通过从所述第二业务数据中去除所 述异常数据获得所述第一业务数据。 6.  如权利要求1至3任一所述的方法,其特征在于,所述代理服务器包 括基于邮局协议第3版POP3的邮件代理服务器、基于交互式消息访问协议第 4版IMAP4的邮件代理服务器、和基于超文本传输协议HTTP的网页代理服务 器。 7.  如权利要求6所述的方法,其特征在于,若所述代理服务器为基于POP3 协议的邮件代理服务器,则所述业务数据获取请求为携带有邮件标识的邮件获 取请求; 所述代理服务器接收所述业务数据获取请求之前,所述方法还包括: 所述代理服务器将所述客户端发送的邮件列表获取请求转发给所述 真实服务器; 获得所述真实服务器响应所述邮件列表获取请求返回的邮件列表; 从所述邮件列表中筛选得到超大邮件列表并保存,所述超大邮件列表 包含邮件标识以及对应的邮件大小,所述超大邮件列表包含的邮件大小超 过预定大小; 所述代理服务器向所述客户端发送所述信息,包括: 所述代理服务器判断所述超大邮件列表中是否包含所述业务数据获 取请求携带的邮件标识; 若确定所述超大邮件列表中包含所述业务数据获取请求携带的邮件 标识,则根据所述超大邮件列表中所述业务数据获取请求携带的邮件标识 对应的邮件大小,计算第二发送时间间隔,所述第二发送时间间隔与邮件 大小成正比; 根据所述第二发送时间间隔,逐个发送所述至少两个第二报文中的每 个报文,所述第二发送时间间隔小于所述客户端的会话老化时间。 8.  如权利要求1至7任一所述的方法,其特征在于,所述信息的每个片 段的大小为1字节。 9.  一种代理服务器,其特征在于,包括: 接收模块,用于接收客户端通过所述代理服务器与所述客户端之间的会话 发送的业务数据获取请求; 发送模块,用于将所述接收模块接收的所述业务数据获取请求转发给真实 服务器; 所述接收模块,还用于接收所述真实服务器发送的第一报文,所述第一报 文用于响应所述发送模块发送的所述业务数据获取请求,所述第一报文携带用 以表示所述真实服务器开始传输业务数据的信息; 所述发送模块,还用于通过依次向所述客户端发送至少两个第二报文,向 所述客户端发送所述信息,所述至少两个第二报文中的每个报文携带所述信息 的片段,所述至少两个第二报文中发送次序相邻的两个报文的发送时间间隔小 于所述会话的老化时间;在发送完所述信息时,在所述会话的老化时间内,所 述代理服务器通过所述会话向所述客户端发送第一业务数据。 10.  如权利要求9所述的代理服务器,其特征在于,还包括处理模块; 所述接收模块,还用于在发送模块通过所述会话向所述客户端发送第一业 务数据之前,接收所述真实服务器发送的第二业务数据; 所述处理模块,用于处理所述接收模块接收的所述第二业务数据,获得所 述第一业务数据; 所述发送模块向所述客户端发送所述信息时,具体用于如果所述处理模块 处理完所述真实服务器发送的第二业务数据时尚未发送完所述信息,生成一个 携带有所述信息中所有未发送的片段的报文;将生成的所述报文发送给所述客 户端。 11.  如权利要求9或10所述的代理服务器,其特征在于, 所述发送模块向所述客户端发送所述信息时,具体用于向所述客户端发送 所述至少两个第二报文中的至少一个报文; 向所述客户端发送所述至少两个第二报文中待发送的报文,发送所述待发 送的报文与发送前一个被发送的报文的时间间隔根据预定参数以及所述至少 两个第二报文中待发送的报文的数量确定,所述预定参数包括下述至少一种: 所述代理服务器与所述真实服务器之间的会话的传输带宽、所述代理模块处理 所述第二业务数据的进度。 12.  如权利要求10所述的方法,其特征在于,所述处理模块具体包括: 判断单元,用于确定所述第二业务数据是否包含异常数据; 确定单元,用于若所述判断单元确定所述第二业务数据未包含异常数据, 则将所述第二业务数据作为所述第一业务数据;以及若所述判断单元确定所述 第二业务数据包含异常数据,则通过从所述第二业务数据中去除所述异常数据 获得所述第一业务数据。 13.  如权利要求9或10任一所述的方法,其特征在于,若所述代理服务 器为基于邮局协议第3版POP3协议的邮件代理服务器,则所述业务数据获取 请求为携带有邮件标识的邮件获取请求;所述代理服务器还包括筛选模块; 所述接收模块,还用于在接收所述业务数据获取请求之前,接收所述客户 端发送的邮件列表获取请求; 所述发送模块,还用于将所述接收模块接收的邮件列表获取请求转发给所 述真实服务器; 所述接收模块,还用于获得所述真实服务器响应所述邮件列表获取请求返 回的邮件列表; 所述筛选模块,用于从所述接收模块接收的所述邮件列表中筛选得到超大 邮件列表并保存,所述超大邮件列表包含邮件标识以及对应的邮件大小,所述 超大邮件列表包含的邮件大小超过预定大小; 所述发送模块向所述客户端发送所述信息时,具体用于:判断所述筛选模 块得到的所述超大邮件列表中是否包含所述业务数据获取请求携带的邮件标 识;若确定所述超大邮件列表中包含所述业务数据获取请求携带的邮件标识, 则根据所述超大邮件列表中所述业务数据获取请求携带的邮件标识对应的邮 件大小,计算第二发送时间间隔,所述第二发送时间间隔与邮件大小成正比; 根据所述第二发送时间间隔,逐个发送所述至少两个第二报文中的每个报文, 所述第二发送时间间隔小于所述客户端的会话老化时间。 14.  一种代理服务器,其特征在于,包括存储器,网络接口和处理器; 所述存储器,用于存储程序代码; 所述网络接口,用于接收客户端通过所述代理服务器与所述客户端之间的 会话发送的业务数据获取请求,并将所述业务数据获取请求转发给真实服务 器;接收所述真实服务器发送的第一报文,所述第一报文用于响应所述业务数 据获取请求,所述第一报文携带用以表示所述真实服务器开始传输业务数据的 信息; 所述处理器,用于读取所述存储器中存储的程序代码,执行: 通过所述网络接口依次向所述客户端发送至少两个第二报文,向所述客户 端发送所述信息,所述至少两个第二报文中的每个报文携带所述信息的片段, 所述至少两个第二报文中发送次序相邻的两个报文的发送时间间隔小于所述 会话的老化时间; 当所述网络接口发送完所述信息时,在所述会话的老化时间内,通过所述 会话向所述客户端发送第一业务数据。 15.  如权利要求14所述的代理服务器,其特征在于, 所述处理器通过所述会话向所述客户端发送第一业务数据之前,所述网络 接口还用于接收所述真实服务器发送的第二业务数据; 所述处理器,还用于处理所述真实服务器发送的第二业务数据,获得所述 第一业务数据; 所述处理器通过所述网络接口向所述客户端发送所述信息时,具体用于: 如果所述处理器处理完所述真实服务器发送的第二业务数据时尚未 发送完所述信息,生成一个携带有所述信息中所有未发送的片段的报文, 并通过所述网络接口将生成的所述报文发送给所述客户端。 16.  如权利要求14或15所述的代理服务器,其特征在于, 所述处理器通过所述网络接口向所述客户端发送所述信息时,具体用于: 通过所述网络接口向所述客户端发送所述至少两个第二报文中的至 少一个报文; 通过所述网络接口向所述客户端发送所述至少两个第二报文中待发 送的报文,发送所述待发送的报文与发送前一个被发送的报文的时间间隔 根据预定参数以及所述至少两个第二报文中待发送的报文的数量确定,所 述预定参数包括下述至少一种:所述代理服务器与所述真实服务器之间的 会话的传输带宽、所述处理器处理所述第二业务数据的进度。 17.  如权利要求15所述的代理服务器,其特征在于, 所述处理器处理所述真实服务器发送的第二业务数据,获得所述第一业务 数据时,具体用于: 确定所述第二业务数据是否包含异常数据; 若确定所述第二业务数据未包含异常数据,则将所述第二业务数据作为所 述第一业务数据;以及若确定所述第二业务数据包含异常数据,则通过从所述 第二业务数据中去除所述异常数据获得所述第一业务数据。 18.  如权利要求14或15所述的代理服务器,其特征在于, 若所述代理服务器为基于邮局协议第3版POP3协议的邮件代理服务器, 则所述业务数据获取请求为携带有邮件标识的邮件获取请求; 所述网络接口接收所述业务数据获取请求之前,还用于将所述客户端发送 的邮件列表获取请求转发给所述真实服务器;获得所述真实服务器响应所述邮 件列表获取请求返回的邮件列表; 所述处理器,还用于从所述邮件列表中筛选得到超大邮件列表并保存,所 述超大邮件列表包含邮件标识以及对应的邮件大小,所述超大邮件列表包含的 邮件大小超过预定大小; 所述处理器通过所述网络接口向所述客户端发送所述信息时,具体用于: 判断所述超大邮件列表中是否包含所述业务数据获取请求携带的邮 件标识; 若确定所述超大邮件列表中包含所述业务数据获取请求携带的邮标 识,则根据所述超大邮件列表中所述业务数据获取请求携带的邮件标识对 应的邮件大小,计算第二发送时间间隔,所述第二发送时间间隔与邮件大 小成正比; 所述网络接口根据所述第二发送时间间隔,逐个发送所述至少两个第 二报文中的每个报文,所述第二发送时间间隔小于所述客户端的会话老化 时间。 19.  一种网络系统,其特征在于,包括客户端、真实服务器以及如权利要 求14至18任一所述的代理服务器。

说明书

说明书会话保活方法和设备
技术领域
本发明涉及计算机及通信技术领域,尤其涉及一种会话保活方法及一种代理服务器。 
背景技术
通过具备代理服务器功能的网络设备可以实现特定目的,如提高网络互连协议(Internet Protocol,简称IP)地址资源利用率、确保交互数据的安全性等等。代理服务器的工作原理是在客户端和真实服务器(是指能够独立为客户端提供服务的服务器,为了与代理服务器相区分,在本申请中称为“真实服务器”)之间设置一个代理服务器,代理服务器分别与客户端和真实服务器建立会话,对来自于客户端的报文进行处理,并将处理后的报文发送给真实服务器,以及对来自于真实服务器的报文进行处理,并将处理后的报文发送给客户端。上述网络设备可以是部署在互联网和局域网连接处的防火墙、网关设备等等。 
以常见的代理邮件服务器为例,代理邮件服务器接收客户端发送的邮件获取请求,并将该邮件获取请求转发给真实邮件服务器后,接收真实邮件服务器发送的邮件的数据,并对接收的数据进行缓存、解析和检测,在通过检测确定所述邮件为正常邮件后,通过代理邮件服务器与客户端之间的会话将邮件的数据发送给客户端,客户端在接收完代理服务器转发的邮件的数据后会正常关闭与代理服务器之间的会话。然而在实际应用中,往往会出现客户端与代理服务器之间的会话异常关闭的现象:例如由于邮件较大,如超过5兆(M),或者代理邮件服务器由于负荷过大检测速度较低等因素,代理服务器在对邮件的数据进行处理时消耗了较长时间,从而导致客户端在与代理服务器之间的会话上超过预先设定的会话老化时间未接收到代理邮件服务器发送的任何数据,从而断开与代理邮件服务器之间的会话。 
为了避免出现真实客户端与代理邮件服务器之间的会话异常关闭的现象,现有技术提出了一种会话保活方案:代理邮件服务器在对邮件的数据进行缓 存、解码、检测等处理的过程中,定期向客户端发送携带有“X-KeepAlive\r\n”的保活报文。在检测完毕后,如果邮件为正常邮件,则将所缓存的邮件的数据发送给客户端;如果邮件为异常邮件,例如携带有恶意程序或钓鱼客户端,则删除缓存的异常数据,例如邮件的附件后,基于原有邮件的结构重新构造一封通知邮件告知客户端上述检测结果。 
但是,上述方案会导致即使在邮件为正常邮件的情况下,客户端接收的邮件与真实邮件服务器发送给代理邮件服务器的邮件相比,邮件内容发生了篡改,给用户阅读造成困难。并且,上述方案不适用于提供其他应用的代理服务器进行会话保活。 
发明内容
本发明实施例提供一种会话保活方法,用以解决现有会话保活技术客户端接收的邮件内容被篡改的问题。 
对应地,本发明实施例还提供了一种代理服务器和网络系统。 
本发明实施例提供的技术方案如下: 
第一方面,提供了一种会话保活方法,包括: 
代理服务器接收客户端通过所述代理服务器与所述客户端之间的会话发送的业务数据获取请求,并将所述业务数据获取请求转发给真实服务器; 
所述代理服务器接收所述真实服务器发送的第一报文,所述第一报文用于响应所述业务数据获取请求,所述第一报文携带用以表示所述真实服务器开始传输业务数据的信息; 
所述代理服务器通过依次向所述客户端发送至少两个第二报文,向所述客户端发送所述信息,所述至少两个第二报文中的每个报文携带所述信息的片段,所述至少两个第二报文中发送次序相邻的两个报文的发送时间间隔小于所述会话的老化时间; 
当所述代理服务器发送完所述信息时,在所述会话的老化时间内,所述代理服务器通过所述会话向所述客户端发送第一业务数据。 
在第一方面的第一种可能的实现方式中,所述至少两个第二报文中发送次序相邻的两个报文分别携带的所述片段在所述信息中的位置相邻。 
在第一方面、或第一方面的第一种可能的实现方式中,还提供了第一方面的第二种可能的实现方式,所述代理服务器通过所述会话向所述客户端发送第一业务数据之前,还包括: 
所述代理服务器接收所述真实服务器发送的第二业务数据; 
处理所述真实服务器发送的第二业务数据,获得所述第一业务数据; 
所述代理服务器通过依次向所述客户端发送至少两个第二报文,向所述客户端发送所述信息,包括: 
如果所述代理服务器处理完所述真实服务器发送的第二业务数据时 
尚未发送完所述信息,生成一个携带有所述信息中所有未发送的片 
段的报文, 
并将生成的所述报文发送给所述客户端。 
在第一方面、第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式中,还提供了第一方面的第三种可能的实现方式,所述代理服务器通过依次向所述客户端发送至少两个第二报文,向所述客户端发送所述信息,包括: 
向所述客户端发送所述至少两个第二报文中的至少一个报文; 
向所述客户端发送所述至少两个第二报文中待发送的报文,发送所述待发送的报文与发送前一个被发送的报文的时间间隔根据预定参数以及所述至少两个第二报文中待发送的报文的数量确定,所述预定参数包括下述至少一种:所述代理服务器与所述真实服务器之间的会话的传输带宽、所述代理服务器处理所述第二业务数据的进度。 
在第一方面的第二种可能的实现方式中,还提供了第一方面的第四种可能的实现方式,确定所述第二业务数据是否包含异常数据; 
若确定所述第二业务数据未包含异常数据,则将所述第二业务数据作为所述第一业务数据; 
若确定所述业务数据包含异常数据,则通过从所述第二业务数据中去除所述异常数据获得所述第一业务数据。 
在第一方面、第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式中,还提供了第一方面的第五种可能的实现方式,向所述客户端发 送至少两个第二报文,具体为: 
以预先设定的发送时间间隔,逐个发送所述至少两个第二报文中的每个第二报文,所述预先设定的发送时间间隔小于所述客户端的会话老化时间。 
在第一方面、第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式中,还提供了第一方面的第六种可能的实现方式,所述代理服务器包括基于邮局协议第3版(Post Office Protocol3,简称POP3)的邮件代理服务器、基于交互式消息访问协议第4版(Internet Message Access Protocol4,简称IMAP4)的邮件代理服务器、和超文本传输协议(HyperText Transfer Protocol,简称HTTP)的网页代理服务器。 
在第一方面的第六种可能的实现方式中,还提供了第一方面的第七种可能的实现方式,若所述代理服务器为基于POP3协议的邮件代理服务器,则所述业务数据获取请求为携带有邮件标识的邮件获取请求; 
所述代理服务器接收所述业务数据获取请求之前,所述方法还包括: 
所述代理服务器将所述客户端发送的邮件列表获取请求转发给所述真实服务器; 
获得所述真实服务器响应所述邮件列表获取请求返回的邮件列表; 
从所述邮件列表中筛选得到超大邮件列表并保存,所述超大邮件列表包含邮件标识以及对应的邮件大小,所述超大邮件列表包含的邮件大小超过预定大小; 
所述代理服务器向所述客户端发送所述信息,包括: 
所述代理服务器判断所述超大邮件列表中是否包含所述业务数据获取请求携带的邮件标识; 
若确定所述超大邮件列表中包含所述业务数据获取请求携带的邮件标识,则根据所述超大邮件列表中所述业务数据获取请求携带的邮件标识对应的邮件大小,计算第二发送时间间隔,所述第二发送时间间隔与邮件大小成正比; 
根据所述第二发送时间间隔,逐个发送所述至少两个第二报文中的每个报文,所述第二发送时间间隔小于所述客户端的会话老化时间。 
在第一方面、或上述第一方面的任意一种可能的实现方式中,还提供了第 一方面的第八种可能的实现方式,所述信息的每个片段的大小为1字节。 
第二方面,提供了一种代理服务器,包括: 
接收模块,用于接收客户端通过所述代理服务器与所述客户端之间的会话发送的业务数据获取请求; 
发送模块,用于将所述接收模块接收的所述业务数据获取请求转发给真实服务器; 
所述接收模块,还用于接收所述真实服务器发送的第一报文,所述第一报文用于响应所述发送模块发送的所述业务数据获取请求,所述第一报文携带用以表示所述真实服务器开始传输业务数据的信息; 
所述发送模块,还用于通过依次向所述客户端发送至少两个第二报文,向所述客户端发送所述信息,所述至少两个第二报文中的每个报文携带所述信息的片段,所述至少两个第二报文中发送次序相邻的两个报文的发送时间间隔小于所述会话的老化时间;在发送完所述信息时,在所述会话的老化时间内,所述代理服务器通过所述会话向所述客户端发送第一业务数据。 
在第二方面的第一种可能的实现方式中,还包括处理模块; 
所述接收模块,还用于在发送模块通过所述会话向所述客户端发送第一业务数据之前,接收所述真实服务器发送的第二业务数据; 
所述处理模块,用于处理所述接收模块接收的所述第二业务数据,获得所述第一业务数据; 
所述发送模块向所述客户端发送所述信息时,具体用于如果所述处理模块处理完所述真实服务器发送的第二业务数据时尚未发送完所述信息,生成一个携带有所述信息中所有未发送的片段的报文;将生成的所述报文发送给所述客户端。 
在第二方面、或第二方面的第一种可能的实现方式中,还提供了第二方面的第二种可能的实现方式,所述发送模块向所述客户端发送所述信息时,具体用于向所述客户端发送所述至少两个第二报文中的至少一个报文; 
向所述客户端发送所述至少两个第二报文中待发送的报文,发送所述待发送的报文与发送前一个被发送的报文的时间间隔根据预定参数以及所述至少两个第二报文中待发送的报文的数量确定,所述预定参数包括下述至少一种: 所述代理服务器与所述真实服务器之间的会话的传输带宽、所述代理模块处理所述第二业务数据的进度。 
在第二方面的第一种可能的实现方式中,还提供了第二方面的第三种可能的实现方式,所述处理模块具体包括: 
判断单元,用于确定所述第二业务数据是否包含异常数据; 
确定单元,用于若所述判断单元确定所述第二业务数据未包含异常数据,则将所述第二业务数据作为所述第一业务数据;以及若所述判断单元确定所述第二业务数据包含异常数据,则通过从所述第二业务数据中去除所述异常数据获得所述第一业务数据。 
在第二方面、或第二方面的第一种可能的实现方式中,还提供了第二方面的第四种可能的实现方式,若所述代理服务器为基于邮局协议第3版POP3协议的邮件代理服务器,则所述业务数据获取请求为携带有邮件标识的邮件获取请求;所述代理服务器还包括筛选模块; 
所述接收模块,还用于在接收所述业务数据获取请求之前,接收所述客户端发送的邮件列表获取请求; 
所述发送模块,还用于将所述接收模块接收的邮件列表获取请求转发给所述真实服务器; 
所述接收模块,还用于获得所述真实服务器响应所述邮件列表获取请求返回的邮件列表; 
所述筛选模块,用于从所述接收模块接收的所述邮件列表中筛选得到超大邮件列表并保存,所述超大邮件列表包含邮件标识以及对应的邮件大小,所述超大邮件列表包含的邮件大小超过预定大小; 
所述发送模块向所述客户端发送所述信息时,具体用于:判断所述筛选模块得到的所述超大邮件列表中是否包含所述业务数据获取请求携带的邮件标识;若确定所述超大邮件列表中包含所述业务数据获取请求携带的邮件标识,则根据所述超大邮件列表中所述业务数据获取请求携带的邮件标识对应的邮件大小,计算第二发送时间间隔,所述第二发送时间间隔与邮件大小成正比;根据所述第二发送时间间隔,逐个发送所述至少两个第二报文中的每个报文,所述第二发送时间间隔小于所述客户端的会话老化时间。 
第三方面,还提供了一种代理服务器,包括存储器,网络接口和处理器; 
所述存储器,用于存储程序代码; 
所述网络接口,用于接收客户端通过所述代理服务器与所述客户端之间的会话发送的业务数据获取请求,并将所述业务数据获取请求转发给真实服务器;接收所述真实服务器发送的第一报文,所述第一报文用于响应所述业务数据获取请求,所述第一报文携带用以表示所述真实服务器开始传输业务数据的信息; 
所述处理器,用于读取所述存储器中存储的程序代码,执行: 
通过所述网络接口依次向所述客户端发送至少两个第二报文,向所述客户端发送所述信息,所述至少两个第二报文中的每个报文携带所述信息的片段,所述至少两个第二报文中发送次序相邻的两个报文的发送时间间隔小于所述会话的老化时间; 
当所述网络接口发送完所述信息时,在所述会话的老化时间内,通过所述会话向所述客户端发送第一业务数据。 
在第三方面的第一种可能的实现方式中,所述处理器通过所述会话向所述客户端发送第一业务数据之前,所述网络接口还用于接收所述真实服务器发送的第二业务数据; 
所述处理器,还用于处理所述真实服务器发送的第二业务数据,获得所述第一业务数据; 
所述处理器通过所述网络接口向所述客户端发送所述信息时,具体用于: 
如果所述处理器处理完所述真实服务器发送的第二业务数据时尚未发送完所述信息,生成一个携带有所述信息中所有未发送的片段的报文,并通过所述网络接口将生成的所述报文发送给所述客户端。 
在第三方面、或第三方面的第一种可能的实现方式中,还提供了第二方面的第二种可能的实现方式,所述处理器通过所述网络接口向所述客户端发送所述信息时,具体用于: 
通过所述网络接口向所述客户端发送所述至少两个第二报文中的至少一个报文; 
通过所述网络接口向所述客户端发送所述至少两个第二报文中待发送的 报文,发送所述待发送的报文与发送前一个被发送的报文的时间间隔根据预定参数以及所述至少两个第二报文中待发送的报文的数量确定,所述预定参数包括下述至少一种:所述代理服务器与所述真实服务器之间的会话的传输带宽、所述处理器处理所述第二业务数据的进度。 
在第三方面的第一种可能的实现方式中,还提供了第二方面的第三种可能的实现方式,所述处理器处理所述真实服务器发送的第二业务数据,获得所述第一业务数据时,具体用于: 
确定所述第二业务数据是否包含异常数据; 
若确定所述第二业务数据未包含异常数据,则将所述第二业务数据作为所述第一业务数据;以及若确定所述第二业务数据包含异常数据,则通过从所述第二业务数据中去除所述异常数据获得所述第一业务数据。 
在第三方面、或第三方面的第一种可能的实现方式中,还提供了第二方面的第四种可能的实现方式,若所述代理服务器为基于邮局协议第3版POP3协议的邮件代理服务器,则所述业务数据获取请求为携带有邮件标识的邮件获取请求; 
所述网络接口接收所述业务数据获取请求之前,还用于将所述客户端发送的邮件列表获取请求转发给所述真实服务器;获得所述真实服务器响应所述邮件列表获取请求返回的邮件列表; 
所述处理器,还用于从所述邮件列表中筛选得到超大邮件列表并保存,所述超大邮件列表包含邮件标识以及对应的邮件大小,所述超大邮件列表包含的邮件大小超过预定大小; 
所述处理器通过所述网络接口向所述客户端发送所述信息时,具体用于: 
判断所述超大邮件列表中是否包含所述业务数据获取请求携带的邮件标识; 
若确定所述超大邮件列表中包含所述业务数据获取请求携带的邮标识,则根据所述超大邮件列表中所述业务数据获取请求携带的邮件标识对应的邮件大小,计算第二发送时间间隔,所述第二发送时间间隔与邮件大小成正比; 
所述网络接口根据所述第二发送时间间隔,逐个发送所述至少两个第 
二报文中的每个报文,所述第二发送时间间隔小于所述客户端的会话老化时间。 
第四方面,还提供了一种网络系统,包括客户端、真实服务器以及上述第三方面、或第三方面的任意一种可能的实现方式所述的代理服务器。 
在本发明实施例提供的对代理服务器和客户端之间的会话进行保活方法中,代理服务器在接收到真实服务器发送的携带有用以表示所述真实服务器开始传输业务数据的信息的第一报文后,通过将该信息分布在多个第二报文中,将所述信息发送给客户端,其中所述至少两个第二报文中发送次序相邻的两个报文的发送时间间隔小于所述会话的老化时间。当所述代理服务器发送完所述信息时,在所述会话的老化时间内,所述代理服务器通过所述会话向所述客户端发送处理后的第一业务数据。即代理服务器通过切分上述信息,并通过携带上述信息的片段的第二报文来实现会话保活,而不是像现有技术通过发送携带“X-KeepAlive\r\n”保活报文来实现会话保活,避免了在邮件内容正常的情况下,客户端接收的邮件内容被篡改的问题。 
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。 
图1为本发明实施例的中代理服务器的部署结构示意图; 
图2为本发明实施例一提供的会话保活方法的流程图; 
图3为本发明实施例一提供的另一种会话保活方法的示意图; 
图4为本发明实施例一提供的另一种会话保活方法的示意图; 
图5为本发明实施例二提供的另一种会话保活方法的示意图; 
图6为本发明实施例三提供的一种会话保活方法的示意图; 
图7为本发明实施例四提供的一种会话保活方法的示意图; 

图8为本发明实施例五提供的一种代理服务器的结构示意图; 
图9为本发明实施例五提供的另一种代理服务器的结构示意图; 

图10为本发明实施例五提供的另一种代理服务器的结构示意图; 
图11为本发明实施例五提供的另一种代理服务器的结构示意图。 
具体实施方式
现有技术中客户端通过与代理服务器之间的会话接收数据,并根据接收到的数据重组出邮件时,保活报文的载荷内容,例如“X-KeepAlive\r\n”也被重组到了邮件中。从而导致即便邮件为正常邮件,经客户端重组得到的邮件与真实服务器发送的邮件相比,邮件内容也会发生篡改,给用户阅读造成困难和不必要的干扰。 
为解决上述问题,本发明实施例提出了一种会话保护方案,接下来通过多个实施例对该方案进行详细的描述。 
实施例一 
本发明实施例提供了一种会话保活方法,该方法的执行主体是具备代理服务器功能的网络设备,可选地,该网络设备可以是网络防火墙,也可以是专用的HTTP代理服务器、邮件代理服务器等等。其中邮件服务器又至少包括基于POP3的邮件代理服务器、基于IMAP4的邮件代理服务器。 
附图1中的代理服务器位于局域网边界出口、与承载网连接的位置,此外代理服务器也可以部署于真实服务器前端,即介于真实服务器和互联网之间,或者在其他位置部署。代理服务器分别与客户端(如图1中的客户端100、客户端101和客户端102)建立会话,同时与服务器建立会话。本申请中的客户端和服务器可以是实体设备也可以是运行在实体设备上的应用程序。 
附图2是本发明实施例提供的会话保活方法的流程图,该方法包括: 
步骤10,代理服务器接收客户端通过所述代理服务器与所述客户端之间的会话发送的业务数据获取请求,并将所述业务数据获取请求转发给真实服务器。 
根据业务类型以及承载协议的不同,业务数据获取请求的具体报文格式也有所不同。然而对于大多数基于请求的服务而言,客户端在获得服务器的业务 数据之前,常常要向服务器发送业务数据获取请求。例如,对于邮件服务,客户端首先向服务器发送邮件获取请求,然后服务器根据邮件获取请求向客户端返回所需的邮件数据;对于网页服务,客户端首先向服务器发送携带统一资源定位符(Uniform Resource Locator,简称URL)、或文件名称等资源标识的网页请求,然后服务器根据网页请求向客户端返回所需的资源,该资源可以是网页数据或文件数据等。 
步骤20,所述代理服务器接收所述真实服务器发送的第一报文,所述第一报文用于响应所述业务数据获取请求,所述第一报文携带用以表示所述真实服务器开始传输业务数据的信息。 
与前面的业务数据获取请求类似,根据业务类型以及承载协议的不同,第一报文的具体报文格式也有所不同。客户端在接收到上述信息之后,就做好准备接收业务数据的准备,将后续接收到的报文的载荷内容进行分片重组,从而得到所需的业务数据。 
步骤30,所述代理服务器通过依次向所述客户端发送至少两个第二报文,向所述客户端发送所述信息,所述至少两个第二报文中的每个报文携带所述信息的片段,所述至少两个第二报文中发送次序相邻的两个报文的发送时间间隔小于所述会话的老化时间。 
代理服务器在接收到上述第一报文之后,不是像现有技术一样直接将第一报文转发给客户端,而是将第一报文携带的信息分布到至少两个第二报文中,其中每个第二报文携带所述信息的片段,通过在所述会话上依次向所述客户端发送至少两个第二报文,一方面实现向所述客户端转发所述信息的效果,另一方面实现会话保活的效果。 
其中,所述至少两个第二报文中发送次序相邻的两个报文分别携带的所述片段在所述信息中的位置相邻。这样客户端在接收到所述至少两个第二报文,通过对所述至少两个第二报文携带的信息的片段进行重组,就可以得到完整的所述信息,从而为后续接收业务数据做好准备。 
可选地,所述至少两个第二报文中的每个报文携带的所述信息的片段的大小可以相同,也可以不同。 
可选地,所述代理服务器在向所述客户端发送至少两个第二报文时,可以 以设定时间间隔,定期逐个发送所述至少两个第二报文中的每个第二报文,其中所述设定的时间间隔小于所述客户端的会话老化时间。 
所述代理服务器也可以以变化的时间间隔,逐个发送所述至少两个第二报文中的每个第二报文,例如,第一个第二报文和第二个第二报文之间的发送时间间隔,与第二个第二报文和第三个第二报文之间的发送时间间隔不同,只要保证发送次序相邻的两个第二报文的发送时间间隔小于所述客户端的会话老化时间即可。 
步骤40,当所述代理服务器发送完所述信息时,在所述会话的老化时间内,所述代理服务器通过所述会话向所述客户端发送第一业务数据。 
换句话说,最后一个发送的第二报文与最先发送的承载第一业务数据的报文之间的发送时间间隔也需要小于所述会话的老化时间内,以防止所述代理服务器与所述客户端之间的会话因长时间未传输数据而被异常关闭。 
需要在这里说明的是:本申请说明书中上述第一报文和第二报文并不是表示顺序关系,而是为了区别不同类型的报文,如承载不同类型信息或数据的报文,第一业务数据以及后面出现的第二业务数据也是为了区别不同的业务数据,如第一业务数据是代理服务器发送给客户端的业务数据,第二业务数据是真实服务器发送给代理服务器的业务数据。 
本发明实施例提供了一种对代理服务器和客户端之间的会话进行保护的方法,代理服务器在接收到真实服务器发送的携带有用以表示所述真实服务器开始传输业务数据的信息的第一报文后,通过将该信息分布在多个第二报文中,将所述信息发送给客户端,其中所述至少两个第二报文中发送次序相邻的两个报文的发送时间间隔小于所述会话的老化时间。当所述代理服务器发送完所述信息时,在所述会话的老化时间内,所述代理服务器通过所述会话向所述客户端发送处理后的第一业务数据。这样,客户端在接收到所述至少两个第二报文后,经过重组可以得到上述信息,并在得到该信息后可以直接接收业务数据。换句话说,代理服务器通过切分上述信息,并通过携带上述信息的片段的第二报文来实现会话保活,而不是重新构造保活报文,从而避免现有技术客户端在接收到上述信息后、接收到代理服务器发送的第一业务数据之前,还会接 收到多个由代理服务器构造的携带“X-KeepAlive\r\n”保活报文造成的重组后的业务数据被不合理地篡改的问题。 
并且本发明实施例提供的会话保活方法,不仅能适应代理服务器为邮件代理服务器的情况,当代理服务器为HTTP代理服务器、或是文件传输协议(File Transfer Protocol,简称FTP)代理服务器等其他业务或协议的代理服务器时同样适用,具有良好的通用性。 
可选地,请参照附图3,本实施例还提供了另一种会话保活方法,其中步骤10至步骤40与附图2中的基本相同,在这里就不再展开描述。本实施例在附图2所示方法的基础上,对会话保活过程中业务数据的处理进行了更为详细的介绍。 
步骤10,代理服务器接收客户端通过所述代理服务器与所述客户端之间的会话发送的业务数据获取请求,并将所述业务数据获取请求转发给真实服务器。 
步骤20,所述代理服务器接收所述真实服务器发送的第一报文,所述第一报文用于响应所述业务数据获取请求,所述第一报文携带用以表示所述真实服务器开始传输业务数据的信息。 
步骤30,所述代理服务器通过依次向所述客户端发送至少两个第二报文,向所述客户端发送所述信息,所述至少两个第二报文中的每个报文携带所述信息的片段,所述至少两个第二报文中发送次序相邻的两个报文的发送时间间隔小于所述会话的老化时间。 
步骤40,当所述代理服务器发送完所述信息时,在所述会话的老化时间内,所述代理服务器通过所述会话向所述客户端发送第一业务数据。 
在上述步骤40之前,步骤20之后还包括: 
步骤50,所述代理服务器接收所述真实服务器发送的第二业务数据; 
步骤60,所述代理服务器处理所述真实服务器发送的第二业务数据,获得所述第一业务数据。 
具体处理包括但不限于:对第一业务数据进行缓存,并对缓存结果进行安全检测以确定所述第二业务数据未包含异常数据;或者,在第一业务数据中添 加数字水印、提醒信息、广告信息等预定数据。在这里不再一一列举。 
在这种情况下,所述步骤30进一步包括: 
步骤301,所述代理服务器处理完所述真实服务器发送的第二业务数据时,判断是否已发完所述用以表示所述真实服务器开始传输业务数据的信息;若是执行步骤40;如果所述代理服务器处理完所述真实服务器发送的第二业务数据时尚未发送完所述信息,执行步骤302。 
步骤302,如果所述代理服务器处理完所述真实服务器发送的第二业务数据时尚未发送完所述信息,所述代理服务器生成一个携带有所述信息中所有未发送的片段的报文, 
步骤303,所述代理服务器将生成的所述报文发送给所述客户端,执行步骤40。 
本发明实施例提供的方案中,如果所述代理服务器处理完所述真实服务器发送的第二业务数据时尚未发送完所述信息,则将所有未发送的片段打包到最后一个第二报文,并将这最后一个第二报文发送给所述客户端。然后在所述会话的老化时间内,通过所述会话向所述客户端发送第一业务数据。换句话说,所述代理服务器获得第一业务数据后,无需再等待在发送多个第二报文之后,才能向客户端发送第一业务数据,缩短了客户端从发送业务数据获取请求到接收到业务数据的等待时间,同时减少了客户端与代理服务器之间传输的报文数量。 
可选地,在附图2的上述步骤30,代理服务器通过依次向所述客户端发送至少两个第二报文,向所述客户端发送所述信息的过程中,代理服务器也可以随时实时地调整发送次序相邻的第二报文的发送时间间隔,从而在保证会话不会异常关闭的情况下,精确地确定发送顺序相邻的两个第二报文的发送时间间隔。请参照附图4,该方法包括: 
步骤401,代理服务器向所述客户端发送所述至少两个第二报文中的至少一个报文。 
也就是说,重新调整发送时间间隔的时机很多,具体的,在发送所述至少两个第二报文中的第一个报文之后,在尚未发送完所述信息之前,都可以调整 发送时间间隔。 
步骤402,代理服务器向所述客户端发送所述至少两个第二报文中待发送的报文,发送所述待发送的报文与发送前一个被发送的报文的时间间隔根据预定参数以及所述至少两个第二报文中待发送的报文的数量确定,所述预定参数包括下述至少一种:所述代理服务器与所述真实服务器之间的会话的传输带宽、所述代理服务器处理所述第二业务数据的进度。 
具体地,代理服务器首先获得预定参数、以及所述至少两个第二报文中待发送的报文的数量。所述至少两个第二报文中待发送的报文的数量大于1、且小于或等于所述尚未发送的所述信息的片段的数量。这是因为每个第二报文至少携带一个所述信息的片段。一个具体的例子是: 
代理服务器每次从所述信息中取出1个字节的片段,封装在一个第二报文中,将该第二报文发送给客户端。假设,客户端的会话老化时间是5秒,用以表示所述真实服务器开始传输业务数据的信息包括5个字节,发送间隔的基准是2秒。 
代理服务器在发送完第一个第二报文(携带1字节的所述信息的片段)后,还剩余4字节的所述信息的片段,此时确定待发送的第二报文的数量为4个(每个第二报文携带1字节的所述信息的片段),当然也可以确定待发送的第二报文的数量为3个(其中两个第二报文携带1字节的所述信息的片段,一个第二报文携带2字节的所述信息的片段),以此类推,其他可能的情况不再一一列举。这里仅以待发送的第二报文的数量为4个为例进行说明。 
代理服务器根据代理服务器与所述真实服务器之间的会话的传输带宽和/或所述代理服务器处理所述第二业务数据的进度,估算处理完所述第二业务数据所需的时间,进而确定发送所述待发送的第二报文时的时间间隔。具体的估算方案可以是查询预先根据经验值设定的记录表,也可以是其他估算方案,这里假设仅根据处理所述第二业务数据的进度来估算:所述代理服务器处理数据的经验值为1兆/秒,第二业务数据中还有9兆未处理,那么预计处理完第二业务数据还需9秒。如果仍然按照2秒间隔时间发送,则发送完剩余4个第二报文时,第二数据尚未处理完毕,则可以适当延长发送时的时间间隔,例如将待发送的4个第二报文的发送时间间隔调整为3秒,以确保按照调整后的时间间 隔发送待发送的第二报文不会导致会话异常关闭。在这个实例中,5个第二报文中相邻报文的发送时间间隔分别是:2秒、3秒、3秒、3秒。在最后1个报文发送时,第二业务数据即可处理完毕,代理服务器就可以开始向客户端发送第一业务数据,从而避免因发送时间间隔大于会话老化时间5秒造成会话异常关闭。 
在上述实例中,在通过多个第二报文发送上述信息时,调整发送时间间隔的操作可以多次执行,如发送完第二个第二报文后,可以再次执行附图4的调整方案,再次调整发送剩余3个第二报文的时间间隔。 
本发明实施例附图4提供的方案,给出了在表示所述真实服务器开始传输业务数据的信息的大小有限的情况下,如何实时调整所述至少两个第二报文中后续待发送的报文的发送时间间隔的方法,从而提高了会话保活方法在实施时的可靠性。 
实施例二 
本发明实施例以代理服务器为基于POP3的邮件代理服务器为例,结合附图5所示的时序图,对本发明实施例提供的会话保活方法进行介绍。 
如附图5所示,网络系统中至少包括客户端,代理服务器和真实的邮件服务器(下面简称邮件服务器)。 
步骤501,客户端发送邮件列表获取请求,该请求所携带的载荷内容为“LIST\r\n”。该请求中还携带客户端的标识。 
不同用途的请求消息中载荷内容的具体设定方式请参照POP3协议相关标准,在这里不进行详述。 
步骤502,代理服务器将所述邮件列表获取请求转发给所述邮件服务器。 
步骤503,邮件服务器在接收到上述邮件列表获取请求后,返回邮件列表作为对所述邮件列表获取请求的响应。 
具体的,邮件服务器在接收到上述邮件列表获取请求后,根据携带的客户端的标识查询该客户端的邮件列表,并将该邮件列表返回给所述客户端。该邮件列表中包含邮件标识以及对应的邮件大小。表1为邮件列表的一个示例。 
表1 
邮件标识 邮件大小(兆) 1 20M 2 2M 3 0.5M
步骤504,代理服务器获得上述邮件列表后,从所述邮件列表中筛选得到超大邮件列表并保存,所述超大邮件列表包含邮件标识以及对应的邮件大小,所述超大邮件列表包含的邮件大小超过预定大小。 
筛选规则用于代理服务器从邮件列表中选择出满足条件的邮件标识及对应的邮件大小,保存到超大邮件列表中,超大邮件列表中的邮件由于数据量较大,在缓存和检测该邮件的过程中所需时间较长,发生会话异常关闭的可能性较高,所以需要进行会话保活。不在超大邮件列表中的邮件由于数据量较小,发生会话异常关闭的可能性较低,所以不需要进行会话保活。 
筛选规则具体可以根据代理服务器的处理性能而灵活设置,如果代理服务器处理性能较高,则筛选规则中的筛选阈值可以设置较大,如设置为10M,如果代理服务器处理性能较低,则筛选规则中的筛选阈值可以设置较小,如设置为2M。 
在本实施例中,假设筛选规则规定选择邮件标识对应的邮件大小超过10M的加入超大邮件列表。获得的超大邮件列表如表2所示。 
表2 
邮件标识 邮件大小(兆) 1 20M
代理服务器通过超大邮件列表实现了只对部分邮件在邮件数据处理过程中进行会话保活处理,而不是对每个邮件在检测处理过程中进行会话保活处理,简化了处理复杂性。 
步骤505,代理服务器将上述邮件列表转发给客户端。 
上述步骤504和步骤505的执行顺序不进行限定。 
步骤506,客户端发送邮件数据获取请求,具体携带载荷内容为“RETR1\r\n”。 
在本实施例中,业务数据获取请求为邮件获取请求,邮件获取请求中携带邮件标识,本实施例中的邮件标识为1,即客户端想要获取邮件标识为1的邮件的数据。 
步骤507,代理服务器将上述邮件数据获取请求转发给邮件服务器。 
步骤508,代理服务器判断步骤504获得的超大邮件列表中是否包含上述邮件数据获取请求中携带的邮件标识。 
如果确定超大邮件列表中包含所述邮件数据获取请求携带的邮件标识,则代理服务器在接收到第一报文后,执行步骤510。否则在接收到第一报文后,执行现有无需会话保活处理流程:即将第一报文直接转发给客户端,然后对邮件服务器发送的邮件数据进行缓存、检测等处理,将处理后的邮件数据发送给客户端,在此过程中无需执行会话保活处理。 
步骤509,邮件服务器发送第一报文,所述第一报文用于响应上述邮件数据获取请求,所述第一报文携带用以表示所述真实服务器开始传输业务数据的信息。本实施例中,所述信息具体为“+OK\r\n”。 
步骤510,代理服务器根据所述超大邮件列表中所述业务数据获取请求携带的邮件标识对应的邮件大小,计算发送时间间隔,所述发送时间间隔与邮件大小成正比。 
具体地,代理服务器先根据表2中邮件标识为1对应的邮件大小20兆,估算处理完20兆邮件数据所需的时间,具体的估算方案可以是查询预先根据经验值设定的记录表,也可以是其他估算方案,这里假设根据经验值设定的记录表如表3所示。 
表3 
邮件大小(兆) 处理时间(秒) 20M 10秒 30M 15秒 40M 20秒
代理服务器根据表3可以确定出处理完邮件1的20兆邮件数据大致需要10秒,第一报文携带的用以表示所述真实服务器开始传输业务数据的信息为5个字节,如果按照每个第二报文携带1字节的方式来切分上述信息,则最多可 以切分成5个片段(产生4个发送时间间隔),如果发送时间间隔为3秒(10秒/4个=3秒),可以保证在发送完携带上述信息最后1字节的片段的第二报文之前,可以处理完20兆邮件数据,且该发送时间间隔小于会话老化时间,满足要求。 
如果按上述第二报文携带1字节的方式来切分上述信息,计算出的发送时间间隔大于会话老化时间,则重新计算以更小的切分方案来切分上述信息时,例如以0.5字节切分上述信息时,得到的发送时间间隔,依次类推,直到找到一种切分方案,第二报文以该种切分结果携带上述信息时,发送时间间隔小于会话老化时间为止,在这里不再一一举例。 
步骤511,代理服务器根据步骤510计算出的发送时间间隔,在上述会话上向客户端发送5个第二报文。 
如第一个第二报文携带内容为“+”、第二个第二报文携带内容为“O”、第三个第二报文携带内容为“K”、第四个第二报文携带内容为“\r”、第五个第二报文携带内容为“\n”,上述各第二报文的发送时间间隔为3秒。 
步骤512,代理服务器接收邮件服务器发送的邮件数据。 
步骤513,代理服务器对邮件服务器发送的邮件数据进行处理。 
具体地,代理服务器对邮件服务器发送的邮件数据进行安全检测,例如用病毒扫描引擎对邮件服务器发送的邮件数据进行安全扫描,以确定是否包含异常数据; 
若确定邮件服务器发送的邮件数据未包含异常数据,则将邮件服务器发送的邮件数据作为处理后的业务数据;以及若确定所述邮件服务器发送的邮件数据包含异常数据,则通过从所述邮件服务器发送的邮件数据中去除所述异常数据获得所述处理后的邮件数据。 
需说明的是:由上述步骤512和步骤513组成的子流程可以和步骤511并行执行。 
步骤514,代理服务器在所述会话的老化时间内,通过所述会话向所述客户端发送处理后的邮件数据。 
可选地,可以与实施例一中的具体方式相结合,例如,代理服务器处理完邮件服务器发送的业务数据时,发现尚未发送完所述信息中的最后2个字节 (“\r\n”),生成一个携带有上述最后2个字节的报文,并将生成的所述报文发送给所述客户端,之后就可以开始向客户端发送处理后的业务数据。 
可选地,代理服务器在步骤511中,也可以采用实施例一附图4对应的实时调整发送次序相邻的第二报文的发送时间间隔的方式。实施原理与实施例一中基本类似,所以具体在这里不再详细展开。 
本发明实施例以代理服务器为基于POP3的邮件代理服务器为例,对提供的会话保活方法进行了详细介绍。由于POP3在邮件服务器向客户端发送邮件数据之前,代理服务器可以先获得包含邮件标识和对应的邮件大小的邮件列表。因此,在后续代理服务器可以有选择地在对大邮件的邮件数据进行缓存、检测等处理过程中发送保活报文,而在对小邮件的邮件数据进行缓存、检测等处理过程省略发送保活报文的步骤,简化了处理复杂性,有助于节约带宽资源。 
实施例三 
本发明实施例以代理服务器为基于IMAP4的邮件代理服务器为例,结合附图6所示的时序图,对本发明实施例提供的会话保活方法进行介绍。 
如附图6所示,网络系统中至少包括客户端,代理服务器和真实的邮件服务器。客户端需要通过代理服务器从邮件服务器获得一封邮件,假定客户端已通过认证登录到邮箱中。 
步骤601,客户端发送邮件数据获取请求,具体携带载荷内容为“hmvx UID FETCH28(UID FLAGS BODY.PEEK[])”。 
步骤602,代理服务器将上述邮件数据获取请求转发给邮件服务器。 
步骤603,邮件服务器发送第一报文,所述第一报文用于响应上述邮件数据获取请求,所述第一报文携带用以表示所述邮件服务器开始传输邮件数据的信息。本实施例中,所述信息具体为“*1FETCH(UID28FLAGS(\Recent)BODY[]”。 
步骤604,代理服务器通过所述会话向客户端发送至少两个第二报文,所述至少两个第二报文中的每个报文携带所述信息的片段,所述至少两个第二报文中发送次序相邻的两个报文的发送时间间隔小于所述会话的老化时间。 
可选地,可以按照预先设定的发送时间间隔发送至少两个第二报文,假设 会话老化时间为5秒,则上述发送时间间隔要小于5秒,例如,可以设置为2秒,或者3秒。在本实施例中每个第二报文携带上述信息的1字节的片段,然而这并不构成限定。每个第二报文携带的所述信息的片段大小不限,只要发送次序相邻的两个报文分别携带的所述片段在所述信息中的位置相邻,保证客户端可以重组出上述信息即可。例如,第一个第二报文携带上述信息的3个字节“*SPACE1”(其中SPACE表示空格),第二个第二报文携带上述信息的1个字节“SPACE”,第三个第二报文携带上述信息的2个字节“FE”等等。为了处理便捷性,每个第二报文可以携带上述信息的1个字节,本实施例中以每个第二报文携带上述信息的1个字节为例进行说明。 
可选地,还可以以实施例一附图4对应的实时调整发送次序相邻的第二报文的发送时间间隔的方式,向客户端发送至少两个第二报文。例如,假设每个第二报文中携带上述信息中的1个字节,代理服务器在接收邮件数据获取请求之后的2秒(预先设定的基准时间),向客户端发送携带有上述信息第一个字节“*”的第一个第二报文,在发送后续第二报文时,根据预定参数实时调整发送时间间隔。实施原理与实施例一中基本类似,所以具体在这里不再详细展开。 
步骤605,代理服务器接收邮件服务器发送的待发送邮件数据的文字(literal)值24773。 
步骤606,代理服务器接收邮件服务器发送的邮件数据。 
步骤607,代理服务器对邮件服务器发送的邮件数据进行处理。 
具体地,在本实施例中假设代理服务器对邮件服务器发送的邮件数据进行安全检测后发现,邮件服务器发送的邮件数据不符合预先设定的安全策略,如携带了异常的附件,则从邮件服务器发送的邮件数据中删除附件数据、并添加宣告后得到处理后的邮件数据,然后重新计算文字值,文字值由24773减小到1800。 
上述步骤605~607组成的子流程可以与步骤604并行执行。 
步骤608,代理服务器在所述会话的老化时间内,通过所述会话向所述客户端发送处理后的文字值和邮件数据。 
具体地,在本实施例中第一报文携带用以表示所述真实服务器开始传输业 务数据的信息的数据量较大,假设在步骤607代理服务器对邮件服务器发送的邮件数据进行处理结束时,上述信息中还有片段“ETCH(UID28FLAGS(\Recent)BODY[]”尚未发送,则代理服务器生成一个携带有上述尚未发送的片段“ETCH(UID28FLAGS(\Recent)BODY[]”的第二报文,并将生成的所述报文发送给所述客户端,之后就可以开始向客户端发送处理后的文字值和邮件数据。显然,发送携带有“ETCH(UID28FLAGS(\Recent)BODY[]”的第二报文与发送携带有文字值的报文之间的发送时间间隔应小于会话老化时间。 
本发明实施例以代理服务器为基于IMAP4的邮件代理服务器为例,对提供的会话保活方法进行了详细介绍。 
实施例四 
本发明实施例以代理服务器为基于HTTP的网页代理服务器为例,结合附图7所示的时序图,对本发明实施例提供的会话保活方法进行介绍。 
如附图7所示,网络系统中至少包括客户端,代理服务器和真正HTTP服务器(下面简称HTTP服务器)。客户端需要通过代理服务器从HTTP服务器上获取一个名称为eicar.rar的文件。 
步骤701,客户端发送业务数据获取请求,具体携带载荷内容为“GET/eicar.rar HTTP/1.1”。 
步骤702,代理服务器将上述业务数据获取请求转发给HTTP服务器。 
步骤703,HTTP服务器发送第一报文,所述第一报文用于响应上述业务数据获取请求,所述第一报文携带用以表示所述HTTP服务器开始传输业务数据的信息。本实施例中,所述信息具体为“HTTP/1.1200OK”。 
步骤704,代理服务器向客户端发送至少两个第二报文,所述至少两个第二报文中的每个报文携带所述信息的片段,所述至少两个第二报文中发送次序相邻的两个报文的发送时间间隔小于所述会话的老化时间。 
可选地,可以按照预先设定的发送时间间隔发送至少两个第二报文,假设会话老化时间为5秒,则上述发送时间间隔要小于5秒,例如,可以设置为2秒,或者3秒。每个第二报文携带的所述信息的片段大小不限,只要发送次序相邻的两个报文分别携带的所述片段在所述信息中的位置相邻,保证客户端可 以重组出上述信息即可。本实施例中以每个第二报文携带上述信息的1个字节为例进行说明。 
可选地,还可以以实施例一附图4对应的实时调整发送次序相邻的第二报文的发送时间间隔的方式,向客户端发送至少两个第二报文。例如,假设每个第二报文中携带上述信息中的1个字节,代理服务器在接收业务数据获取请求之后的2秒(预先设定的基准时间),向客户端发送携带有上述信息第一个字节“H”的第一个第二报文,在发送后续第二报文时,根据预定参数实时调整发送时间间隔。实施原理与实施例一中基本类似,所以具体在这里不再详细展开。 
步骤705,代理服务器接收HTTP服务器发送的文件eicar.rar的数据。 
步骤706,代理服务器对HTTP服务器发送的文件eicar.rar的数据进行处理。 
具体地,代理服务器对HTTP服务器发送的文件eicar.rar的数据进行缓存和安全检测。在本实施例中假设代理服务器对HTTP服务器发送的文件eicar.rar的数据进行安全检测后发现,HTTP服务器发送的文件eicar.rar的数据符合预先设定的安全策略。HTTP服务器发送的文件eicar.rar的数据即为处理后的业务数据。 
上述步骤705和步骤706组成的子流程与步骤704可并行执行。 
步骤707,代理服务器在所述会话的老化时间内,通过所述会话向所述客户端发送处理后的业务数据。 
具体地,假设在步骤706代理服务器对HTTP服务器发送的文件eicar.rar的数据进行处理结束时,上述信息中还有片段“/1.1200OK”尚未发送,则代理服务器生成一个携带有上述尚未发送的片段“/1.1200OK”的第二报文,并将生成的所述报文发送给所述客户端,之后就可以开始向客户端发送处理后的业务数据。显然,发送携带有“/1.1200OK”的第二报文与发送携带有处理后的业务数据的报文之间的发送时间间隔应小于会话老化时间。 
本发明实施例以代理服务器为基于HTTP的网页代理服务器为例,对提供的会话保活方法进行了详细介绍。 
实施例五 
本发明实施例提供了一种代理服务器,附图8为该代理服务器的结构示意图,该代理服务器包括:接收模块801和发送模块802,其中: 
接收模块801,用于接收客户端通过所述代理服务器与所述客户端之间的会话发送的业务数据获取请求; 
发送模块802,用于将所述接收模块801接收的所述业务数据获取请求转发给真实服务器; 
所述接收模块801,还用于接收所述真实服务器发送的第一报文,所述第一报文用于响应发送模块802发送的所述业务数据获取请求,所述第一报文携带用以表示所述真实服务器开始传输业务数据的信息; 
所述发送模块802,还用于通过依次向所述客户端发送至少两个第二报文,向所述客户端发送所述接收模块803接收的第一报文携带的所述信息,所述至少两个第二报文中的每个报文携带所述信息的片段,所述至少两个第二报文中发送次序相邻的两个报文的发送时间间隔小于所述会话的老化时间;在发送完所述信息时,在所述会话的老化时间内,所述代理服务器通过所述会话向所述客户端发送第一业务数据。 
可选地,附图8所示的代理服务器还包括处理模块803,在这种情况下: 
所述接收模块801,还用于在发送模块802通过所述会话向所述客户端发送第一业务数据之前,接收所述真实服务器发送的第二业务数据; 
所述处理模块803,用于处理所述接收模块801接收到的所述第二业务数据,获得所述第一业务数据; 
所述发送模块802向所述客户端发送所述信息时,具体用于如果所述处理模块803处理完所述真实服务器发送的第二业务数据时尚未发送完所述信息,生成一个携带有所述信息中所有未发送的片段的报文;将生成的所述报文发送给所述客户端。 
可选地,所述发送模块向所述客户端发送所述信息时,可以以预先设定的发送时间间隔,定期的向所述客户端发送携带有所述信息的片段的第二报文,也可以实时调整发送相邻第二报文的发送时间间隔,即: 
所述发送模802块向所述客户端发送所述信息时,具体用于向所述客户端发送所述至少两个第二报文中的至少一个报文; 
向所述客户端发送所述至少两个第二报文中待发送的报文,发送所述待发送的报文与发送前一个被发送的报文的时间间隔根据预定参数以及所述至少两个第二报文中待发送的报文的数量确定,所述预定参数包括下述至少一种:所述代理服务器与所述真实服务器之间的会话的传输带宽、所述代理模块处理所述第二业务数据的进度。 
可选地,请参照附图9,处理模块具体可以对第一业务数据进行安全检测以确定所述第二业务数据未包含异常数据,上述处理模块803具体包括: 
判断单元901,用于确定所述第二业务数据是否包含异常数据; 
确定单元902,用于若所述判断单元901确定所述第二业务数据未包含异常数据,则将所述第二业务数据作为所述第一业务数据;以及若所述判断单元901确定所述第二业务数据包含异常数据,则通过从所述第二业务数据中去除所述异常数据获得所述第一业务数据。 
请参照附图10,若附图8或9中的代理服务器为基于邮局协议第3版POP3协议的邮件代理服务器,则所述业务数据获取请求为携带有邮件标识的邮件获取请求;所述代理服务器还包括筛选模块804; 
所述接收模块801,还用于在接收所述业务数据获取请求之前,接收所述客户端发送的邮件列表获取请求; 
所述发送模块802,用于将所述接收模块801接收的邮件列表获取请求转发给所述真实服务器; 
所述接收模块803,还用于获得所述真实服务器响应所述发送模块802发送的所述邮件列表获取请求返回的邮件列表; 
所述筛选模块804,用于从所述接收模块803接收的所述邮件列表中筛选得到超大邮件列表并保存,所述超大邮件列表包含邮件标识以及对应的邮件大小,所述超大邮件列表包含的邮件大小超过预定大小; 
所述发送模块802向所述客户端发送所述信息时,具体用于判断所述筛选模块804得到的所述超大邮件列表中是否包含所述业务数据获取请求携带的邮 件标识;若确定所述超大邮件列表中包含所述业务数据获取请求携带的邮件标识,则根据所述超大邮件列表中所述业务数据获取请求携带的邮件标识对应的邮件大小,计算第二发送时间间隔,所述第二发送时间间隔与邮件大小成正比;根据所述第二发送时间间隔,逐个发送所述至少两个第二报文中的每个报文,所述第二发送时间间隔小于所述客户端的会话老化时间。 
本发明实施例还提供了另一种代理服务器,该代理服务器的结构如附图11所示,包括存储器110,网络接口120和处理器130;存储器110,网络接口120和处理器130通过总线实现相互连接。 
所述存储器110,用于存储程序代码; 
所述网络接口120,用于接收客户端通过所述代理服务器与所述客户端之间的会话发送的业务数据获取请求,并将所述业务数据获取请求转发给真实服务器;接收所述真实服务器发送的第一报文,所述第一报文用于响应所述业务数据获取请求,所述第一报文携带用以表示所述真实服务器开始传输业务数据的信息; 
所述处理器130,用于读取所述存储器中存储的程序代码,执行: 
通过所述网络接口120依次向所述客户端发送至少两个第二报文,向所述客户端发送所述信息,所述至少两个第二报文中的每个报文携带所述信息的片段,所述至少两个第二报文中发送次序相邻的两个报文的发送时间间隔小于所述会话的老化时间; 
当所述网络接口120发送完所述信息时,在所述会话的老化时间内,通过所述会话向所述客户端发送第一业务数据。 
可选地,所述处理器130通过所述会话向所述客户端发送第一业务数据之前,所述网络接口还用于接收所述真实服务器发送的第二业务数据; 
所述处理器130,还用于处理所述真实服务器发送的第二业务数据,获得所述第一业务数据; 
所述处理器130通过所述网络接口120向所述客户端发送所述信息时,具体用于: 
如果所述处理器130处理完所述真实服务器发送的第二业务数据时尚未发送完所述信息,生成一个携带有所述信息中所有未发送的片段的报文,并通过所述网络接口120将生成的所述报文发送给所述客户端。 
可选地,所述处理器130通过所述网络接口120向所述客户端发送所述信息时,具体用于: 
通过所述网络接口120向所述客户端发送所述至少两个第二报文中的至少一个报文; 
通过所述网络接口120向所述客户端发送所述至少两个第二报文中待发送的报文,发送所述待发送的报文与发送前一个被发送的报文的时间间隔根据预定参数以及所述至少两个第二报文中待发送的报文的数量确定,所述预定参数包括下述至少一种:所述代理服务器与所述真实服务器之间的会话的传输带宽、所述处理器处理130所述第二业务数据的进度。 
可选地,所述处理器130处理所述真实服务器发送的第二业务数据,获得所述第一业务数据时,具体用于: 
确定所述第二业务数据是否包含异常数据; 
若确定所述第二业务数据未包含异常数据,则将所述第二业务数据作为所述第一业务数据;以及若确定所述第二业务数据包含异常数据,则通过从所述第二业务数据中去除所述异常数据获得所述第一业务数据。 
可选地,若所述代理服务器为基于POP3协议的邮件代理服务器,则所述业务数据获取请求为携带有邮件标识的邮件获取请求; 
所述网络接口120接收所述业务数据获取请求之前,还用于将所述客户端发送的邮件列表获取请求转发给所述真实服务器;获得所述真实服务器响应所述邮件列表获取请求返回的邮件列表; 
所述处理器130,还用于从所述邮件列表中筛选得到超大邮件列表并保存,所述超大邮件列表包含邮件标识以及对应的邮件大小,所述超大邮件列表包含的邮件大小超过预定大小; 
所述处理器130通过所述网络接口120向所述客户端发送所述信息时,具体用于: 
判断所述超大邮件列表中是否包含所述业务数据获取请求携带的邮件标识; 
若确定所述超大邮件列表中包含所述业务数据获取请求携带的邮标识,则根据所述超大邮件列表中所述业务数据获取请求携带的邮件标识对应的邮件大小,计算第二发送时间间隔,所述第二发送时间间隔与邮件大小成正比; 
所述网络接口120根据所述第二发送时间间隔,逐个发送所述至少两个第二报文中的每个报文,所述第二发送时间间隔小于所述客户端的会话老化时间。 
本发明实施例提供的代理服务器与其他网络设备,例如客户端、真实服务器的详细交互过程,以及详细处理流程请参照前面方法实施例的描述,在这里不再重复。 
本发明实施例还提供了一种网络系统,该网络系统包括客户端,真实服务器和附图11所示的代理服务器,该网络系统的部署示意图如附图1所示。 
本发明实施例提供了一种代理服务器,该代理服务器在接收到真实服务器发送的携带有用以表示所述真实服务器开始传输业务数据的信息的第一报文后,通过将该信息分布在多个第二报文中,将所述信息发送给客户端,其中所述至少两个第二报文中发送次序相邻的两个报文的发送时间间隔小于所述会话的老化时间。当所述代理服务器发送完所述信息时,在所述会话的老化时间内,所述代理服务器通过所述会话向所述客户端发送处理后的第一业务数据。换句话说,代理服务器通过切分上述信息,并通过携带上述信息的片段的第二报文来实现会话保活,而不是重新构造保活报文,从而避免现有技术客户端在接收到上述信息后、接收到代理服务器发送的第一业务数据之前,还会接收到多个由代理服务器构造的携带“X-KeepAlive\r\n”保活报文造成的重组后的业务数据被不合理地篡改的问题。 
本领域普通技术人员将会理解,本发明的各个方面、或各个方面的可能实 现方式可以被具体实施为系统、方法或者计算机程序产品。因此,本发明的各方面、或各个方面的可能实现方式可以采用完全硬件实施例、完全软件实施例(包括固件、驻留软件等等),或者组合软件和硬件方面的实施例的形式,在这里都统称为“电路”、“模块”或者“系统”。此外,本发明的各方面、或各个方面的可能实现方式可以采用计算机程序产品的形式,计算机程序产品是指存储在计算机可读介质中的计算机可读程序代码。 
计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质包含但不限于电子、磁性、光学、电磁、红外或半导体系统、设备或者装置,或者前述的任意适当组合,如随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或者快闪存储器)、光纤、便携式只读存储器(CD-ROM)。 
计算机中的处理器读取存储在计算机可读介质中的计算机可读程序代码,使得处理器能够执行在流程图中每个步骤、或各步骤的组合中规定的功能动作;生成实施在框图的每一块、或各块的组合中规定的功能动作的装置。 
计算机可读程序代码可以完全在用户的本地计算机上执行、部分在用户的本地计算机上执行、作为单独的软件包、部分在用户的本地计算机上并且部分在远程计算机上,或者完全在远程计算机或者服务器上执行。也应该注意,在某些替代实施方案中,在流程图中各步骤、或框图中各块所注明的功能可能不按图中注明的顺序发生。例如,依赖于所涉及的功能,接连示出的两个步骤、或两个块实际上可能被大致同时执行,或者这些块有时候可能被以相反顺序执行。 
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。 

会话保活方法和设备.pdf_第1页
第1页 / 共34页
会话保活方法和设备.pdf_第2页
第2页 / 共34页
会话保活方法和设备.pdf_第3页
第3页 / 共34页
点击查看更多>>
资源描述

《会话保活方法和设备.pdf》由会员分享,可在线阅读,更多相关《会话保活方法和设备.pdf(34页珍藏版)》请在专利查询网上搜索。

本申请公开了一种会话保活方法和设备,用以解决现有会话保活技术客户端接收的邮件内容被篡改的问题。该方法包括:代理服务器接收客户端通过代理服务器与客户端之间的会话发送的业务数据获取请求,并转发给真实服务器;接收所述真实服务器发送的第一报文,所述第一报文用于响应所述业务数据获取请求,所述第一报文携带用以表示所述真实服务器开始传输业务数据的信息;所述代理服务器通过依次向所述客户端发送至少两个第二报文,向所。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 电学 > 电通信技术


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1