一種頁面重定向方法及裝置的制造方法
【技術領域】
[0001]本發明屬于通信領域,尤其涉及一種頁面重定向方法及裝置。
【背景技術】
[0002]隨著園區、公共場所、高校、企業、醫院、酒店、餐館等環境中無線局域網的廣泛部署,終端用戶的認證管理顯得極為重要。其中,web認證是最為簡潔一種認證方式,它不需要用戶在客戶端中安裝特殊的應用軟件,在web認證過程中,通過頁面重定向方法,將當前的頁面轉向WIFI熱點設定的Portal頁面,以完成認證。
[0003]然而,現有的頁面重定向方法,系統開銷大、處理時間長,降低了頁面重定向的處理效率且不利于推廣使用。其原因在于,現有頁面重定向方法,其頁面重定向的數據需要進入內核,且需要內核處理頁面重定向的數據,因此系統開銷大、處理時間長。此外,WIFI熱點一般由專業的網絡設備供應商提供,因此WIFI熱點設定的Portal頁面,一般采用固定的Portal頁面,不能夠隨意修改,商家無法將Portal頁面,修改為配置的具有自己特色的Portal頁面,適用范圍有限,難以移植,因此不利于推廣使用。
【發明內容】
[0004]本發明實施例的目的在于提供一種頁面重定向方法,旨在解決現有的頁面重定向方法,系統開銷大、處理時間長,降低了頁面重定向的處理效率且不利于推廣使用的問題。
[0005]本發明實施例是這樣實現的,一種頁面重定向方法,包括:
[0006]在無線接入點的控制和配置協議CAPWAP的通信隧道入口,接收客戶端發送的數據報文;
[0007]當所述數據報文為TCP連接報文時,解析所述數據報文并記錄目的IP及端口 ;
[0008]查看所述客戶端當前的狀態,若當前的狀態為待認證狀態時,則截獲所述客戶端的TCP SYNC報文;
[0009]根據所述客戶端的TCP SYNC報文、目標IP及端口,封裝成接入回復報文,加封CAPffAP頭后,將所述接入回復報文通過CAPWAP通信隧道返回給客戶端;
[0010]接收并截獲所述客戶端發送的HTTP數據請求報文,檢測所述HTTP數據請求報文攜帶的請求方式,選擇與所述請求方式相對應的響應方式;
[0011]在所述HTTP數據請求報文中,根據所述響應方式,封裝自定義的用于頁面重定向的Portal頁面地址,加封CAPWP頭后,通過所述CAPWAP通信隧道返回至所述客戶端。
[0012]本發明實施例的另一目的在于提供一種頁面重定向裝置,包括:
[0013]數據報文接收模塊,用于在無線接入點的控制和配置協議CAPWAP的通信隧道入口,接收客戶端發送的數據報文;
[0014]數據報文解析模塊,用于當所述數據報文為TCP連接報文時,解析所述數據報文并記錄目的IP及端口 ;
[0015]截獲模塊,用于查看所述客戶端當前的狀態,若當前的狀態為待認證狀態時,則截獲所述客戶端的TCP SYNC報文;
[0016]接入回復報文返回模塊,用于根據所述客戶端的TCP SYNC報文、目標IP及端口,封裝成接入回復報文,加封CAPWAP頭后,將所述接入回復報文通過CAPWAP通信隧道返回給客戶端;
[0017]響應方式選擇模塊,用于接收并截獲所述客戶端發送的HTTP數據請求報文,檢測所述HTTP數據請求報文攜帶的請求方式,選擇與所述請求方式相對應的響應方式;
[0018]Portal頁面地址返回模塊,用于在所述HTTP數據請求報文中,根據所述響應方式,封裝自定義的用于頁面重定向的Portal頁面地址,加封CAPWP頭后,通過所述CAPWAP通信隧道返回至所述客戶端。
[0019]在本發明實施例中,在CAPWAP的通信隧道入口,接收客戶端發送的數據報文并進行了處理,封裝自定義的用于頁面重定向的Portal頁面地址,加封CAPWP頭后,通過所述CAPffAP通信隧道返回至所述客戶端。由于數據報文沒有進入內核協議棧,因此內核協議棧沒有參與建立、維護TCP連接,從而減小了系統開銷,相對于現有頁面重定向方法,減少了系統開銷和處理時間。此外,采用了自定義的用于頁面重定向的Portal頁面地址,商家可將Portal頁面,修改為配置的具有自己特色的Portal頁面,提高了適用范圍。因此有益效果在于兩方面,一方面提高了頁面重定向的處理效率,另一方面有利于移植和推廣使用。
【附圖說明】
[0020]圖1是本發明實施例提供的頁面重定向方法的實現流程圖;
[0021]圖2是本發明實施例提供的頁面重定向方法中步驟S105的第一實現流程圖;
[0022]圖3是本發明實施例提供的頁面重定向方法中步驟S105的第二實現流程圖;
[0023]圖4是本發明實施例提供的頁面重定向方法中步驟S106的實現流程圖;
[0024]圖5是用戶態socket收發包處理線程和TCP/IP協議棧的交互流程圖;
[0025]圖6是本發明實施例提供的頁面重定向裝置的結構框圖。
【具體實施方式】
[0026]為了使本發明的目的、技術方案及優點更加清楚明白,以下結合附圖及實施例,對本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發明,并不用于限定本發明。
[0027]實施例一
[0028]圖1是本發明實施例提供的頁面重定向方法的實現流程圖,詳述如下:
[0029]在步驟SlOl中,在無線接入點的控制和配置協議CAPWAP的通信隧道入口,接收客戶端發送的數據報文;
[0030]其中,數據報文是通過UDP 5247CAPWAP通信隧道接收,并且得到的是完整的用戶數據報文。
[0031]在步驟S102中,當所述數據報文為TCP連接報文時,解析所述數據報文并記錄目的IP及端口 ;
[0032]在步驟S103中,查看所述客戶端當前的狀態,若當前的狀態為待認證狀態時,則截獲所述客戶端的TCP SYNC報文;
[0033]其中,查詢所述客戶端當前處于需要認證且未認證狀態下,才會截獲TCP 80的SYNC報文并且記錄用戶請求服務器的真實的目的IP及端口。
[0034]在步驟S104中,根據所述客戶端的TCP SYNC報文、目標IP及端口,封裝成接入回復報文,加封CAPWAP頭后,將所述接入回復報文通過CAPWAP通信隧道返回給客戶端;
[0035]其中,步驟S104,具體為:
[0036]對TCP SYNC報文進行解析,根據解析的內容,構造接入回復報文接入回復報文即SYNC ACK 報文;
[0037]在所述接入回復報文前面加封CAPWAP頭后,將所述接入回復報文通過CAPWAP通信隧道發送給客戶端。
[0038]其中,根據截獲的TCP SYNC報文構造接入回復報文,并根據記錄的IP及端口更新計算報文校驗和。
[0039]CAPffAP通信隧道為無線接入點與客戶端之間的CAPWAP套接字隧道。
[0040]其中,接收并截獲客戶端發送來的TCP ACK報文,此報文可不用處理直接丟棄,此時用戶側的TCP連接已經成功建立。
[0041]在步驟S105中,接收并截獲所述客戶端發送的HTTP數據請求報文,檢測所述HTTP數據請求報文攜帶的請求方式,選擇與所述請求方式相對應的響應方式;
[0042]在步驟S106中,在所述HTTP數據請求報文中,根據所述響應方式,封裝自定義的用于頁面重定向的Portal頁面地址,加封CAPWP頭后,通過所述CAPWAP通信隧道返回至所述客戶端。
[0043]其中,整個數據報文的收發包及頁面重定向的工作過程,全部在用戶態完成,且所有報文的收發都是通過CAPWAP通信隧道完成,當完成重定向后,用戶直接訪問Portal頁面,則需要白名單功能配合完成。
[0044]本發明提供的頁面重定向方法,充分利用了 SOCKET編程和TCP握手建立過程以及HTTP頁面訪問機制,經過合理的裁剪規避,從而簡單的實現了頁面訪問重定向功能。其實現難度低,開發簡單、效率高,對系統穩定沒有影響,可移植性強,最大的接近和實現了嵌入式軟件設計的要求。
[0045]實施例二
[0046]圖2是本發明實施例提供的頁面重定向方法中步驟S105的第一實現流程圖,詳述如下:
[0047]在步驟S201中,檢測所述HTTP數據請求報文攜帶的請求方式為GET請求方式;
[0048]在步驟S202中,選擇與所述GET請求方式相對應的302響應方式。
[0049]其中,選擇與所述GET請求方式相對應的302響應方式,便于后續加載Portal頁面地址。
[0050]實施例三
[0051]圖3是本發明實施例提供的頁面重定向方法中步驟S105的第二實現流程圖,詳述如下:
[0052]在步驟S301中,所述檢測所述HTTP數據請求報文攜帶的請求方式為POST請求方式;
[0053]在步驟S302中,選擇與所述POST請求方式相對應的303響應方式。
[0054]其中,選擇與所述POST請求方式相對應的303響應方式,便于后續加載Portal頁面地址。
[0055]實施例四
[0056]圖4是本發明實施例提供的頁面重定向方法中步驟S106的實現流程圖,詳述如下:
[0057]在步驟S401中,解析所述HTTP數據請求報文,根據所述響應方式,調用自定義的用于頁面重定向的Portal頁面地址替換所述HTTP數據請求報文中的URL,封裝成新的HTTP數據請求報文;
[0058]在步驟S402中,在新的HTTP數據請求報文前加封CAPWP頭后,通過所述CAPWAP通信隧道,將新的HTTP數據請求報文返回至所述客戶端。
[0059]在本實施例中,將新的HTTP數據請求報文返回至所述客戶端,所述客戶端在白名單功能的配合下訪問portal頁面,重定向后,完成WEB認證流程。
[0060]實施例五
[0061]圖5是用戶態socket收發包處理線程和TCP/IP協議棧的交互流程圖,詳述如下:
[0062]其中,Socket數據通道為CAPWAP通信隧道。
[0063]用戶態socket收發包處理線程為執行頁面重定向方法的線程。
[0064]用戶態socket收發包處理線程用于獲取數據報文,提取TCP 80端