本發明實施例涉及計算機技術領域,尤其涉及一種報文處理方法及裝置。
背景技術:
當前,域名解析服務器為人們提供網頁域名與ip地址(internetprotocoladdress,互聯網協議地址)相互轉換的信息,是互聯網系統的一項基礎性技術設施,是人們日常瀏覽網頁的過程中不可或缺的部分。
目前,當用戶利用終端訪問某一網頁時,用戶可以在終端中輸入待訪問網頁的域名,例如,當用戶需要瀏覽百度的主頁面時,可以在終端中輸入百度的主頁面的域名“www.baidu.com”,終端獲取用戶輸入的待訪問網頁的域名,并生成dns(domainnamesystem,域名系統)請求報文,dns請求報文中攜帶待訪問網頁的域名,然后向代理服務器轉發dns請求報文;代理服務器利用linux(操作系統)的內核空間接收該dns請求報文,利用套接字將dns請求報文復制到linux的用戶空間中,然后利用用戶空間向域名解析服務器轉發該dns請求報文,域名解析服務器獲取根據該網頁的域名,獲取存儲有該網頁的網頁服務器的ip地址,并根據該網頁的域名與網頁服務器的ip地址生成dns響應報文,然后向代理服務器發送該dns響應報文,代理服務器利用用戶空間接收域名解析服務器發送的該dns響應報文,然后利用套接字將該dns響應報文復制到內核空間中,再利用內核空間向終端發送該dns響應報文。終端接收該dns響應報文,進而根據該dns響應報文中的網頁服務器的ip地址從網頁服務器中獲取該網頁,并在屏幕上顯示該網頁,以供用戶瀏覽。
發明人在實現本發明實施例的過程中發現,相關技術中的這種方案至少存在如下缺點。
在上述過程中,需要利用套接字將dns請求報文從內核空間復制到用戶空間,以及需要利用套接字將dns響應報文從用戶空間復制到內核空間,兩次復制過程耗費系統資源,且會耗費較多的時間,進而降低了終端獲取到dns響應報文的獲取效率。
技術實現要素:
為克服相關技術中存在的問題,本發明實施例提供一種報文處理方法及裝置。
根據本發明實施例的第一方面,提供一種報文處理方法,應用于代理服務器,所述方法包括:
利用基于linux的內核空間接收終端發送的dns請求報文,所述dns請求報文攜帶待訪問網頁的域名;
利用所述內核空間在預先存儲的預設報文列表中查找包括所述dns請求報文的記錄;所述預設報文列表存儲了多條記錄,每一條記錄中至少包括一個dns請求報文與一個dns響應報文,且不同的記錄包括的dns請求報文和dns響應報文不同;
如果查找到包括所述dns請求報文的記錄,則利用所述內核空間向所述終端發送所述查找到的dns響應報文。
進一步地,所述方法還包括:
如果未查找到包括所述dns請求報文的記錄,則利用所述內核空間向域名解析服務器發送所述dns請求報文;
利用所述內核空間接收所述域名解析服務器根據所述dns請求報文返回的dns響應報文;
利用所述內核空間向所述終端發送所述接收到的dns響應報文。
進一步地,所述方法還包括:
將所述dns請求報文與所述接收到的dns響應報文組成一條記錄,并存儲在所述預設報文列表中。
其中,所述利用所述內核空間向域名解析服務器發送所述dns請求報文,包括:
如果所述dns請求報文中的源ip地址為私網ip地址,則利用所述內核空間將所述dns請求報文中的源ip地址修改為所述代理服務器的公網ip地址,再利用所述內核空間向所述域名解析服務器發送修改了源ip地址的dns請求報文。
其中,所述向所述終端發送所述查找到的dns響應報文,包括:
利用所述內核空間將所述dns響應報文中的目的ip地址修改為所述終端的私網ip地址,再利用所述內核空間向所述終端發送修改了目的ip地址的dns響應報文。
根據本發明實施例的第二方面,提供一種報文處理裝置,應用于代理服務器,所述裝置包括:
第一接收模塊,用于利用基于linux的內核空間接收終端發送的dns請求報文,所述dns請求報文攜帶待訪問網頁的域名;
查找模塊,用于利用所述內核空間在預先存儲的預設報文列表中查找包括所述dns請求報文的記錄;所述預設報文列表存儲了多條記錄,每一條記錄中至少包括一個dns請求報文與一個dns響應報文,且不同的記錄包括的dns請求報文和dns響應報文不同;
第一發送模塊,用于如果查找到包括所述dns請求報文的記錄,則利用所述內核空間向所述終端發送所述查找到的dns響應報文。
進一步地,所述裝置還包括:
第二發送模塊,用于如果未查找到包括所述dns請求報文的記錄,則利用所述內核空間向域名解析服務器發送所述dns請求報文;
第二接收模塊,用于利用所述內核空間接收所述域名解析服務器根據所述dns請求報文返回的dns響應報文;
第三發送模塊,用于利用所述內核空間向所述終端發送所述接收到的dns響應報文。
進一步地,所述裝置還包括:
存儲模塊,用于將所述dns請求報文與所述接收到的dns響應報文組成一條記錄,并存儲在所述預設報文列表中。
其中,所述第二發送模塊包括:
第一修改單元,用于如果所述dns請求報文中的源ip地址為私網ip地址,則利用所述內核空間將所述dns請求報文中的源ip地址修改為所述代理服務器的公網ip地址;
第二發送單元,用于利用所述內核空間向所述域名解析服務器發送修改了源ip地址的dns請求報文。
其中,所述第三發送模塊包括:
第二修改單元,用于利用所述內核空間將所述dns響應報文中的目的ip地址修改為所述終端的私網ip地址;
第二發送單元,用于利用所述內核空間向所述終端發送修改了目的ip地址的dns響應報文。
本發明實施例提供的技術方案可以包括以下有益效果:
在本發明實施例中,利用基于linux的內核空間接收終端發送的dns請求報文,該dns請求報文攜帶待訪問網頁的域名;利用內核空間在預先存儲的預設報文列表中查找包括該dns請求報文的記錄;預設報文列表存儲了多條記錄,每一條記錄中至少包括一個dns請求報文與一個dns響應報文,且不同的記錄包括的dns請求報文和dns響應報文不同;如果查找到包括該dns請求報文的記錄,則利用內核空間向終端發送查找到的dns響應報文。
本發明實施例無需將dns請求報文通過套接字從內核空間復制到用戶空間,也無需將dns請求報文通過套接字從用戶空間復制到內核空間,直接利用內核空間處理該dns請求報文,進而利用內核空間得到dns響應報文,并利用內核空間向終端發送dns響應報文,從而節省了系統資源;以及節省了將dns請求報文通過套接字復制到用戶空間所需耗費的時間,進而提高了終端獲取到dns響應報文的獲取效率。
其次,由于底層網絡接口位于linux的內核空間中,且由于本發明實施例是利用內核空間來接收并處理dns請求報文以及利用內核空間向終端發送dns響應報文,因此,可以充分利用位于linux的內核空間中的底層的網絡接口輔助處理dns請求報文,從而提高了擴展性和靈活性。
應當理解的是,以上的一般描述和后文的細節描述僅是示例性和解釋性的,并不能限制本發明實施例。
附圖說明
此處的附圖被并入說明書中并構成本說明書的一部分,示出了符合本發明的實施例,并與說明書一起用于解釋本發明實施例的原理。
圖1是根據一示例性實施例示出的一種報文處理系統的結構示意圖;
圖2是根據一示例性實施例示出的一種報文處理方法的流程圖;
圖3是根據一示例性實施例示出的一種報文處理方法的流程圖;
圖4是根據一示例性實施例示出的一種報文處理裝置的結構示意圖。
具體實施方式
這里將詳細地對示例性實施例進行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數字表示相同或相似的要素。以下示例性實施例中所描述的實施方式并不代表與本發明實施例相一致的所有實施方式。相反,它們僅是與如所附權利要求書中所詳述的、本發明實施例的一些方面相一致的裝置和方法的例子。
圖1是根據一示例性實施例示出的一種報文處理系統的結構示意圖,如圖1所示,該系統包括終端1、代理服務器2和域名解析服務器3。終端1與代理服務器2之間通信連接,終端1與代理服務器2之間可以通過二者之間的通信連接實現數據交互;代理服務器2與域名解析服務器3之間通信連接。代理服務器2與域名解析服務器3之間可以通過二者之間的通信連接實現數據交互。
圖2是根據一示例性實施例示出的一種報文處理方法的流程圖,如圖2所示,該方法用于如圖1所示的代理服務器2中,該方法包括以下步驟。
在步驟s101中,利用基于linux的內核空間接收終端發送的dns請求報文,該dns請求報文攜帶待訪問網頁的域名;
在本發明實施例中,用戶通常利用終端上網,當用戶需要利用終端訪問某一網頁時,用戶需要首先在終端中輸入該網頁的域名,例如,www.baidu.com或者www.taobao.com等。終端獲取用戶輸入的該網頁的域名,并根據該網頁的域名從域名解析服務器中獲取存儲有該網頁的網頁服務器的ip地址(internetprotocoladdress,互聯網協議地址),進而再根據網頁服務器的ip地址從網頁服務器中獲取該網頁,并在終端的屏幕上顯示該網頁,以供用戶瀏覽。
其中,為了能夠根據該網頁的域名從域名解析服務器中獲取存儲有該網頁的網頁服務器的ip地址,終端需要根據該網頁的域名生成dns請求報文,并向域名解析服務器發送dns請求報文;以使域名解析服務器就會根據dns請求報文攜帶的該網頁的域名獲取網頁服務器的ip地址,并根據網頁服務器的ip地址和該網頁的域名生成dns響應報文,然后向終端返回dns響應報文;之后終端再從dns響應報文中提取出網頁服務器的ip地址。
在本發明實施例中,終端在向域名解析服務器發送dns請求報文時,需要先將dns請求報文發送至代理服務器,進而代理服務器再將dns請求報文轉發至域名解析服務器。相應地,域名解析服務器在向終端返回dns響應報文時,需要先將dns響應報文發送至代理服務器,進而代理服務器再將dns響應報文轉發至終端。
因此,在本發明實施例中,當終端需要訪問某一網頁時,就會向代理服務器發送攜帶該網頁的域名的dns請求報文,代理服務器在接收到終端發送的一個攜帶該網頁的域名的dns請求報文之后,就會從域名解析服務器中獲取dns響應報文,該dns響應報文中攜帶存儲有該網頁的網頁服務器的ip地址以及該網頁的域名,并向終端返回該dns響應報文。
如果之后終端還需要訪問該網頁,則終端還會向代理服務器發送該dns請求報文,代理服務器仍舊需要從域名解析服務器中獲取該dns響應報文,并向終端返回該dns響應報文,終端再接收該dns響應報文。
但是,代理服務器從域名解析服務器中獲取該dns響應報文的過程為:
代理服務器向域名解析服務器轉發該dns請求報文;域名解析服務器接收該dns請求報文,并根據該dns請求報文攜帶的該網頁的域名獲取存儲有該網頁的網頁服務器的ip地址,再根據該網頁的網頁服務器的ip地址和該網頁的域名生成該dns響應報文,并向代理服務器返回該dns響應報文;代理服務器接收域名解析服務器返回的該dns響應報文。
在從域名解析服務器中獲取該dns響應報文的整個過程中,代理服務器需要與域名解析服務器進行兩次數據交互,會耗費代理服務器與域名解析服務器之間較多的網絡資源,且在代理服務器與域名解析服務器之間的通信連接不穩定時,可能需要耗費較多時間代理服務器才能接收到域名解析服務器返回的該dns響應報文,導致獲取該dns響應報文的獲取效率較低。
因此,如果之后再次接收到終端發送的攜帶該域名的該dns請求報文,為了能夠提高獲取該dns響應報文的獲取效率以及節省代理服務器與域名解析服務器之間的網絡資源,在代理服務器接收到域名解析服務器返回的該dns響應報文時,除了向終端轉發該dns響應報文之外,代理服務器還會將該dns請求報文與該dns響應報文組成一條記錄,并存儲本地存儲的預設報文列表中。
如此,在本發明實施例中,當接收到攜帶待訪問網頁的域名的dns請求報文時,代理服務器無需直接向域名解析服務器轉發該dns請求報文,而是執行步驟s102:利用內核空間在預先存儲的預設報文列表中查找包括該dns請求報文的記錄;然后執行步驟s103。
在步驟s102中,利用內核空間在預先存儲的預設報文列表中查找包括該dns請求報文的記錄;
預設報文列表存儲了多條記錄,每一條記錄中至少包括一個dns請求報文與一個dns響應報文,且不同的記錄包括的dns請求報文和dns響應報文不同;
在本發明實施例中,當利用內核空間接收到該dns請求報文之后,無需將dns請求報文通過套接字復制到linux的用戶空間,也無需并利用用戶空間查找在預先存儲的預設報文列表中查找包括該dns請求報文的記錄,也無需將查找到的記錄中的dns響應報文再復制到linux的內核空間,進而無需利用內核空間向終端發送dns響應報文。本發明實施例是直接利用內核空間在預先存儲的預設報文列表中查找包括該dns請求報文的記錄。
如果查找到包括該dns請求報文的記錄,在步驟s103中,利用內核空間向終端發送查找到的dns響應報文。
在本發明實施例中,在預設報文列表中的包括該dns請求報文的記錄中,還存在dns響應報文,該記錄中的dns響應報文中至少攜帶待訪問網頁的域名和存儲有待訪問網頁的網頁服務器的ip地址。
進一步地,在代理服務器向終端發送查找到的該記錄中的dns響應報文之后,終端就會接收到代理服務器發送的dns響應報文,然后從代理服務器發送的dns響應報文中提取出存儲有待訪問網頁的網頁服務器的ip地址,并根據網頁服務器的ip地址從網頁服務器中獲取待訪問網頁,進而在終端的屏幕上顯示待訪問網頁,以供用戶瀏覽待訪問網頁。
在本發明實施例中,利用基于linux的內核空間接收終端發送的dns請求報文,該dns請求報文攜帶待訪問網頁的域名;利用內核空間在預先存儲的預設報文列表中查找包括該dns請求報文的記錄;預設報文列表存儲了多條記錄,每一條記錄中至少包括一個dns請求報文與一個dns響應報文,且不同的記錄包括的dns請求報文和dns響應報文不同;如果查找到包括該dns請求報文的記錄,則利用內核空間向終端發送查找到的dns響應報文。
本發明實施例無需將dns請求報文通過套接字從內核空間復制到用戶空間,也無需將dns請求報文通過套接字從用戶空間復制到內核空間,直接利用內核空間處理該dns請求報文,進而利用內核空間得到dns響應報文,并利用內核空間向終端發送dns響應報文,從而節省了系統資源;以及節省了將dns請求報文通過套接字復制到用戶空間所需耗費的時間,進而提高了終端獲取到dns響應報文的獲取效率。
其次,由于底層網絡接口位于linux的內核空間中,且由于本發明實施例是利用內核空間來接收并處理dns請求報文以及利用內核空間向終端發送dns響應報文,因此,可以充分利用位于linux的內核空間中的底層的網絡接口輔助處理dns請求報文,從而提高了擴展性和靈活性。
進一步地,如果在預設報文列表中未查找到包括該dns請求報文的記錄,則代理服務器就無法執行步驟s103,進而終端就無法得到存儲有待訪問網頁的網頁服務器的ip地址,也就無法獲取待訪問網頁供用戶瀏覽,因此,在未查找到包括該dns請求報文的記錄的情況下,為了使得終端能夠得到待訪問網頁供用戶瀏覽,參見圖3,該方法還包括:
如果未查找到包括該dns請求報文的記錄,在步驟s201中,利用內核空間向域名解析服務器發送該dns請求報文;
如果在預設報文列表中未查找到包括該dns請求報文的記錄,則說明之前未曾接收過攜帶待訪問網頁的域名的dns請求報文,也即,此次是首次接收到攜帶待訪問網頁的域名的dns請求報文,因此,需要利用內核空間向域名解析服務器發送該dns請求報文,以使域名解析服務器根據dns請求報文攜帶的待訪問網頁的域名,獲取存儲有待訪問網頁的網頁服務器的ip地址,并根據網頁服務器的ip地址和待訪問網頁的域名生成dns響應報文,以及向代理服務器返回生成的dns響應報文。
在本發明另一實施例中,有時候終端的ip地址是私網ip地址,并不是公網ip地址,如果終端的ip地址是私網ip地址,由于dns請求報文中攜帶的源ip地址是私網ip地址,則在代理服務器向域名解析服務器發送該dns請求報文之后,域名解析服務器就無法向dns響應報文發送至代理服務器,也無法直接向終端發送dns響應報文,進而代理服務器就無法向終端發送dns響應報文,終端也就接收不到dns響應報文。
為了在終端的ip地址是私網ip地址的情況下使得終端能夠接收到dns響應報文,則代理服務器需要利用內核空間將dns請求報文中的源ip地址修改為代理服務器的公網ip地址,再利用內核空間向所述域名解析服務器發送修改了源ip地址的dns請求報文。
在步驟s202中,利用內核空間接收域名解析服務器根據該dns請求報文返回的dns響應報文;
在步驟s203中,利用內核空間向終端發送接收到的dns響應報文。
在本發明另一實施例中,如果dns請求報文的源ip地址由終端的私網ip地址修改為代理服務器的公網ip地址,則代理服務器接收到的dns響應報文的目的地址為代理服務器的公網ip地址,為了使得終端能夠收到dns響應報文,代理服務器需要利用內核空間將dns響應報文中的目的ip地址修改為終端的私網ip地址,再利用內核空間向終端發送修改了目的ip地址的dns響應報文。
進一步地,在代理服務器利用內核空間向終端發送接收到的dns響應報文之后,終端就會接收到代理服務器發送的dns響應報文,然后從代理服務器發送的dns響應報文中提取出存儲有待訪問網頁的網頁服務器的ip地址,并根據網頁服務器的ip地址從網頁服務器中獲取待訪問網頁,進而在終端的屏幕上顯示待訪問網頁,以供用戶瀏覽待訪問網頁。
進一步地,如果之后再次接收到終端發送的該dns請求報文,為了能夠提高獲取該dns響應報文的獲取效率以及節省代理服務器與域名解析服務器之間的網絡資源,代理服務器還可以將該dns請求報文與接收到的dns響應報文組成一條記錄,并存儲在預設報文列表中。如此,當之后再次接收到終端發送的該dns請求報文時,就可以按照上述步驟s101~步驟s103的流程獲取到該dns響應報文,從而提高獲取該dns響應報文的獲取效率以及節省代理服務器與域名解析服務器之間的網絡資源。
圖4是根據一示例性實施例示出的一種報文處理裝置的框圖。參照圖4,該裝置包括:
第一接收模塊11,用于利用基于linux的內核空間接收終端發送的dns請求報文,所述dns請求報文攜帶待訪問網頁的域名;
查找模塊12,用于利用所述內核空間在預先存儲的預設報文列表中查找包括所述dns請求報文的記錄;所述預設報文列表存儲了多條記錄,每一條記錄中至少包括一個dns請求報文與一個dns響應報文,且不同的記錄包括的dns請求報文和dns響應報文不同;
第一發送模塊13,用于如果查找到包括所述dns請求報文的記錄,則利用所述內核空間向所述終端發送所述查找到的dns響應報文。
進一步地,所述裝置還包括:
第二發送模塊,用于如果未查找到包括所述dns請求報文的記錄,則利用所述內核空間向域名解析服務器發送所述dns請求報文;
第二接收模塊,用于利用所述內核空間接收所述域名解析服務器根據所述dns請求報文返回的dns響應報文;
第三發送模塊,用于利用所述內核空間向所述終端發送所述接收到的dns響應報文。
進一步地,所述裝置還包括:
存儲模塊,用于將所述dns請求報文與所述接收到的dns響應報文組成一條記錄,并存儲在所述預設報文列表中。
其中,所述第二發送模塊包括:
第一修改單元,用于如果所述dns請求報文中的源ip地址為私網ip地址,則利用所述內核空間將所述dns請求報文中的源ip地址修改為所述代理服務器的公網ip地址;
第二發送單元,用于利用所述內核空間向所述域名解析服務器發送修改了源ip地址的dns請求報文。
其中,所述第三發送模塊包括:
第二修改單元,用于利用所述內核空間將所述dns響應報文中的目的ip地址修改為所述終端的私網ip地址;
第二發送單元,用于利用所述內核空間向所述終端發送修改了目的ip地址的dns響應報文。
本發明實施例提供的技術方案可以包括以下有益效果:
在本發明實施例中,利用基于linux的內核空間接收終端發送的dns請求報文,該dns請求報文攜帶待訪問網頁的域名;利用內核空間在預先存儲的預設報文列表中查找包括該dns請求報文的記錄;預設報文列表存儲了多條記錄,每一條記錄中至少包括一個dns請求報文與一個dns響應報文,且不同的記錄包括的dns請求報文和dns響應報文不同;如果查找到包括該dns請求報文的記錄,則利用內核空間向終端發送查找到的dns響應報文。
本發明實施例無需將dns請求報文通過套接字從內核空間復制到用戶空間,也無需將dns請求報文通過套接字從用戶空間復制到內核空間,直接利用內核空間處理該dns請求報文,進而利用內核空間得到dns響應報文,并利用內核空間向終端發送dns響應報文,從而節省了系統資源;以及節省了將dns請求報文通過套接字復制到用戶空間所需耗費的時間,進而提高了終端獲取到dns響應報文的獲取效率。
其次,由于底層網絡接口位于linux的內核空間中,且由于本發明實施例是利用內核空間來接收并處理dns請求報文以及利用內核空間向終端發送dns響應報文,因此,可以充分利用位于linux的內核空間中的底層的網絡接口輔助處理dns請求報文,從而提高了擴展性和靈活性。
關于上述實施例中的裝置,其中各個模塊執行操作的具體方式已經在有關該方法的實施例中進行了詳細描述,此處將不做詳細闡述說明。
本領域技術人員在考慮說明書及實踐這里公開的發明后,將容易想到本發明的其它實施方案。本申請旨在涵蓋本發明實施例的任何變型、用途或者適應性變化,這些變型、用途或者適應性變化遵循本發明實施例的一般性原理并包括本發明實施例未公開的本技術領域中的公知常識或慣用技術手段。說明書和實施例僅被視為示例性的,本發明實施例的真正范圍和精神由所附的權利要求指出。
應當理解的是,本發明實施例并不局限于上面已經描述并在附圖中示出的精確結構,并且可以在不脫離其范圍進行各種修改和改變。本發明實施例的范圍僅由所附的權利要求來限制。