本申請涉及通信技術領域,尤其涉及一種TCP連接的管理方法和裝置。
背景技術:
NAT(Network Address Translation,網(wǎng)絡地址轉(zhuǎn)換)設備可以對來自終端設備的訪問請求進行地址轉(zhuǎn)換,將其源地址由私網(wǎng)地址轉(zhuǎn)換為公網(wǎng)地址,以訪問公網(wǎng)中的服務器。由于私網(wǎng)中的終端設備數(shù)量通常遠大于NAT設備中公網(wǎng)地址的數(shù)量,在NAT設備進行地址轉(zhuǎn)換的過程中,可能會出現(xiàn)來自不同的終端設備的訪問請求經(jīng)過地址轉(zhuǎn)換后,具有相同的會話特征的情況,比如:在某時刻,NAT設備將來自終端設備1的訪問請求的五元組轉(zhuǎn)換為五元組1。在終端設備1結(jié)束訪問后,NAT設備可以釋放相關的公網(wǎng)地址以及端口號,后續(xù)可能將來自終端設備2的訪問請求的五元組也轉(zhuǎn)換為五元組1。在這種情況下,如果服務器可以將與終端設備1之間建立的TCP連接復用至終端設備2,則可以加快服務器的響應速度,快速實現(xiàn)用戶業(yè)務。然而,服務器復用TCP連接的概率通常很低,服務器的響應速度也因此受到影響。
技術實現(xiàn)要素:
有鑒于此,本申請?zhí)峁┮环NTCP連接的管理方法和裝置,以解決相關技術中服務器復用TCP連接的概率低的問題。
具體地,本申請是通過如下技術方案實現(xiàn)的:
第一方面,本申請?zhí)峁┮环NTCP連接的管理方法,所述方法應用于網(wǎng)絡地址轉(zhuǎn)換NAT設備,包括:
在接收到終端設備發(fā)送的TCP協(xié)議報文后,判斷所述TCP協(xié)議報文是否為TCP SYN報文;
當所述TCP協(xié)議報文為TCP SYN報文時,基于系統(tǒng)內(nèi)核時鐘的計數(shù)值和預設的比率對所述TCP SYN報文的序列號進行修改,將修改后的TCP SYN報文轉(zhuǎn)發(fā)給服務器,并將修改前后的序列號之間的差值與所述TCP SYN報文的會話特征對應保存;
當所述TCP協(xié)議報文不是TCP SYN報文時,根據(jù)所述TCP協(xié)議報文的會話特征查找對應的差值,基于所述差值對所述TCP協(xié)議報文的序列號進行修改,并將修改后的TCP協(xié)議報文轉(zhuǎn)發(fā)給服務器;
在接收到服務器發(fā)送的TCP協(xié)議報文時,根據(jù)所述TCP協(xié)議報文的會話特征查找對應的差值,基于所述差值對所述TCP協(xié)議報文的確認號進行逆修改,并將逆修改后的TCP協(xié)議報文轉(zhuǎn)發(fā)給終端設備。
第二方面,本申請?zhí)峁┮环NTCP連接的管理裝置,所述裝置應用于NAT設備,包括:
報文判斷單元,用于在接收到終端設備發(fā)送的TCP協(xié)議報文后,判斷所述TCP協(xié)議報文是否為TCP SYN報文;
第一修改單元,用于當所述TCP協(xié)議報文為TCP SYN報文時,基于系統(tǒng)內(nèi)核時鐘的計數(shù)值和預設的比率對所述TCP SYN報文的序列號進行修改,將修改后的TCP SYN報文轉(zhuǎn)發(fā)給服務器,并將修改前后的序列號之間的差值與所述TCP SYN報文的會話特征對應保存;
第二修改單元,用于當所述TCP協(xié)議報文不是TCP SYN報文時,根據(jù)所述TCP協(xié)議報文的會話特征查找對應的差值,基于所述差值對所述TCP協(xié)議報文的序列號進行修改,并將修改后的TCP協(xié)議報文轉(zhuǎn)發(fā)給服務器;
逆修改單元,用于在接收到服務器發(fā)送的TCP協(xié)議報文時,根據(jù)所述TCP協(xié)議報文的會話特征查找對應的差值,基于所述差值對所述TCP協(xié)議報文的確認號進行逆修改,并將逆修改后的TCP協(xié)議報文轉(zhuǎn)發(fā)給終端設備。
分析上述技術方案可知,本申請NAT設備在接收到來自終端設備的TCP SYN報文時,可以根據(jù)系統(tǒng)內(nèi)核時鐘的計數(shù)值和預設的比率對該TCP SYN報文的序列號進行修改,從而提高服務器復用TIME_WAIT狀態(tài)TCP連接的概率,加快服務器的響應速度。
附圖說明
圖1是一種TCP連接過程的示意圖;
圖2是TCP協(xié)議報文的報文格式圖;
圖3是本申請一示例性實施例示出的一種TCP連接的管理方法的流程圖;
圖4是本申請一示例性實施例示出的一種TCP連接的管理裝置所在設備的硬件結(jié)構(gòu)圖;
圖5是本申請一示例性實施例示出的一種TCP連接的管理裝置的框圖。
具體實施方式
這里將詳細地對示例性實施例進行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實施例中所描述的實施方式并不代表與本申請相一致的所有實施方式。相反,它們僅是與如所附權利要求書中所詳述的、本申請的一些方面相一致的裝置和方法的例子。
在本申請使用的術語是僅僅出于描述特定實施例的目的,而非旨在限制本申請。在本申請和所附權利要求書中所使用的單數(shù)形式的“一種”、“所述”和“該”也旨在包括多數(shù)形式,除非上下文清楚地表示其他含義。還應當理解,本文中使用的術語“和/或”是指并包含一個或多個相關聯(lián)的列出項目的任何或所有可能組合。
應當理解,盡管在本申請可能采用術語第一、第二、第三等來描述各種信息,但這些信息不應限于這些術語。這些術語僅用來將同一類型的信息彼此區(qū)分開。例如,在不脫離本申請范圍的情況下,第一信息也可以被稱為第二信息,類似地,第二信息也可以被稱為第一信息。取決于語境,如在此所使用的詞語“如果”可以被解釋成為“在……時”或“當……時”或“響應于確定”。
圖1是一種TCP連接過程的示意圖。請參考圖1,終端設備1與服務器之間可以通過TCP協(xié)議中的三次握手建立TCP連接。在一個例子中,終端設備1可以主動向服務器發(fā)送TCP SYN報文,比如:TCP SYN 1,以請求建立TCP連接。服務器在接收到TCP SYN 1后,可以向終端設備1回復TCP SYN+ACK報文,比如TCP SYN+ACK 1。終端設備1在接收到TCP SYN+ACK 1后,可以向服務器回復TCP ACK報文,比如:TCP ACK 1,以完成TCP連接的建立,在建立TCP連接后,終端設備1與服務器之間可以基于該TCP連接進行數(shù)據(jù)交互。
通常,終端設備在確定完成數(shù)據(jù)發(fā)送后可以主動向服務器發(fā)送TCP FIN報文,以請求關閉與服務器之間建立的TCP建立。但在實際應用中,服務器在確定完成數(shù)據(jù)發(fā)送后也可以主動向終端設備發(fā)送TCP FIN報文,以請求關閉與終端設備之間建立的TCP連接。如圖1所示,假設服務器主動向終端設備1發(fā)送TCP FIN報文,比如:TCP FIN 1,則終端設備1在接收到TCP FIN 1后,可以先向服務器回復TCP ACK報文,比如:TCP ACK 2。后續(xù),終端設備1在確定完成數(shù)據(jù)發(fā)送后,也可以向服務器發(fā)送TCP FIN報文,比如:TCP FIN 2。服務器在接收到TCP FIN 2后,也可以向終端設備1回復TCP ACK報文,比如:TCP ACK 3。
終端設備1在接收到服務器回復的TCP ACK 3后,可以將該TCP連接的狀態(tài)變更為CLOSED狀態(tài),以關閉該TCP連接。而服務器在向終端設備1回復TCP ACK 3后,則可以將該TCP連接的狀態(tài)變更為TIME_WAIT狀態(tài),TIME_WAIT狀態(tài)的時長通常為2個MSL(Maximum Segment Lifetime,最大分節(jié)生命期),其中MSL時間是報文在網(wǎng)絡中存在的最長時間。在達到TIME_WAIT狀態(tài)的時長后,服務器可以將該TCP連接的狀態(tài)變更為CLOSED狀態(tài)。如果終端設備1在等待一定時間后仍未接收到TCP ACK 3,則可以再次向服務器發(fā)送TCP FIN報文,以告知服務器其未能正常關閉該TCP連接。服務器在接收到該TCP FIN報文后,可以再次向終端設備1發(fā)送TCP ACK報文,以確保該TCP連接的正常關閉。
圖2是TCP協(xié)議報文的報文格式圖,TCP協(xié)議報文中通常都會攜帶序列號和確認號。其中,TCP協(xié)議報文的序列號可以表示本端發(fā)送的數(shù)據(jù)的字節(jié)數(shù),確認號則可以表示本端接收的數(shù)據(jù)的字節(jié)數(shù)。一般而言,終端設備向服務器發(fā)送的首個TCP協(xié)議報文的序列號與其系統(tǒng)時鐘有關,服務器在接收到該首個TCP協(xié)議報文后,回復的報文中的確認號是該首個TCP協(xié)議報文攜帶的數(shù)據(jù)量(單位是字節(jié))與該首個TCP協(xié)議報文的序列號之和。換言之,服務器發(fā)送給終端設備的TCP協(xié)議報文的確認號,等于終端設備發(fā)送給服務器的前一TCP協(xié)議報文的序列號,加上該TCP協(xié)議報文攜帶的數(shù)據(jù)字節(jié)數(shù)。
需要說明的是,TCP SYN報文和TCP FIN報文中均未攜帶任何業(yè)務數(shù)據(jù),SYN標志或FIN標志占一個標志位,依據(jù)TCP協(xié)議的規(guī)定,服務器在接收到終端設備發(fā)送的TCP SYN報文或TCP FIN報文后,回復的報文中的確認號為所述TCP SYN報文或TCP FIN報文的序列號加1。
請繼續(xù)參考圖1,假設終端設備1向服務器發(fā)送的TCP SYN 1的序列號為1000,則服務器向終端設備1回復的TCP SYN+ACK 1的確認號=1000+1=1001,后續(xù)終端設備1向服務器回復的TCP ACK 1的序列號為1001。假設終端設備1接下來發(fā)送的TCP業(yè)務報文中攜帶100字節(jié)的業(yè)務數(shù)據(jù),則終端設備1向服務器發(fā)送的TCP業(yè)務報文1的序列號仍為1001,服務器向終端設備1發(fā)送的TCP業(yè)務報文2的確認號=1001+100=1101。
需要說明的是,終端設備與服務器之間的通信通常由NAT設備在進行地址轉(zhuǎn)換后實現(xiàn),換言之,本申請中終端設備與服務器之間的TCP連接,在實際實現(xiàn)中,通常指的是NAT設備與服務器之間的TCP連接。在實際應用中,私網(wǎng)中的終端設備數(shù)量通常遠大于NAT設備中公網(wǎng)地址的數(shù)量,例如:當私網(wǎng)中的終端設備數(shù)量達到NAT設備中公網(wǎng)地址的數(shù)量的100倍時,在TIME_WAIT狀態(tài)的時長內(nèi),NAT設備有極大概率會將來自不同終端設備的TCP協(xié)議報文轉(zhuǎn)換為相同的五元組。假設,NAT設備將來自終端設備1的TCP協(xié)議報文的五元組轉(zhuǎn)換為五元組1。由于NAT設備中NAT表項的老化時長通常小于所述TIME_WAIT狀態(tài)的時長,因此當NAT設備關閉該TCP連接(可看作終端設備1與服務器之間的TCP連接)時,服務器中該TCP連接的狀態(tài)可能仍為TIME_WAIT狀態(tài)。NAT設備在接收到終端設備2的TCP SYN報文,比如:TCP SYN 2,可能將該TCP SYN 2的五元組也轉(zhuǎn)換為五元組1,并轉(zhuǎn)發(fā)給服務器。
假設,服務器在接收到TCP SYN 2時,上述TCP連接的狀態(tài)仍為TIME_WAIT狀態(tài),服務器會對該TCP SYN 2的序列號進行檢驗。具體地,服務器可以檢驗該TCP SYN 2的序列號減去服務器向終端設備1回復的最后一個TCP ACK報文(TCP ACK 3)的確認號得到的差值是否在0到231之間。
當TCP SYN 2的序列號減去TCP ACK 3的確認號得到的差值小于0或大于231時,服務器會認為TCP SYN 2是異常的TCP協(xié)議報文,并將TCP SYN 2丟棄,從而導致終端設備2與服務器之間無法進行數(shù)據(jù)交互。而當TCP SYN 2的序列號減去TCP ACK 3的確認號得到的差值在0到231之間時,服務器可以基于處于TIME_WAIT狀態(tài)的該TCP連接對TCP SYN報文2進行響應,即終端設備2與服務器之間可以進行三次握手,后續(xù)服務器可以將該TCP連接的狀態(tài)變更為ESTABLISHED狀態(tài),終端設備2與服務器之間可以正常進行數(shù)據(jù)交互。
一般而言,終端設備發(fā)送的TCP SYN報文的序列號與該終端設備的系統(tǒng)內(nèi)核時鐘的計數(shù)值相關,來自不同終端設備的TCP SYN報文的序列號具有很強的隨機性,并不能保證TCP SYN 2的序列號減去TCP ACK 3的確認號得到的差值滿足服務器復用TIME_WAIT狀態(tài)的TCP連接的要求,即無法確保TCP SYN 2的序列號減去TCP ACK 3的確認號得到的差值在0到231之間。
針對上述問題,為了提高服務器復用TIME_WAIT狀態(tài)TCP連接的概率,NAT設備可以對來自終端設備的TCP SYN報文的序列號進行修改,再將修改后的TCP SYN報文轉(zhuǎn)發(fā)給服務器,從而大幅提高所述差值在0到231之間的概率。在實際應用中,NAT設備可以基于其系統(tǒng)內(nèi)核時鐘的計數(shù)值和預設的比率對來自終端設備的TCP SYN報文的序列號進行修改,具體地,NAT設備可以將所述TCP SYN報文的序列號替換為接收到該TCP SYN報文時系統(tǒng)內(nèi)核時鐘的計數(shù)值對應的時長,乘以所述預設的比率得到的數(shù)值。其中,所述系統(tǒng)內(nèi)核時鐘的計數(shù)值通常與實際時間相關,具體地,在檢測到一個系統(tǒng)時鐘脈沖時系統(tǒng)內(nèi)核時鐘的計數(shù)值加1,假設系統(tǒng)內(nèi)核時鐘脈沖的步進值為1納秒,則當所述系統(tǒng)內(nèi)核時鐘的計數(shù)值加1時,對應的設備時間增加1納秒。反之,設備實際增加1秒,所述系統(tǒng)內(nèi)核時鐘的計數(shù)值加109;所述預設的比率通常由管理員自行設置。
下面介紹所述預設比率的一種選取規(guī)則。
由于TCP ACK 3的確認號等于TCP SYN 1的序列號與終端設備1在本次交互中向服務器發(fā)送的數(shù)據(jù)字節(jié)數(shù)之和,因此如果TCP SYN 2的序列號減去TCP SYN 1的序列號得到的差值不大于231,則TCP SYN 2的序列號減去TCP ACK 3的確認號得到的差值肯定也不會大于231。
在本例中,由于業(yè)務類型相同,終端設備與服務器之間建立的TCP連接的時長較為穩(wěn)定,可以視為固定值,因此終端設備1在本次交互中向服務器發(fā)送的數(shù)據(jù)字節(jié)數(shù),與終端設備1與服務器之間建立的TCP連接的時長,以及該TCP連接的上行速率相關。假設該TCP連接的時長為10秒,該TCP連接的上行最大速率為1Mb/秒,則終端設備1在本次交互中最多可向服務器發(fā)送的數(shù)據(jù)字節(jié)數(shù)=10秒×1Mb/秒÷8位/字節(jié)=1250000字節(jié),即終端設備1在該TCP連接的持續(xù)時間之內(nèi)最多可向服務器發(fā)送1250000字節(jié)的數(shù)據(jù)。
綜合來看,管理員在設置所述比率時,需要考慮該TCP連接的時長、該TCP連接的上行速率,以及所述TIME_WAIT狀態(tài)的時長三方面的因素。假設該TCP連接的時長為T1(單位:秒),該TCP連接的上行最大速率為S1(單位:Mb/秒),所述TIME_WAIT狀態(tài)的時長為T2(單位:秒),所述比率為X。在實際應用中,通常將上述兩個時長換算為納秒,將所述上行速率換算為b/秒,則有如下不等式:
(T1+T2)×109×X≤231,該不等式可滿足TCP SYN 2的序列號減去TCP SYN 1的序列號得到的差值不大于231。
(T1+T2)×109×X≥T1×S1×106÷8,該不等式可滿足TCP SYN 2的序列號不小于TCP ACK 3的確認號。
在本例中,以Linux系統(tǒng)為例,TIME_WAIT狀態(tài)的時長通常為120秒?;谏鲜鰞蓚€不等式,可以確定X的取值范圍,管理員可以根據(jù)該取值范圍設置合適的比率。
基于上述說明,請參考圖3,為本申請一示例性實施例示出的一種TCP連接的管理方法的流程圖,該方法可以應用于NAT設備,包括以下步驟:
步驟301:在接收到終端設備發(fā)送的TCP協(xié)議報文后,判斷所述TCP協(xié)議報文是否為TCP SYN報文。
在本實施例中,NAT設備在接收到終端設備發(fā)送的TCP協(xié)議報文后,可以基于該TCP協(xié)議報文中的SYN標志位,判斷該TCP協(xié)議報文是否為TCP SYN報文。一般而言,當所述SYN標志位為1時,可以確定該TCP協(xié)議報文為TCP SYN報文;當所述SYN標志位為0時,則該TCP協(xié)議報文不為TCP SYN報文。
步驟302:當所述TCP協(xié)議報文為TCP SYN報文時,基于系統(tǒng)內(nèi)核時鐘的計數(shù)值和預設的比率對所述TCP SYN報文的序列號進行修改,將修改后的TCP SYN報文轉(zhuǎn)發(fā)給服務器,并將修改前后的序列號之間的差值與所述TCP SYN報文的會話特征對應保存。
在本實施例中,基于前述步驟301的判斷結(jié)果,當所述TCP協(xié)議報文為TCP SYN報文時,NAT設備可以基于系統(tǒng)內(nèi)核時鐘的計數(shù)值和預設的比率對該TCP SYN報文的序列號進行修改。
在一個可選的實施例中,NAT設備可以用此時系統(tǒng)內(nèi)核時鐘的計數(shù)值對應的時長乘以所述預設的比率,得到目標序列號,再將TCP SYN報文的序列號替換為所述目標序列號。例如:假設NAT設備在接收到某TCP協(xié)議報文時,所述系統(tǒng)內(nèi)核時鐘的計數(shù)值對應的時長為10秒,即1010納秒,管理員設置的比率為1/64,則所述目標序列號=1010÷64=156250000,NAT設備可以將該TCP協(xié)議報文的序列號替換為156250000。
在本步驟中,NAT設備在對該TCP SYN報文的序列號進行修改后,可以將修改后的TCP SYN報文轉(zhuǎn)發(fā)給服務器。此外,NAT設備還可以將修改前后的序列號之間的差值與所述TCP SYN報文的會話特征對應保存。
步驟303:當所述TCP協(xié)議報文不是TCP SYN報文時,根據(jù)所述TCP協(xié)議報文的會話特征查找對應的差值,基于所述差值對所述TCP協(xié)議報文的序列號進行修改,并將修改后的TCP協(xié)議報文轉(zhuǎn)發(fā)給服務器。
在本實施例中,基于前述步驟301的判斷結(jié)果,當所述TCP協(xié)議報文不是TCP SYN報文時,NAT設備可以根據(jù)該TCP協(xié)議報文的會話特征查找到其對應的差值,并基于該差值對該TCP協(xié)議報文的序列號進行修改。
需要說明的是,當所述差值由修改后的TCP SYN報文的序列號減去修改前的TCP SYN報文的序列號得到時,NAT設備可以將所述TCP協(xié)議報文的序列號加上所述差值,以對所述TCP協(xié)議報文的序列號進行修改。而當所述差值由修改前的TCP SYN報文的序列號減去修改后的TCP SYN報文的序列號得到時,NAT設備可以將所述TCP協(xié)議報文的序列號減去所述差值,以對所述TCP協(xié)議報文的序列號進行修改。
在本步驟中,NAT設備在對所述TCP協(xié)議報文的序列號進行修改后,可以將修改后的TCP協(xié)議報文轉(zhuǎn)發(fā)給服務器。
在一個可選的實施例中,當NAT設備查找到所述TCP協(xié)議報文對應的差值不為0時,可以基于所述差值對所述TCP協(xié)議報文的序列號進行修改,并將修改后的TCP協(xié)議報文轉(zhuǎn)發(fā)給服務器。而當NAT設備查找到所述TCP協(xié)議報文對應的差值為0時,則可以不對所述TCP協(xié)議報文的序列號進行修改,直接將其轉(zhuǎn)發(fā)給服務器。
步驟304:在接收到服務器發(fā)送的TCP協(xié)議報文時,根據(jù)所述TCP協(xié)議報文的會話特征查找對應的差值,基于所述差值對所述TCP協(xié)議報文的確認號進行逆修改,并將逆修改后的TCP協(xié)議報文轉(zhuǎn)發(fā)給終端設備。
在本實施例中,由于終端設備發(fā)送給服務器的TCP協(xié)議報文的序列號,與服務器發(fā)送給終端設備的TCP協(xié)議報文的確認號之間存在對應關系,因此NAT設備在接收到服務器發(fā)送的TCP協(xié)議報文時,需要對所述TCP協(xié)議報文的確認號進行逆修改。具體地,NAT設備可以先根據(jù)所述TCP協(xié)議報文的會話特征查找到其對應的差值。當所述差值由修改后的TCP SYN報文的序列號減去修改前的TCP SYN報文的序列號得到時,NAT設備可以將所述TCP協(xié)議報文的確認號減去所述差值,以對所述TCP協(xié)議報文的確認號進行逆修改。而當所述差值由修改前的TCP SYN報文的序列號減去修改后的TCP SYN報文的序列號得到時,NAT設備可以將所述TCP協(xié)議報文的確認號加上所述差值,以對所述TCP協(xié)議報文的確認號進行逆修改。
由上述實施例可見,本申請NAT設備在接收到來自終端設備的TCP SYN報文時,可以根據(jù)系統(tǒng)內(nèi)核時鐘的計數(shù)值和預設的比率對該TCP SYN報文的序列號進行修改,從而提高服務器復用TIME_WAIT狀態(tài)TCP連接的概率,加快服務器的響應速度。
與前述TCP連接的管理方法的實施例相對應,本申請還提供了TCP連接的管理裝置的實施例。
本申請TCP連接的管理裝置的實施例可以應用在NAT設備上。裝置實施例可以通過軟件實現(xiàn),也可以通過硬件或者軟硬件結(jié)合的方式實現(xiàn)。以軟件實現(xiàn)為例,作為一個邏輯意義上的裝置,是通過其所在NAT設備的處理器將非易失性存儲器中對應的計算機程序指令讀取到內(nèi)存中運行形成的。從硬件層面而言,如圖4所示,為本申請TCP連接的管理裝置所在NAT設備的一種硬件結(jié)構(gòu)圖,除了圖4所示的處理器、內(nèi)存、網(wǎng)絡接口、以及非易失性存儲器之外,實施例中裝置所在的NAT設備通常根據(jù)該TCP連接的管理的實際功能,還可以包括其他硬件,對此不再贅述。
請參考圖5,為本申請一示例性實施例示出的一種TCP連接的管理裝置的框圖,該TCP連接的管理裝置可以應用于圖4所示的NAT設備中,包括:
報文判斷單元501,用于在接收到終端設備發(fā)送的TCP協(xié)議報文后,判斷所述TCP協(xié)議報文是否為TCP SYN報文;
第一修改單元502,用于當所述TCP協(xié)議報文為TCP SYN報文時,基于系統(tǒng)內(nèi)核時鐘的計數(shù)值和預設的比率對所述TCP SYN報文的序列號進行修改,將修改后的TCP SYN報文轉(zhuǎn)發(fā)給服務器,并將修改前后的序列號之間的差值與所述TCP SYN報文的會話特征對應保存;
第二修改單元503,用于當所述TCP協(xié)議報文不是TCP SYN報文時,根據(jù)所述TCP協(xié)議報文的會話特征查找對應的差值,基于所述差值對所述TCP協(xié)議報文的序列號進行修改,并將修改后的TCP協(xié)議報文轉(zhuǎn)發(fā)給服務器;
逆修改單元504,用于在接收到服務器發(fā)送的TCP協(xié)議報文時,根據(jù)所述TCP協(xié)議報文的會話特征查找對應的差值,基于所述差值對所述TCP協(xié)議報文的確認號進行逆修改,并將逆修改后的TCP協(xié)議報文轉(zhuǎn)發(fā)給終端設備。
在一個可選的實施例中,所述第一修改單元502可以包括:
計算子單元5021,用于用所述系統(tǒng)內(nèi)核時鐘的計數(shù)值對應的時長乘以所述預設的比率,得到目標序列號;
替換子單元5022,用于將所述TCP SYN報文的序列號替換為所述目標序列號。
在另一個可選的實施例中,所述預設的比率與TCP連接的時長、TCP連接的上行速率、TCP連接TIME_WAIT狀態(tài)的時長相關。
在另一個可選的實施例中,所述第二修改單元503可以包括:
修改子單元5031,用于當所述差值不為0時,基于所述差值對所述TCP協(xié)議報文的序列號進行修改。
在另一個可選的實施例中,所述逆修改單元504可以包括:
逆修改子單元5041,用于當所述差值不為0時,基于所述差值對所述TCP協(xié)議報文的確認號進行逆修改。
上述裝置中各個單元的功能和作用的實現(xiàn)過程具體詳見上述方法中對應步驟的實現(xiàn)過程,在此不再贅述。
對于裝置實施例而言,由于其基本對應于方法實施例,所以相關之處參見方法實施例的部分說明即可。以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本申請方案的目的。本領域普通技術人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。
以上所述僅為本申請的較佳實施例而已,并不用以限制本申請,凡在本申請的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應包含在本申請保護的范圍之內(nèi)。