統一資源定位符url匹配的方法及裝置的制造方法
【技術領域】
[0001]本發明涉及通信技術領域,具體地,涉及一種統一資源定位符URL匹配的方法及裝置。
【背景技術】
[0002]URL(統一資源定位符,Uniform Resource Locator)是互聯網上標準資源的地址。互聯網上的每個文件都有一個唯一的URL,它包含的信息指出文件的位置以及瀏覽器應該怎么處理它。URL中包括Host(主機域名)和資源路徑(Path)以及參數三部分,其中參數為可選的。URL的Host可采用域名(Domain Name)或直接使用主機的IP地址表示,Path則表明資源在Host上存放的位置,結合這兩部分,URL實現全網唯一標識資源。例如,如下URL “a.b.c/path/to/resource.suffix?paral = vall¶2 = val2” 中,“a.b.c” 為Host部分,“/path/to/resource.suffix?” 為path部分,“paral =vall¶2 = val2” 為參數部分。
[0003]Host域名中使用分隔符‘.’將其分成不同的塊(label),從最右邊向左的塊依次表示頂級域名、二級域名、三級域名等等。頂級域名有兩類:國際頂級域名(internat1nalTop-Level Domain names,簡稱iTLDs)和國家頂級域名(nat1nal Top-Level Domainnames,簡稱nTLDs)。國際頂級域名是使用最早也最廣泛的域名,表示域名注冊企業、注冊人的類別,例如工商企業是com、非盈利組織org、網絡提供商net等。國家頂級域名采用IS03166國家、地區代碼表示不同的國家或地區,例如,中國是cn、美國是us、香港是hk等。
[0004]對于不同的URL對應有不同的處理規則,例如進行屏蔽請求操作、統計信息操作、HTTP重定向等。如此,需要對URL進行匹配,以確定出對應的處理規則。現有技術中的URL匹配方法包括:布隆過濾器(Bloom filter)方法,被用來檢測一個元素是否為集合中的一個成員。如果檢測結果為是,該元素不一定在集合中;但如果檢測結果為否,則該元素一定不在集合中。因為這些特性,使得布隆過濾器不能進行精確過濾。
【發明內容】
[0005]為解決上述問題,至少部分的解決上述問題,本發明提供了一種統一資源定位符URL匹配的方法及裝置。
[0006]根據本發明的一方面,提供一種統一資源定位符URL匹配的方法,該方法包括:接收待匹配的URL;根據主機域名Host匹配規則對接收的URL的Host進行匹配,查找到對應的資源路徑Path匹配規則;根據查找到的Path匹配規則對URL的Path進行匹配,查找到對應的處理規則;將查找到的處理規則作為所述URL對應的處理規則進行輸出。
[0007]優選地,所述Host匹配規則表示為節點中包括特征匹配字符串的Host二叉樹,所述根據主機域名Host匹配規則對接收的URL的Host進行匹配包括:根據第一分隔符對接收的URL的Host進行分割獲得Host的子字符串,按照在Host中從右到左的順序將Host的子字符串排序;在Host 二叉樹中,根據分割所得Host的子字符串和子字符串的排序進行匹配查找;將Host在Host 二叉樹中最后匹配的節點所攜帶的信息確定為URL對應的Path匹配規則。
[0008]優選地,所述Host二叉樹的節點還包括位置序號;所述按照在Host中從右到左的順序將Host的子字符串排序包括:按照在Host中從右到左的順序將Host的子字符串編號使得子字符串具有對應的序號;所述在Host 二叉樹中,根據分割所得Host的子字符串和子字符串的排序進行匹配查找包括:當Host的子字符串和序號與Host二叉樹中當前節點的特征匹配字符串和位置序號都匹配時,確定Host的子字符串和當前節點匹配;當Host的子字符串與當前節點匹配時,選擇當前節點的孩子節點進行匹配,當Host的子字符串與當前節點不匹配時,選擇當前節點的兄弟節點進行匹配。
[0009]優選地,所述在Host二叉樹中,根據分割所得Host的子字符串和子字符串的排序進行匹配查找還包括:當Host的子字符串匹配的當前節點的孩子節點為空時,判斷當前節點是否具有攜帶的信息,如果具有攜帶的信息,則將當前節點作為Host在Host二叉樹中最后匹配的節點;如果不具有攜帶的信息,則將最后匹配的具有攜帶的信息的節點作為Host在Host二叉樹中最后匹配的節點;當Host的子字符串不匹配的當前節點的兄弟節點為空時,將最后匹配的具有攜帶的信息的節點作為Host在Host 二叉樹中最后匹配的節點。
[0010]優選地,所述Host二叉樹的根節點的孩子節點和/或根節點的兄弟節點的孩子節點中以哈希Hash散列表的形式存儲多個特征匹配字符串;所述根據分割所得Host的子字符串和子字符串的排序進行匹配查找包括:當當前的節點為根節點的孩子節點和/或根節點的兄弟節點的孩子節點時,在Hash散列表中進行Hash散列查找。
[0011 ]優選地,所述根據第一分隔符對接收的URL的Host進行分割獲得Host的子字符串包括:判斷Host是否滿足頂級域名為國家頂級域名且二級域名為類別符號;如果是,則將頂級域名和二級域名合并為一個子字符串,將二級域名之后部分從第一分隔符處進行分割得到子字符串;否則,將Host從第一分隔符處進行分割得到子字符串。
[0012]優選地,所述Path匹配規則表示為節點中包括特征匹配字符串的Path 二叉樹,所述根據查找到的Path匹配規則對URL的Path進行匹配包括:根據第二分隔符對接收的URL的Path進行分割獲得Path的子字符串,按照在Path中從左到右的順序將Path的子字符串排序;在Path 二叉樹中,根據分割所得Path的子字符串和子字符串的排序進行匹配查找;將Path在Path 二叉樹中最后匹配的節點所攜帶的信息確定為URL對應的處理規則。
[0013]優選地,所述Path二叉樹的節點還包括位置序號;所述按照在Path中從左到右的順序將Path的子字符串排序包括:按照在Path中從左到右的順序將Path的子字符串編號使得子字符串具有對應的序號;所述在Path 二叉樹中,根據分割所得Path的子字符串和子字符串的排序進行匹配查找包括:當Path的子字符串和序號與Path二叉樹中當前節點的特征匹配字符串和位置序號都匹配時,確定Path的子字符串和當前節點匹配;當Path的子字符串與當前節點匹配時,選擇當前節點的孩子節點進行匹配,當Path的子字符串與當前節點不匹配時,選擇當前節點的兄弟節點進行匹配。
[00M]優選地,所述在Path二叉樹中,根據分割所得Path的子字符串和子字符串的排序進行匹配查找還包括:當Path的子字符串匹配的當前節點的孩子節點為空時,判斷當前節點是否具有攜帶的信息,如果具有攜帶的信息,則將當前節點作為Path在Path二叉樹中最后匹配的節點;如果不具有攜帶的信息,則將最后匹配的具有攜帶的信息的節點作為Path在Path二叉樹中最后匹配的節點;當Path的子字符串不匹配的當前節點的兄弟節點為空時,將最后匹配的具有攜帶的信息的節點作為Path在Path 二叉樹中最后匹配的節點。
[0015]根據本發明的另一方面,提供了一種統一資源定位符URL匹配的裝置,該裝置包括:接收模塊,用于接收待匹配的URL;Host匹配模塊,用于根據主機域名Host匹配規則對接收的URL的Host進行匹配,查找到對應的資源路徑Path匹配規則;Path匹配模塊,用于根據查找到的Path匹配規則對URL的Path進行匹配,查找到對應的處理規則;輸出模塊,用于將查找到的處理規則作為所述URL對應的處理規則進行輸出。
[0016]優選地,所述Host匹配規則表示為節點中包括特征匹配字符串的Host 二叉樹,所述Host匹配模塊包括:第一分割子模塊,用于根據第一分隔符對接收的URL的Host進行分割獲得Host的子字符串,按照在Host中從右到左的順序將Host的子字符串排序;
[00Π]第一查找子模塊,用于在Host二叉樹中,根據分割所得Host的子字符串和子字符串的排序進行匹配查找;第一確定子模塊,用于將Host在Host 二叉樹中最后匹配的節點所攜帶的信息確定為URL對應的Path匹配規則。
[0018]優選地,所述Host二叉樹的節點還包括位置序號;所述第一分割子模塊用于按照在Host中從右到左的順序將Host的子字符串編號使得子字符串具有對應的序號;所述第一查找子模塊用于當Host的子字符串和序號與Host 二叉樹中當前節點的特征匹配字符串和位置序號都匹配時,確定Host的子字符串和當前節點匹配;當Host的子字符串與當前節點匹配時,選擇當前節點的孩子節點進行匹配,當Host的子字符串與當前節點不匹配時,選擇當前節點的兄弟節點進行匹配。
[0019]優選地,所述第一查找子模塊還用于當Host的子字符串匹配的當前節點的孩子節點為空時,判斷當前節點是否具有攜帶的信息,如果具有攜帶的信息,則將當前節點作為Host在Host二叉樹中最后匹配的節點;如果不具有攜帶的信息,則將最后匹配的具有攜帶的信息的節點作為Host在Host二叉樹中最后匹配的節點;當Host的子字符串不匹配的當前節點的兄弟節點為空時,將最后匹配的具有攜帶的信息的節點作為Host在Host 二叉樹中最后匹配的節點。
[0020]優選地,所述Host二叉樹的根節點的孩子節點和/或根節點的兄弟節點的孩子節點中以哈希Hash散列表的形式存儲多個特征匹配字符串;所述第一查找子模塊用于當當前的節點為根節點的孩子節點和/或根節點的兄弟節點的孩子節點時,在Hash散列表中進行Hash散列查找。
[0021]優選地,所述第一分割子模塊用于判斷Host是否滿足頂級域名為國家頂級域名且二級域名為類別符號;如果是,則將頂級域名和二級域名合并為一個子字符串,將二級域名之后部分從第一分隔符處進行分割得到子字符串;否則,將Host從第一分隔符處進行分割得到子字符串。
[0022]優選地,所述Path匹配規則表示為節點中包括特征匹配字符串的Path 二叉樹,所述Path匹配模塊包括:第二分割子模塊,用于根據第二分隔符對接收的URL的Path進行分割獲得Path的子字符串,按照在Path中從左到右的順序將Path的子字符串排序;
[0023]第二查找子模塊,用于在Path二叉樹中,根據分割所得Path的子字符串和子字符串的排序進行匹配查找;第二確定子模塊,用于將Path在Path 二叉樹中最后匹配的節點所攜帶的信息確定為URL對應的處理規則。
[0024]優選地,所述Path二叉樹的節點還包括位置序號;所述第二分割子模塊用于按照在Path中從左到右的順序將Path的子字符串編號使得子字符串具有對應的序號;所述第二查找子模塊用于當Path的子字符串和序號與Path 二叉樹中當前節點的特征匹配字符串和位置序號都匹配時,確定Path的子字符串和當前節點匹配;當Path的子字符串與當前節點匹配時,選擇當前節點的孩子節點進行匹配,當Path的子字符串與當前節點不匹配時,選擇當前節點的兄弟節點進行匹配。
[0025]優選地,所述第二查找子模塊還用于當Path的子字符串匹配的當前節點的孩子節點為空時,判斷當前節點是否具有攜帶的信息,如果具有攜帶的信息,則將當前節點作為Path在Path二叉樹中最后匹配的節點;如果不具有攜帶的信息,則將最后匹配的具有攜帶的信息的節點作為Path在Path二叉樹中最后匹配的節點;當Path的子字符串不匹配的當前節點的兄弟節點為空時,將最后匹配的具有攜帶的信息的節點作為Path