會話保活方法和設備的制造方法
【技術領域】
[0001] 本發明涉及計算機及通信技術領域,尤其涉及一種會話保活方法及一種代理服務 器。
【背景技術】
[0002] 通過具備代理服務器功能的網絡設備可以實現特定目的,如提高網絡互連協議 (InternetProtocol,簡稱IP)地址資源利用率、確保交互數據的安全性等等。代理服務器 的工作原理是在客戶端和真實服務器(是指能夠獨立為客戶端提供服務的服務器,為了與 代理服務器相區分,在本申請中稱為"真實服務器")之間設置一個代理服務器,代理服務器 分別與客戶端和真實服務器建立會話,對來自于客戶端的報文進行處理,并將處理后的報 文發送給真實服務器,以及對來自于真實服務器的報文進行處理,并將處理后的報文發送 給客戶端。上述網絡設備可以是部署在互聯網和局域網連接處的防火墻、網關設備等等。
[0003] 以常見的代理郵件服務器為例,代理郵件服務器接收客戶端發送的郵件獲取請 求,并將該郵件獲取請求轉發給真實郵件服務器后,接收真實郵件服務器發送的郵件的數 據,并對接收的數據進行緩存、解析和檢測,在通過檢測確定所述郵件為正常郵件后,通過 代理郵件服務器與客戶端之間的會話將郵件的數據發送給客戶端,客戶端在接收完代理服 務器轉發的郵件的數據后會正常關閉與代理服務器之間的會話。然而在實際應用中,往往 會出現客戶端與代理服務器之間的會話異常關閉的現象:例如由于郵件較大,如超過5兆 (M),或者代理郵件服務器由于負荷過大檢測速度較低等因素,代理服務器在對郵件的數據 進行處理時消耗了較長時間,從而導致客戶端在與代理服務器之間的會話上超過預先設定 的會話老化時間未接收到代理郵件服務器發送的任何數據,從而斷開與代理郵件服務器之 間的會話。
[0004] 為了避免出現真實客戶端與代理郵件服務器之間的會話異常關閉的現象,現有技 術提出了一種會話保活方案:代理郵件服務器在對郵件的數據進行緩存、解碼、檢測等處 理的過程中,定期向客戶端發送攜帶有"X-Ke印Alive\r\n"的保活報文。在檢測完畢后,如 果郵件為正常郵件,則將所緩存的郵件的數據發送給客戶端;如果郵件為異常郵件,例如攜 帶有惡意程序或釣魚客戶端,則刪除緩存的異常數據,例如郵件的附件后,基于原有郵件的 結構重新構造一封通知郵件告知客戶端上述檢測結果。
[0005] 但是,上述方案會導致即使在郵件為正常郵件的情況下,客戶端接收的郵件與真 實郵件服務器發送給代理郵件服務器的郵件相比,郵件內容發生了篡改,給用戶閱讀造成 困難。并且,上述方案不適用于提供其他應用的代理服務器進行會話保活。
【發明內容】
[0006] 本發明實施例提供一種會話保活方法,用以解決現有會話保活技術客戶端接收的 郵件內容被篡改的問題。
[0007] 對應地,本發明實施例還提供了一種代理服務器和網絡系統。
[0008] 本發明實施例提供的技術方案如下:
[0009] 第一方面,提供了一種會話保活方法,包括:
[0010] 代理服務器接收客戶端通過所述代理服務器與所述客戶端之間的會話發送的業 務數據獲取請求,并將所述業務數據獲取請求轉發給真實服務器;
[0011] 所述代理服務器接收所述真實服務器發送的第一報文,所述第一報文用于響應所 述業務數據獲取請求,所述第一報文攜帶用以表示所述真實服務器開始傳輸業務數據的信 息;
[0012] 所述代理服務器通過依次向所述客戶端發送至少兩個第二報文,向所述客戶端發 送所述信息,所述至少兩個第二報文中的每個報文攜帶所述信息的片段,所述至少兩個第 二報文中發送次序相鄰的兩個報文的發送時間間隔小于所述會話的老化時間;
[0013] 當所述代理服務器發送完所述信息時,在所述會話的老化時間內,所述代理服務 器通過所述會話向所述客戶端發送第一業務數據。
[0014] 在第一方面的第一種可能的實現方式中,所述至少兩個第二報文中發送次序相鄰 的兩個報文分別攜帶的所述片段在所述信息中的位置相鄰。
[0015] 在第一方面、或第一方面的第一種可能的實現方式中,還提供了第一方面的第二 種可能的實現方式,所述代理服務器通過所述會話向所述客戶端發送第一業務數據之前, 還包括:
[0016] 所述代理服務器接收所述真實服務器發送的第二業務數據;
[0017] 處理所述真實服務器發送的第二業務數據,獲得所述第一業務數據;
[0018] 所述代理服務器通過依次向所述客戶端發送至少兩個第二報文,向所述客戶端發 送所述信息,包括:
[0019] 如果所述代理服務器處理完所述真實服務器發送的第二業務數據時
[0020] 尚未發送完所述信息,生成一個攜帶有所述信息中所有未發送的片
[0021] 段的報文,
[0022] 并將生成的所述報文發送給所述客戶端。
[0023] 在第一方面、第一方面的第一種可能的實現方式或第一方面的第二種可能的實現 方式中,還提供了第一方面的第三種可能的實現方式,所述代理服務器通過依次向所述客 戶端發送至少兩個第二報文,向所述客戶端發送所述信息,包括 :
[0024] 向所述客戶端發送所述至少兩個第二報文中的至少一個報文;
[0025] 向所述客戶端發送所述至少兩個第二報文中待發送的報文,發送所述待發送的報 文與發送前一個被發送的報文的時間間隔根據預定參數以及所述至少兩個第二報文中待 發送的報文的數量確定,所述預定參數包括下述至少一種:所述代理服務器與所述真實服 務器之間的會話的傳輸帶寬、所述代理服務器處理所述第二業務數據的進度。
[0026] 在第一方面的第二種可能的實現方式中,還提供了第一方面的第四種可能的實現 方式,確定所述第二業務數據是否包含異常數據;
[0027] 若確定所述第二業務數據未包含異常數據,則將所述第二業務數據作為所述第一 業務數據;
[0028] 若確定所述業務數據包含異常數據,則通過從所述第二業務數據中去除所述異常 數據獲得所述第一業務數據。
[0029] 在第一方面、第一方面的第一種可能的實現方式或第一方面的第二種可能的實現 方式中,還提供了第一方面的第五種可能的實現方式,向所述客戶端發送至少兩個第二報 文,具體為:
[0030] 以預先設定的發送時間間隔,逐個發送所述至少兩個第二報文中的每個第二報 文,所述預先設定的發送時間間隔小于所述客戶端的會話老化時間。
[0031] 在第一方面、第一方面的第一種可能的實現方式或第一方面的第二種可能的實現 方式中,還提供了第一方面的第六種可能的實現方式,所述代理服務器包括基于郵局協議 第3版(PostOfficePr〇t〇C〇13,簡稱POP3)的郵件代理服務器、基于交互式消息訪問協議 第4版(InternetMessageAccessProtocol^:,簡稱IMAP4)的郵件代理服務器、和超文本 傳輸協議(HyperTextTransferProtocol,簡稱HTTP)的網頁代理服務器。
[0032] 在第一方面的第六種可能的實現方式中,還提供了第一方面的第七種可能的實現 方式,若所述代理服務器為基于POP3協議的郵件代理服務器,則所述業務數據獲取請求為 攜帶有郵件標識的郵件獲取請求;
[0033] 所述代理服務器接收所述業務數據獲取請求之前,所述方法還包括:
[0034] 所述代理服務器將所述客戶端發送的郵件列表獲取請求轉發給所述真實服務 器;
[0035] 獲得所述真實服務器響應所述郵件列表獲取請求返回的郵件列表;
[0036] 從所述郵件列表中篩選得到超大郵件列表并保存,所述超大郵件列表包含郵件標 識以及對應的郵件大小,所述超大郵件列表包含的郵件大小超過預定大小;
[0037] 所述代理服務器向所述客戶端發送所述信息,包括:
[0038] 所述代理服務器判斷所述超大郵件列表中是否包含所述業務數據獲取請求攜帶 的郵件標識;
[0039] 若確定所述超大郵件列表中包含所述業務數據獲取請求攜帶的郵件標識,則根據 所述超大郵件列表中所述業務數據獲取請求攜帶的郵件標識對應的郵件大小,計算第二發 送時間間隔,所述第二發送時間間隔與郵件大小成正比;
[0040] 根據所述第二發送時間間隔,逐個發送所述至少兩個第二報文中的每個報文,所 述第二發送時間間隔小于所述客戶端的會話老化時間。
[0041] 在第一方面、或上述第一方面的任意一種可能的實現方式中,還提供了第一方面 的第八種可能的實現方式,所述信息的每個片段的大小為1字節。
[0042] 第二方面,提供了一種代理服務器,包括:
[0043] 接收模塊,用于接收客戶端通過所述代理服務器與所述客戶端之間的會話發送的 業務數據獲取請求;
[0044] 發送模塊,用于將所述接收模塊接收的所述業務數據獲取請求轉發給真實服務 器;
[0045] 所述接收模塊,還用于接收所述真實服務器發送的第一報文,所述第一報文用于 響應所述發送模塊發送的所述業務數據獲取請求,所述第一報文攜帶用以表示所述真實服 務器開始傳輸業務數據的信息;
[0046] 所述發送模塊,還用于通過依次向所述客戶端發送至少兩個第二報文,向所述客 戶端發送所述信息,所述至少兩個第二報文中的每個報文攜帶所述信息的片段,所述至少 兩個第二報文中發送次序相鄰的兩個報文的發送時間間隔小于所述會話的老