施例,接收客戶端的SYN數(shù)據(jù)包,并將該接收的SYN數(shù)據(jù)包分別通過(guò)至 少兩條鏈路發(fā)送給服務(wù)器;接收該服務(wù)器分別通過(guò)至少兩條鏈路返回的SYN+ACK數(shù)據(jù)包; 并將最快返回的SYN+ACK數(shù)據(jù)包發(fā)送給該客戶端,將該最快返回的SYN+ACK數(shù)據(jù)包對(duì)應(yīng)的 鏈路確定為初步目標(biāo)鏈路;接收該客戶端發(fā)送的ACK數(shù)據(jù)包,并將該接收的ACK數(shù)據(jù)包通過(guò) 該初步目標(biāo)鏈路發(fā)送給該服務(wù)器;接收該客戶端發(fā)送的業(yè)務(wù)數(shù)據(jù)包,并識(shí)別該業(yè)務(wù)數(shù)據(jù)包 對(duì)應(yīng)的應(yīng)用類(lèi)型;根據(jù)該業(yè)務(wù)數(shù)據(jù)包對(duì)應(yīng)的應(yīng)用類(lèi)型和該初步目標(biāo)鏈路,確定最終目標(biāo)鏈 路,將該業(yè)務(wù)數(shù)據(jù)包通過(guò)該確定的最終目標(biāo)鏈路發(fā)送給該服務(wù)器;即在該客戶端與該服務(wù) 器的第二次握手中,先確定該客戶端與該服務(wù)器的初步目標(biāo)鏈路,然后再根據(jù)該客戶端發(fā) 送的業(yè)務(wù)數(shù)據(jù)包的應(yīng)用類(lèi)型和初步目標(biāo)鏈路確定最終目標(biāo),將該業(yè)務(wù)數(shù)據(jù)包通過(guò)該確定的 最終目標(biāo)鏈路發(fā)送給該服務(wù)器,實(shí)現(xiàn)對(duì)業(yè)務(wù)數(shù)據(jù)包的引流,可更加靈活的對(duì)業(yè)務(wù)數(shù)據(jù)包進(jìn) 行引流,提高引流效率和網(wǎng)絡(luò)資源利用率。
[0096] 參照?qǐng)D5,圖5為本發(fā)明基于應(yīng)用類(lèi)型的數(shù)據(jù)引流方法中的根據(jù)該業(yè)務(wù)數(shù)據(jù)包對(duì) 應(yīng)的應(yīng)用類(lèi)型和該初步目標(biāo)鏈路,確定最終目標(biāo)鏈路,將該業(yè)務(wù)數(shù)據(jù)包通過(guò)該確定的最終 目標(biāo)鏈路發(fā)送給服務(wù)器的細(xì)化流程示意圖,詳述如下:
[0097]S51、根據(jù)該預(yù)設(shè)的應(yīng)用類(lèi)型與鏈路的映射關(guān)系,確定該業(yè)務(wù)數(shù)據(jù)包對(duì)應(yīng)的默認(rèn)傳 輸鏈路。
[0098] 預(yù)先設(shè)置應(yīng)用類(lèi)型與鏈路的映射關(guān)系,如將應(yīng)用類(lèi)型為web視頻應(yīng)用對(duì)應(yīng)的鏈路 設(shè)置為第一鏈路,將應(yīng)用類(lèi)型為web游戲應(yīng)用對(duì)應(yīng)的鏈路設(shè)置為第二鏈路。
[0099] 根據(jù)該業(yè)務(wù)數(shù)據(jù)包的應(yīng)用類(lèi)型遍歷該應(yīng)用類(lèi)型與鏈路的映射關(guān)系,查找到對(duì)應(yīng)的 鏈路,將該查找到的鏈路確定為該業(yè)務(wù)數(shù)據(jù)包對(duì)應(yīng)的默認(rèn)傳輸鏈路,如在一實(shí)施例中,該業(yè) 務(wù)數(shù)據(jù)包的應(yīng)用類(lèi)型為web視頻應(yīng)用,在應(yīng)用類(lèi)型與鏈路的映射關(guān)系中,查找到web視頻應(yīng) 用對(duì)應(yīng)的鏈路為第一鏈路,則確定該業(yè)務(wù)數(shù)據(jù)包對(duì)應(yīng)的默認(rèn)傳輸鏈路為第一鏈路。在另一 實(shí)施例中,該業(yè)務(wù)數(shù)據(jù)包的應(yīng)用類(lèi)型為web游戲應(yīng)用,在應(yīng)用類(lèi)型與鏈路的映射關(guān)系中,查 找到web游戲應(yīng)用對(duì)應(yīng)的鏈路為第二鏈路,則確定該業(yè)務(wù)數(shù)據(jù)包對(duì)應(yīng)的默認(rèn)傳輸鏈路為第 二鏈路。
[0100]S52、當(dāng)判斷出該業(yè)務(wù)數(shù)據(jù)包對(duì)應(yīng)的默認(rèn)傳輸鏈路與該初步目標(biāo)鏈路相同時(shí),將該 初步目標(biāo)鏈路確定為最終目標(biāo)鏈路,并將該業(yè)務(wù)數(shù)據(jù)包通過(guò)該最終目標(biāo)鏈路發(fā)送給該服務(wù) 器。
[0101] 在默認(rèn)傳輸鏈路與初步目標(biāo)鏈路相同時(shí),將該初步目標(biāo)鏈路確定為最終目標(biāo)鏈 路,并將該業(yè)務(wù)數(shù)據(jù)包通過(guò)該最終目標(biāo)鏈路發(fā)送給服務(wù)器,該業(yè)務(wù)數(shù)據(jù)包中的序列號(hào)和確 認(rèn)號(hào)都不需要修改,即,該發(fā)送給該服務(wù)器的業(yè)務(wù)數(shù)據(jù)包的序列號(hào)為cliid+l,確認(rèn)號(hào)為 srvid+l〇
[0102] 如在一實(shí)施例中,默認(rèn)傳輸鏈路為第一鏈路,初步目標(biāo)鏈路為第一鏈路,則將業(yè)務(wù) 數(shù)據(jù)包通過(guò)第一鏈路發(fā)送給該服務(wù)器,如圖6所示。
[0103]S53、當(dāng)判斷出所述業(yè)務(wù)數(shù)據(jù)包對(duì)應(yīng)的默認(rèn)傳輸鏈路與所述初步目標(biāo)鏈路不相同 時(shí),將該默認(rèn)傳輸鏈路確定為最終目標(biāo)鏈路,并生成一個(gè)ACK數(shù)據(jù)包;然后執(zhí)行步驟S54。
[0104] 在默認(rèn)傳輸鏈路與初步目標(biāo)鏈路不相同時(shí),將該默認(rèn)傳輸鏈路確定為最終目標(biāo)鏈 路,即需要通過(guò)該默認(rèn)傳輸鏈路將從該客戶端接收的業(yè)務(wù)數(shù)據(jù)包發(fā)送給該服務(wù)器,由于之 前未通過(guò)該默認(rèn)傳輸鏈路建立該客戶端與該服務(wù)器的第三次握手,因此,在該步驟中,需要 生成一個(gè)ACK數(shù)據(jù)包。在一實(shí)施例中,該默認(rèn)傳輸鏈路為第二鏈路,該初步目標(biāo)鏈路為第一 鏈路;該ACK數(shù)據(jù)包的序列號(hào)為cliid+Ι,即為該客戶端與該服務(wù)器通過(guò)該默認(rèn)傳輸鏈路進(jìn) 行第一握手時(shí)生成的序列號(hào)加1,該ACK數(shù)據(jù)包的確認(rèn)號(hào)為Srvid2+1,即為該服務(wù)器與該客 戶端通過(guò)該默認(rèn)傳輸鏈路進(jìn)行第二次握手時(shí)生成的序列號(hào)加1。
[0105] 在該步驟中,還生成一個(gè)RST數(shù)據(jù)包,并將該RST數(shù)據(jù)包通過(guò)初步目標(biāo)鏈路發(fā)送給 該服務(wù)器,以切斷初步目標(biāo)鏈路上的連接。該RST數(shù)據(jù)包的序列號(hào)為cliid+Ι,即為該客戶 端與該服務(wù)器通過(guò)該初步目標(biāo)鏈路進(jìn)行第一握手時(shí)生成的序列號(hào)加1,該RST數(shù)據(jù)包的確 認(rèn)號(hào)為srvidl+Ι,即為該服務(wù)器與該客戶端通過(guò)該初步目標(biāo)鏈路進(jìn)行第二握手時(shí)生成的序 列號(hào)加1。
[0106] S54、將該生成的ACK數(shù)據(jù)包通過(guò)該最終目標(biāo)鏈路發(fā)送給該服務(wù)器,然后執(zhí)行步驟 S55〇
[0107] 將該ACK數(shù)據(jù)包通過(guò)該最終目標(biāo)鏈路發(fā)送給該服務(wù)器,實(shí)現(xiàn)該客戶端與該服務(wù)器 在最終目標(biāo)鏈路上的第三次握手。在一實(shí)施例中,將該生成的ACK數(shù)據(jù)包通過(guò)第二鏈路發(fā) 送給該服務(wù)器,如圖7所示。
[0108] S55、根據(jù)該最終目標(biāo)鏈路的序列號(hào),修改該業(yè)務(wù)數(shù)據(jù)包的確認(rèn)號(hào),生成新業(yè)務(wù)數(shù) 據(jù)包,然后執(zhí)行步驟S56。
[0109] 在該步驟中,修改業(yè)務(wù)數(shù)據(jù)包的確認(rèn)號(hào),以生成新業(yè)務(wù)數(shù)據(jù)包,新業(yè)務(wù)數(shù)據(jù)包的確 認(rèn)號(hào)A可通過(guò)以下公式計(jì)算得到,A=srvid2+X-srvidl,其中X是業(yè)務(wù)數(shù)據(jù)包中的確認(rèn)號(hào), Srvid2是最終目標(biāo)鏈路的序列號(hào),S卩服務(wù)器與客戶端通過(guò)最終目標(biāo)鏈路進(jìn)行第二次握手時(shí) 產(chǎn)生的序列號(hào),srvidl是初步目標(biāo)鏈路的序列號(hào),S卩服務(wù)器與客戶端通過(guò)初步目標(biāo)鏈路進(jìn) 行第二次握手時(shí)產(chǎn)生的序列號(hào)。
[0110] 當(dāng)接收的業(yè)務(wù)數(shù)據(jù)包中的確認(rèn)號(hào)X為srvidl+l時(shí),該生成的新業(yè)務(wù)數(shù)據(jù)包的確認(rèn) 號(hào)A為srvid2+l。
[0111] S56、將該新業(yè)務(wù)數(shù)據(jù)包通過(guò)該最終目標(biāo)鏈路發(fā)送給該服務(wù)器。
[0112] 在一實(shí)施例中,該最終目標(biāo)鏈路為第二鏈路,則在該步驟中,將該新業(yè)務(wù)數(shù)據(jù)包通 過(guò)第二鏈路發(fā)送給該服務(wù)器,如圖8所示。
[0113] 參照?qǐng)D9,圖9為本發(fā)明基于應(yīng)用類(lèi)型的數(shù)據(jù)引流方法的第二實(shí)施例。
[0114] 基于上述基于應(yīng)用類(lèi)型的數(shù)據(jù)引流方法的第一實(shí)施例,在步驟S50之后,該方法 還包括:
[0115]S60、接收該服務(wù)器通過(guò)該最終目標(biāo)鏈路返回的應(yīng)答數(shù)據(jù)包。
[0116] 該服務(wù)器在接收到該客戶端通過(guò)該最終目標(biāo)鏈路發(fā)送的業(yè)務(wù)數(shù)據(jù)包后,生成回 包,即應(yīng)答數(shù)據(jù)包,該應(yīng)答數(shù)據(jù)包的序列號(hào)為X,確認(rèn)號(hào)為cliid+datalen。
[0117] S70、在該最終目標(biāo)鏈路與該初步目標(biāo)鏈路不相同時(shí),根據(jù)該最終目標(biāo)鏈路的序列 號(hào)、初步目標(biāo)鏈路的序列號(hào),修改該應(yīng)答數(shù)據(jù)包的序列號(hào),生成新應(yīng)答數(shù)據(jù)包;將該新應(yīng)答 數(shù)據(jù)包發(fā)送給該客戶端。
[0118] 在該步驟中,修改應(yīng)答數(shù)據(jù)包的序列號(hào),以生成新應(yīng)答數(shù)據(jù)包,該新應(yīng)答數(shù)據(jù)包的 序列號(hào)S可通過(guò)以下公式計(jì)算得到,S=srvidl+x-srvid2,其中,X表示應(yīng)答數(shù)據(jù)包中的序 列號(hào),Srvid2是最終目標(biāo)鏈路的序列號(hào),即該服務(wù)器與該客戶端通過(guò)該最終目標(biāo)鏈路進(jìn)行 第二次握手時(shí)產(chǎn)生的序列號(hào),srvidl是初步目標(biāo)鏈路的序列號(hào),即該服務(wù)器與該客戶端通 過(guò)初步目標(biāo)鏈路進(jìn)行第二次握手時(shí)產(chǎn)生的序列號(hào)。
[0119] 將該新應(yīng)答數(shù)據(jù)包發(fā)送給客戶端。
[0120] S80、在該最終目標(biāo)鏈路與該初步目標(biāo)鏈路相同時(shí),將該應(yīng)答數(shù)據(jù)包發(fā)送給該客戶 端。
[0121] 在該步驟中,直接將該應(yīng)答數(shù)據(jù)包發(fā)送給該客戶端,而不需要修改該應(yīng)答數(shù)據(jù)包 中的序列號(hào)和確認(rèn)號(hào)。
[0122] 參照?qǐng)D10,圖10為本發(fā)明基于應(yīng)用類(lèi)型的數(shù)據(jù)引流裝置的第一實(shí)施例的結(jié)構(gòu)示 意圖,該裝置連接在客戶端與服務(wù)器之間,該裝置包括:
[0123] 第一收發(fā)模塊10,用于接收客戶端發(fā)送的SYN數(shù)據(jù)包,并將該接收的SYN數(shù)據(jù)包分 別通過(guò)至少兩條鏈路發(fā)送給服務(wù)器;
[0124] 第二收發(fā)模塊20,用于接收該服務(wù)器分別通過(guò)至少兩條鏈路返回的SYN+ACK數(shù)據(jù) 包;并將最快返回的SYN+ACK數(shù)據(jù)包發(fā)送給該客戶端;
[0125] 第一確定模塊30,用于將該最快返回的SYN+ACK數(shù)據(jù)包對(duì)應(yīng)的鏈路確定為初步目 標(biāo)鏈路;
[0126] 第三收發(fā)模塊40,用于接收客戶端發(fā)送的ACK數(shù)據(jù)包,并將該接收的ACK數(shù)據(jù)包通 過(guò)該初步目標(biāo)鏈路發(fā)送給該服務(wù)器;及接收該客戶端發(fā)送業(yè)務(wù)數(shù)據(jù)包,并識(shí)別該業(yè)務(wù)數(shù)據(jù) 包對(duì)應(yīng)的應(yīng)用類(lèi)型;
[0127] 第二確定模塊50,用于根據(jù)該業(yè)務(wù)數(shù)據(jù)包對(duì)應(yīng)的應(yīng)用類(lèi)型和該初步目標(biāo)鏈路,確 定最終目標(biāo)鏈路;
[0128] 第四收發(fā)模塊60,用于將該業(yè)務(wù)數(shù)據(jù)包通過(guò)確定的最終目標(biāo)鏈路發(fā)送給該服務(wù) 器。
[0129] 該SYN數(shù)據(jù)包是客戶端待發(fā)送給服務(wù)器的,用于請(qǐng)求與服務(wù)器建立連接,該SYN數(shù) 據(jù)包的序列號(hào)是客戶端隨機(jī)產(chǎn)生的一個(gè)數(shù),標(biāo)記為cliid,該SYN數(shù)據(jù)包的確認(rèn)號(hào)為0。
[0130] 該第一收發(fā)模塊10將該SYN數(shù)據(jù)包分別通過(guò)至少兩條鏈路發(fā)送給服務(wù)器,在一實(shí) 施例,如圖2所示,將該SYN數(shù)據(jù)包分別通過(guò)第一鏈路和第二鏈路發(fā)送給該服務(wù)器;在另一 實(shí)施例,將該SYN數(shù)據(jù)包分別通過(guò)第一鏈路、第二鏈路和第三鏈路發(fā)送給該服務(wù)器。
[0131] 在一實(shí)施例中,該第一收發(fā)模塊10在將SYN數(shù)據(jù)包通過(guò)第一鏈路發(fā)送給該服務(wù)器 時(shí),先將該SYN數(shù)據(jù)包的源IP地址換成第一鏈路的IP地址,然后再該SYN數(shù)據(jù)包通過(guò)第一 鏈路發(fā)送給該服務(wù)器;在將SYN數(shù)據(jù)包通過(guò)第二鏈路發(fā)送給該服務(wù)器時(shí),先將該SYN數(shù)據(jù)包 的源IP地址換成第二鏈路的IP地址,然后再將該SYN數(shù)據(jù)包通過(guò)第二鏈路發(fā)送給該服務(wù) 器;在將SYN數(shù)據(jù)包通過(guò)第三鏈路、第四鏈路等發(fā)送給該服務(wù)器時(shí)