本發明涉及通信技術領域,尤指一種傳輸控制協議(Transmission Control Protocol,TCP)代理方法及裝置。
背景技術:
為了解決寬帶業務運營面臨的挑戰,通常在終端與互聯網連接的關口上部署網關設備,實現精細化數據業務控制管理。為了實現精細化數據業務控制管理,通常網關設備需要解析7層數據包的內容,并根據其內容和相關屬性進行相關處理,例如內容適配、內容增強、防病毒、網絡加速。由于基本上所有網絡服務都是基于TCP,為了實現上述的相關處理,網關設備需要監聽每個TCP連接,并在TCP連接上增加數據、修改數據、刪除數據等。然而,由于TCP具有面向連接、面向數據流、可靠及提供流控機制的特點,如果簡單地對數據進行增加、修改或刪除操作,必然會影響連接的正確性。為了在保證TCP連接正確的基礎上進行增加數據、修改數據或者刪除數據等操作,TCP代理技術應運而生。
域名系統(Domain Name System,DNS)是由一串用點分隔的名字組成的互聯網上服務器的名稱,用于在數據傳輸時標識服務器的電子方位。DNS通常包括主域名及其對應的子域名。
目前,在進行TCP代理時,通常預先配置需要進行TCP代理的主域名及其對應的所有子域名得到預置域名,接收到報文后,會將報文中攜帶的域名與預置域名進行匹配,若匹配,對報文進行TCP代理后轉發。由于需要預先配置所有需要進行TCP代理的主域名和子域名,這導致配置過程很復雜,而且配置的域名可能會遺漏或者不完全,導致出現針對遺漏或者配置不完全的域名不能進行TCP代理的情況,降低用戶體驗。
技術實現要素:
本發明實施例提供一種TCP代理及裝置,用以解決現有技術中存在的配置過程很復雜,以及針對遺漏或者配置不完全的域名不能進行TCP代理的情況,降低用戶體驗的問題。
根據本發明實施例,提供一種TCP代理方法,應用在網關設備中,包括:
接收到報文后,確定所述報文的類型;
若所述報文是域名系統DNS應答報文,則獲取所述DNS應答報文攜帶的域名和互聯網協議IP地址,確定所述DNS應答報文攜帶的域名與預置域名是否匹配,若確定所述DNS應答報文攜帶的域名與所述預置域名匹配,則將所述DNS應答報文攜帶的IP地址添加到匹配規則中,轉發所述DNS應答報文,所述預置域名是預先配置的、需要TCP代理的主域名;
若所述報文是TCP SYN報文,則將所述TCP SYN報文的目的IP地址與匹配規則進行匹配,在結果集合中保存所述TCP SYN報文的目的IP地址與所述匹配規則的匹配結果、以及所述TCP SYN報文的流信息;若所述匹配結果為匹配,則對所述TCP SYN報文進行TCP代理后轉發,所述TCP SYN報文的流信息包括源端口、源IP地址、目的端口和目的IP地址;
若所述報文不是DNS應答報文和TCP SYN報文,則獲取所述報文的目的IP地址,根據所述報文的流信息從結果集合中查詢所述報文的目的IP地址與匹配規則的匹配結果;若查詢到的匹配結果為匹配,則對所述報文進行TCP代理后轉發。
具體的,確定所述報文的類型,具體包括:
獲取所述報文的頭部信息;
從所述頭部信息中獲取類型標識;
若所述類型標識是DNS應答報文的標識,則確定所述報文是DNS應答報文;
若所述類型標識是TCP SYN報文的標識,則確定所述報文是TCP SYN報文;
若所述類型標識不是DNS應答報文的標識和TCP SYN報文的標識,則確定所述報文不是DNS應答報文和TCP SYN報文。
具體的,確定所述DNS應答報文攜帶的域名與預置域名是否匹配,具體包括:
將所述DNS應答報文攜帶的域名與所述預置域名從末尾開始向前進行最短匹配;
若所述DNS應答報文攜帶的域名包括所述預置域名,則確定所述DNS應答報文攜帶的域名與所述預置域名匹配;
若所述DNS應答報文攜帶的域名不包括所述預置域名,則確定所述DNS應答報文攜帶的域名與所述預置域名不匹配。
具體的,將所述DNS應答報文中攜帶的IP地址添加到匹配規則,具體包括:
在所述匹配規則中建立一個表項;
將所述DNS應答報文的目的IP地址保存在所述一個表項中。
可選的,還包括:
若從所述匹配結果中查詢到所述報文的目的IP地址與所述匹配規則的匹配結果為不匹配,則轉發所述報文。
根據本發明實施例,還提供一種TCP代理裝置,應用在網關設備中,包括:
確定模塊,用于接收到報文后,確定所述報文的類型;
轉發模塊,用于若所述報文是域名系統DNS應答報文,則獲取所述DNS應答報文攜帶的域名和互聯網協議IP地址,確定所述DNS應答報文攜帶的域名與預置域名是否匹配,若確定所述DNS應答報文攜帶的域名與所述預置域名匹配,則將所述DNS應答報文攜帶的IP地址添加到匹配規則中,轉發所述DNS應答報文,所述預置域名是預先配置的、需要TCP代理的主域名;
第一代理模塊,用于若所述報文是TCP SYN報文,則將所述TCP SYN報文的目的IP地址與匹配規則進行匹配,在結果集合中保存所述TCP SYN報文的目的IP地址與所述匹配規則的匹配結果、以及所述TCP SYN報文的流信息;若所述匹配結果為匹配,則對所述TCP SYN報文進行TCP代理后轉發,所述TCP SYN報文的流信息包括源端口、源IP地址、目的端口和目的IP地址;
第二代理模塊,用于若所述報文不是DNS應答報文和TCP SYN報文,則獲取所述報文的目的IP地址,根據所述報文的流信息從結果集合中查詢所述報文的目的IP地址與匹配規則的匹配結果;若查詢到的匹配結果為匹配,則對所述報文進行TCP代理后轉發。
具體的,所述確定模塊,具體用于:
獲取所述報文的頭部信息;
從所述頭部信息中獲取類型標識;
若所述類型標識是DNS應答報文的標識,則確定所述報文是DNS應答報文;
若所述類型標識是TCP SYN報文的標識,則確定所述報文是TCP SYN報文;
若所述類型標識不是DNS應答報文的標識和TCP SYN報文的標識,則確定所述報文不是DNS應答報文和TCP SYN報文。
具體的,所述第一代理模塊,具體用于:
將所述DNS應答報文攜帶的域名與所述預置域名從末尾開始向前進行最短匹配;
若所述DNS應答報文攜帶的域名包括所述預置域名,則確定所述DNS應答報文攜帶的域名與所述預置域名匹配;
若所述DNS應答報文攜帶的域名不包括所述預置域名,則確定所述DNS應答報文攜帶的域名與所述預置域名不匹配。
具體的,所述第一代理模塊,具體用于:
在所述匹配規則中建立一個表項;
將所述DNS應答報文的目的IP地址保存在所述一個表項中。
可選的,所述第二代理模塊,還用于:
若從所述匹配結果中查詢到所述報文的目的IP地址與所述匹配規則的匹配結果為不匹配,則轉發所述報文。
本發明有益效果如下:
本發明實施例提供一種TCP代理方法及裝置,通過接收到報文后,確定所述報文的類型;若所述報文是域名系統DNS應答報文,則獲取所述DNS應答報文攜帶的域名和互聯網協議IP地址,確定所述DNS應答報文攜帶的域名與預置域名是否匹配,若確定所述DNS應答報文攜帶的域名與所述預置域名匹配,則將所述DNS應答報文攜帶的IP地址添加到匹配規則中,轉發所述DNS應答報文,所述預置域名是預先配置的、需要TCP代理的主域名;若所述報文是TCP SYN報文,則將所述TCP SYN報文的目的IP地址與匹配規則進行匹配,在結果集合中保存所述TCP SYN報文的目的IP地址與所述匹配規則的匹配結果、以及所述TCP SYN報文的流信息;若所述匹配結果為匹配,則對所述TCP SYN報文進行TCP代理后轉發,所述TCP SYN報文的流信息包括源端口、源IP地址、目的端口和目的IP地址;若所述報文不是DNS應答報文和TCP SYN報文,則獲取所述報文的目的IP地址,根據所述報文的流信息從結果集合中查詢所述報文的目的IP地址與匹配規則的匹配結果;若查詢到的匹配結果為匹配,則對所述報文進行TCP代理后轉發。該方案中,只需要預先配置進行TCP代理的主域名就可以得到預置域名,由于主域名的數量相對于子域名的數量少得多,因此配置過程很簡單;同時,根據接收到的DNS應答報文攜帶的域名和IP地址建立匹配規則,從而避免配置的域名出現遺漏或者不完全,進而避免出現針對遺漏或者配置不完全的域名不能進行TCP代理的情況;對于接收到不是DNS應答報文和TCP SYN報文的報文,可以根據結果集合確定是否需要進行TCP代理,無需與匹配規則進行匹配,從而節省匹配時間,提升用戶體驗。
附圖說明
圖1為本發明實施例中TCP代理方法的流程圖;
圖2為本發明實施例中S11的流程圖;
圖3為本發明實施例中S12的流程圖;
圖4為本發明實施例中TCP代理裝置的結構示意圖。
具體實施方式
針對現有技術中存在的配置過程很復雜,以及針對遺漏或者配置不完全的域名不能進行TCP代理的情況,降低用戶體驗的問題,本發明實施例提供一種TCP代理方法,該方法應用在網關設備中,該網關設備可以在終端與服務器之間進行報文轉發。該方法的流程如圖1所示,執行步驟如下:
S11:接收到報文后,確定報文的類型,若報文是DNS應答報文,則執行S12;若報文是TCP SYN報文,則執行S13;若報文不是DNS應答報文和TCP SYN報文,則執行S14。
對于基于TCP協議進行通信的終端和服務器,終端若要實現訪問服務器,需要獲取服務器的域名和IP地址,然后與服務器建立TCP連接之后,才能訪問服務器。其中,DNS應答報文是DNS服務器用于應答域名及其對應的IP地址給終端時發送的報文,TCP SYN報文是建立TCP連接時首先發送的報文,由于針對不同類型的報文有不同的處理過程,因此,網關設備在終端與服務器之間轉發報文時,需要首先確定接收到的報文的類型。
S12:獲取DNS應答報文攜帶的域名和互聯網協議(Internet Protocol,IP)地址,確定DNS應答報文攜帶的域名與預置域名是否匹配,若確定DNS應答報文攜帶的域名與預置域名匹配,則將DNS應答報文攜帶的IP地址添加到匹配規則中,轉發DNS應答報文。
預置域名是預先配置的、需要TCP代理的主域名,無需配置主域名對應的子域名。若DNS應答報文攜帶的域名與預置域名匹配,則可以將DNS應答報文攜帶的IP地址添加到匹配規則中,從而便于后續接收到報文后根據匹配規則確定是否需要TCP代理。
具體的,將DNS應答報文中攜帶的IP地址添加到匹配規則,具體包括:在匹配規則中建立一個表項;將DNS應答報文的目的IP地址保存在一個表項中。
S13:將TCP SYN報文的目的IP地址與匹配規則進行匹配,在結果集合中保存TCP SYN報文的目的IP地址與匹配規則的匹配結果、以及TCP SYN報文的流信息;若匹配結果為匹配,則對TCP SYN報文進行TCP代理后轉發。
為了便于對后續數據流的報文進行TCP代理還是轉發,可以將TCP SYN報文的目的IP地址與匹配規則的匹配結果保存在結果集合中。
其中,TCP SYN報文的流信息包括源端口、源IP地址、目的端口和目的IP地址。
在進行TCP代理時,通常會由網關設備的TCP協議棧、用戶空間代理模塊和TCP代理模塊執行,流程為:將TCP SYN報文送TCP協議棧,TCP協議棧通知用戶空間代理模塊,用戶空間代理模塊獲取TCP SYN報文的源IP地址、源端口、目的IP地址和目的端口這四項信息向服務器發送TCP連接,發送TCP SYN報文,服務器收到TCP SYN報文后會回復SYN+ACK報文,網關設備收到SYN+ACK報文后送TCP協議棧,TCP協議棧會回復ACK報文并轉發SYN+ACK報文給終端,終端收到SYN+ACK報文后回復ACK報文,網關設備收到ACK報文后送TCP協議棧,TCP協議棧收到ACK報文后會通知用戶空間代理模塊,此時一條TCP連接就變成兩條TCP連接,一條是終端到網關設備的,另外一條是網關設備到終端的,后續該數據流的報文都會送到用戶空間代理模塊,用戶空間代理模塊把報文給TCP代理模塊處理(如HTTPS審計模塊、加速模塊等等),處理完后進行轉發。
S14:獲取報文的目的IP地址,根據報文的流信息從結果集合中查詢報文的目的IP地址與匹配規則的匹配結果;若查詢到的匹配結果為匹配,則對報文進行TCP代理后轉發。
若從匹配結果中查詢到報文的目的IP地址與匹配規則的匹配結果為不匹配,則轉發報文。
本發明實施例中的TCP代理包括安全版超文本傳輸協議(HyperText Transfer Protocol over Secure Socket Layer,HTTPS)審計、網絡加速等等。
該方案中,只需要預先配置進行TCP代理的主域名就可以得到預置域名,由于主域名的數量相對于子域名的數量少得多,因此配置過程很簡單;同時,根據接收到的DNS應答報文攜帶的域名和IP地址建立匹配規則,從而避免配置的域名會現遺漏或者不完全,進而避免出現針對遺漏或者配置不完全的域名不能進行TCP代理的情況;對于接收到不是DNS應答報文和TCP SYN報文的報文,可以根據結果集合確定是否需要進行TCP代理,無需與匹配規則進行匹配,從而節省匹配時間,提升用戶體驗
具體的,上述S11中的確定報文的類型的實現方式,如圖2所示,具體包括:
S111:獲取報文的頭部信息。
S112:從頭部信息中獲取類型標識,若類型標識是DNS應答報文的標識,則執行S113;若類型標識是TCP SYN報文的標識,則執行S114;若類型標識不是DNS應答報文的標識和TCP SYN報文的標識,則執行S115。
S113:確定報文是DNS應答報文。
S114:確定報文是TCP SYN報文。
S115:確定報文不是DNS應答報文和TCP SYN報文。
不同類型的報文有不同的類型標識,這些類型標識是保存在報文的頭部信息中,因此,可以根據報文的頭部信息中的類型標識來確定報文的類型。
具體的,上述S12中的確定DNS應答報文攜帶的域名與預置域名是否匹配的實現過程,如圖3所示,具體包括:
S121:將DNS應答報文攜帶的域名與預置域名從末尾開始向前進行最短匹配,若DNS應答報文攜帶的域名包括預置域名,則執行S122;若DNS應答報文攜帶的域名不包括預置域名,則執行S123。
S122:確定DNS應答報文攜帶的域名與預置域名匹配。
S123:確定DNS應答報文攜帶的域名與預置域名不匹配。
例如:DNS應答報文攜帶的域名為app.baidu.com,而預置域名為baidu.com,從后向前匹配,只要匹配到baidu.com,則認為匹配成功。
基于同一發明構思,本發明實施例提供一種TCP代理裝置,應用在網關設備中,結構如圖4所示,包括:
確定模塊41,用于接收到報文后,確定報文的類型;
轉發模塊42,用于若報文是DNS應答報文,則獲取DNS應答報文攜帶的域名和IP地址,確定DNS應答報文攜帶的域名與預置域名是否匹配,若確定DNS應答報文攜帶的域名與預置域名匹配,則將DNS應答報文攜帶的IP地址添加到匹配規則中,轉發DNS應答報文,預置域名是預先配置的、需要TCP代理的主域名;
第一代理模塊43,用于若報文是TCP SYN報文,則將TCP SYN報文的目的IP地址與匹配規則進行匹配,在結果集合中保存TCP SYN報文的目的IP地址與匹配規則的匹配結果、以及TCP SYN報文的流信息;若匹配結果為匹配,則對TCP SYN報文進行TCP代理后轉發,TCP SYN報文的流信息包括源端口、源IP地址、目的端口和目的IP地址;
第二代理模塊44,用于若報文不是DNS應答報文和TCP SYN報文,則獲取報文的目的IP地址,根據報文的流信息從結果集合中查詢報文的目的IP地址與匹配規則的匹配結果;若查詢到的匹配結果為匹配,則對報文進行TCP代理后轉發。
該方案中,只需要預先配置進行TCP代理的主域名就可以得到預置域名,由于主域名的數量相對于子域名的數量少得多,因此配置過程很簡單;同時,根據接收到的DNS應答報文攜帶的域名和IP地址建立匹配規則,從而避免配置的域名會現遺漏或者不完全,進而避免出現針對遺漏或者配置不完全的域名不能進行TCP代理的情況;對于接收到不是DNS應答報文和TCP SYN報文的報文,可以根據結果集合確定是否需要進行TCP代理,無需與匹配規則進行匹配,從而節省匹配時間,提升用戶體驗。
具體的,確定模塊41,具體用于:
獲取報文的頭部信息;
從頭部信息中獲取類型標識;
若類型標識是DNS應答報文的標識,則確定報文是DNS應答報文;
若類型標識是TCP SYN報文的標識,則確定報文是TCP SYN報文;
若類型標識不是DNS應答報文的標識和TCP SYN報文的標識,則確定報文不是DNS應答報文和TCP SYN報文。
具體的,第一代理模塊43,具體用于:
將DNS應答報文攜帶的域名與預置域名從末尾開始向前進行最短匹配;
若DNS應答報文攜帶的域名包括預置域名,則確定DNS應答報文攜帶的域名與預置域名匹配;
若DNS應答報文攜帶的域名不包括預置域名,則確定DNS應答報文攜帶的域名與預置域名不匹配。
具體的,第一代理模塊43,具體用于:
在匹配規則中建立一個表項;
將DNS應答報文的目的IP地址保存在一個表項中。
可選的,第二代理模塊44,還用于:
若從匹配結果中查詢到報文的目的IP地址與匹配規則的匹配結果為不匹配,則轉發報文。
本發明是參照根據本發明實施例的方法、設備(系統)、和計算機程序產品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合。可提供這些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數據處理設備的處理器以產生一個機器,使得通過計算機或其他可編程數據處理設備的處理器執行的指令產生用于實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機程序指令也可存儲在能引導計算機或其他可編程數據處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產生包括指令裝置的制造品,該指令裝置實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數據處理設備上,使得在計算機或其他可編程設備上執行一系列操作步驟以產生計算機實現的處理,從而在計算機或其他可編程設備上執行的指令提供用于實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
盡管已描述了本發明的可選實施例,但本領域內的技術人員一旦得知了基本創造性概念,則可對這些實施例作出另外的變更和修改。所以,所附權利要求意欲解釋為包括可選實施例以及落入本發明范圍的所有變更和修改。
顯然,本領域的技術人員可以對本發明實施例進行各種改動和變型而不脫離本發明實施例的精神和范圍。這樣,倘若本發明實施例的這些修改和變型屬于本發明權利要求及其等同技術的范圍之內,則本發明也意圖包含這些改動和變型在內。