本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,特別是涉及一種傳輸控制協(xié)議tcp連接的關(guān)閉方法及裝置。
背景技術(shù):
當(dāng)今網(wǎng)絡(luò)上的下載服務(wù),從傳輸層而言使用的幾乎都是tcp(transmissioncontrolprotocol,傳輸控制協(xié)議)協(xié)議。對(duì)tcp協(xié)議而言,當(dāng)一個(gè)tcp連接關(guān)閉時(shí),一個(gè)正常的、完整的tcp連接的關(guān)閉過(guò)程為:服務(wù)器端發(fā)送一個(gè)包含所有數(shù)據(jù)已全部發(fā)送完成信息的fin/ack(finish/acknowledgement,完成/確認(rèn)字符)包;客戶端接收到這個(gè)包,將立即回復(fù)一個(gè)ack包,表明收到了服務(wù)器端發(fā)送的信息;當(dāng)客戶端處理完接收到的數(shù)據(jù)以及確認(rèn)自身沒(méi)有數(shù)據(jù)可以發(fā)送給服務(wù)器端之后,將向服務(wù)器端發(fā)送一個(gè)fin/ack包;服務(wù)器端收到客戶端發(fā)送的fin/ack包以后,回復(fù)一個(gè)ack包,同時(shí)在等待兩倍的msl(maximumsegmentlifetime,tcp包在網(wǎng)絡(luò)上的最大生存時(shí)間)時(shí)間之后,完全關(guān)閉tcp連接;而客戶端收到服務(wù)器端最后的ack之后,就立刻tcp關(guān)閉連接。
但是在實(shí)際應(yīng)用中,對(duì)于服務(wù)器端主動(dòng)關(guān)閉連接的絕大多數(shù)情況,存在以下問(wèn)題:即使是正常的連接關(guān)閉,服務(wù)器端在發(fā)送完所有的關(guān)閉連接的包之后,進(jìn)入time-wait(時(shí)間-等待)狀態(tài)時(shí),依然會(huì)占用資源,等待一段時(shí)間(2msl)之后,才釋放這些資源;在大多數(shù)情況下,當(dāng)服務(wù)器端收到客戶端發(fā)送的ack包,進(jìn)入fin-wait-2(結(jié)束-等待-2)狀態(tài)后,經(jīng)歷了很久也沒(méi)有收到客戶端發(fā)來(lái)的fin/ack包,導(dǎo)致服務(wù)器端的等待時(shí)間會(huì)更長(zhǎng),從而占用了資源??梢?jiàn),以上兩種情況,現(xiàn)有的tcp連接的關(guān)閉方式,會(huì)導(dǎo)致服務(wù)器等待的時(shí)間較長(zhǎng),進(jìn)而加大了對(duì)服務(wù)器維護(hù)tcp連接的狀態(tài)所需的網(wǎng)絡(luò)資源的占用。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例的目的在于提供一種傳輸控制協(xié)議tcp連接的關(guān)閉方法及裝置,以實(shí)現(xiàn)減少網(wǎng)絡(luò)資源的占用。具體技術(shù)方案如下:
為達(dá)到上述目的,本發(fā)明實(shí)施例提供了一種傳輸控制協(xié)議tcp連接的關(guān)閉方法,應(yīng)用于服務(wù)器,方法包括:
根據(jù)客戶端發(fā)送的目標(biāo)數(shù)據(jù)請(qǐng)求包,向所述客戶端發(fā)送所述目標(biāo)數(shù)據(jù)請(qǐng)求包對(duì)應(yīng)的目標(biāo)數(shù)據(jù)包,其中,所述目標(biāo)數(shù)據(jù)包為包含psh標(biāo)志的數(shù)據(jù)包;
接收所述客戶端在接收到最后一個(gè)目標(biāo)數(shù)據(jù)包之后所發(fā)送的ack包;
根據(jù)接收到的所述ack包,向客戶端發(fā)送至少一個(gè)rst包;
關(guān)閉當(dāng)前與所述客戶端相連的服務(wù)器端tcp連接。
較佳的,所述服務(wù)器為:
提供下載服務(wù)的服務(wù)器。
為達(dá)到上述目的,本發(fā)明實(shí)施例提供了一種傳輸控制協(xié)議tcp連接的關(guān)閉方法,應(yīng)用于客戶端,方法包括:
根據(jù)向服務(wù)器發(fā)送的目標(biāo)數(shù)據(jù)請(qǐng)求包,接收所述服務(wù)器發(fā)送的目標(biāo)數(shù)據(jù)包,其中,所述目標(biāo)數(shù)據(jù)包為包含psh標(biāo)志的數(shù)據(jù)包;
在接收到最后一個(gè)目標(biāo)數(shù)據(jù)包之后,向所述服務(wù)器發(fā)送ack包;
接收所述服務(wù)器根據(jù)所述ack包發(fā)送的至少一個(gè)rst包;
根據(jù)所述至少一個(gè)rst包,關(guān)閉當(dāng)前與所述服務(wù)器相連的客戶端tcp連接。
較佳的,所述根據(jù)所述至少一個(gè)rst包,關(guān)閉當(dāng)前與所述服務(wù)器相連的客戶端tcp連接,包括:
針對(duì)所述至少一個(gè)rst包中的每一個(gè)rst包,分別判斷所述rst包的前一個(gè)數(shù)據(jù)包是否包含所述psh標(biāo)志;
如果包含,將tcp接收緩沖區(qū)的所有數(shù)據(jù)發(fā)送給應(yīng)用層,關(guān)閉當(dāng)前與所述服務(wù)器相連的客戶端tcp連接;
如果不包含,關(guān)閉當(dāng)前與所述服務(wù)器相連的客戶端tcp連接。
較佳的,所述方法還包括:
在向所述服務(wù)器發(fā)送ack包后,預(yù)設(shè)時(shí)長(zhǎng)內(nèi)未接收到所述服務(wù)器發(fā)送的所述至少一個(gè)rst包中的任一個(gè)rst包的情況下,關(guān)閉當(dāng)前與所述服務(wù)器相連的客戶端tcp連接。
為達(dá)到上述目的,本發(fā)明實(shí)施例提供了一種傳輸控制協(xié)議tcp連接的關(guān)閉裝置,應(yīng)用于服務(wù)器,裝置包括:
第一發(fā)送模塊,用于根據(jù)客戶端發(fā)送的目標(biāo)數(shù)據(jù)請(qǐng)求包,向所述客戶端發(fā)送所述目標(biāo)數(shù)據(jù)請(qǐng)求包對(duì)應(yīng)的目標(biāo)數(shù)據(jù)包,其中,所述目標(biāo)數(shù)據(jù)包為包含psh標(biāo)志的數(shù)據(jù)包;
第一接收模塊,用于接收所述客戶端在接收到最后一個(gè)目標(biāo)數(shù)據(jù)包之后所發(fā)送的ack包;
第二發(fā)送模塊,用于根據(jù)接收到的所述ack包,向客戶端發(fā)送至少一個(gè)rst包;
第一關(guān)閉模塊,用于關(guān)閉當(dāng)前與所述客戶端相連的服務(wù)器端tcp連接。
較佳的,所述服務(wù)器為:
提供下載服務(wù)的服務(wù)器。
為達(dá)到上述目的,本發(fā)明實(shí)施例提供了一種傳輸控制協(xié)議tcp連接的關(guān)閉裝置,應(yīng)用于客戶端,裝置包括:
第二接收模塊,用于根據(jù)向服務(wù)器發(fā)送的目標(biāo)數(shù)據(jù)請(qǐng)求包,接收所述服務(wù)器發(fā)送的目標(biāo)數(shù)據(jù)包,其中,所述目標(biāo)數(shù)據(jù)包為包含psh標(biāo)志的數(shù)據(jù)包;
第三發(fā)送模塊,用于在接收到最后一個(gè)目標(biāo)數(shù)據(jù)包之后,向所述服務(wù)器發(fā)送ack包;
第三接收模塊,用于接收所述服務(wù)器根據(jù)所述ack包發(fā)送的至少一個(gè)rst包;
第二關(guān)閉模塊,用于根據(jù)所述至少一個(gè)rst包,關(guān)閉當(dāng)前與所述服務(wù)器相連的客戶端tcp連接。
較佳的,所述第二關(guān)閉模塊,具體用于:
針對(duì)所述至少一個(gè)rst包中的每一個(gè)rst包,分別判斷所述rst包的前一個(gè)數(shù)據(jù)包是否包含所述psh標(biāo)志;
如果包含,將tcp接收緩沖區(qū)的所有數(shù)據(jù)發(fā)送給應(yīng)用層,關(guān)閉當(dāng)前與所述服務(wù)器相連的客戶端tcp連接;
如果不包含,關(guān)閉當(dāng)前與所述服務(wù)器相連的客戶端tcp連接。
較佳的,所述裝置還包括:
第三關(guān)閉模塊,用于在向所述服務(wù)器發(fā)送ack包后,預(yù)設(shè)時(shí)長(zhǎng)內(nèi)未接收到所述服務(wù)器發(fā)送的所述至少一個(gè)rst包中的任一個(gè)rst包的情況下,關(guān)閉當(dāng)前與所述服務(wù)器相連的客戶端tcp連接。
本發(fā)明實(shí)施例提供的一種傳輸控制協(xié)議tcp連接的關(guān)閉方法及裝置,服務(wù)器可以在向客戶端發(fā)送至少一個(gè)rst包后,直接關(guān)閉自身與客戶端相連的服務(wù)器端tcp連接,并且客戶端可以根據(jù)至少一個(gè)rst包,關(guān)閉自身與服務(wù)器相連的客戶端tcp連接,而不需要進(jìn)行任何的等待,使得tcp連接可以及時(shí)關(guān)閉,釋放維護(hù)tcp連接所需的網(wǎng)絡(luò)資源,從而減少了網(wǎng)絡(luò)資源的占用。當(dāng)然,實(shí)施本發(fā)明的任一產(chǎn)品或方法必不一定需要同時(shí)達(dá)到以上所述的所有優(yōu)點(diǎn)。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例提供的傳輸控制協(xié)議tcp連接的關(guān)閉方法的一種流程示意圖;
圖2為本發(fā)明實(shí)施例提供的傳輸控制協(xié)議tcp連接的關(guān)閉方法的另一種流程示意圖;
圖3為本發(fā)明實(shí)施例提供的一種tcp連接的關(guān)閉示意圖;
圖4為本發(fā)明實(shí)施例提供的傳輸控制協(xié)議tcp連接的關(guān)閉方法的再一種流程示意圖;
圖5為本發(fā)明實(shí)施例提供的傳輸控制協(xié)議tcp連接的關(guān)閉裝置的一種結(jié)構(gòu)示意圖;
圖6為本發(fā)明實(shí)施例提供的傳輸控制協(xié)議tcp連接的關(guān)閉裝置的另一種結(jié)構(gòu)示意圖;
圖7為本發(fā)明實(shí)施例提供的傳輸控制協(xié)議tcp連接的關(guān)閉裝置的再一種結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
下面首先對(duì)本發(fā)明實(shí)施例提供的一種傳輸控制協(xié)議tcp連接的關(guān)閉方法進(jìn)行詳細(xì)說(shuō)明。
參見(jiàn)圖1,圖1為本發(fā)明實(shí)施例提供的傳輸控制協(xié)議tcp連接的關(guān)閉方法的一種流程示意圖,應(yīng)用于服務(wù)器,可以包括如下步驟:
s101,根據(jù)客戶端發(fā)送的目標(biāo)數(shù)據(jù)請(qǐng)求包,向所述客戶端發(fā)送所述目標(biāo)數(shù)據(jù)請(qǐng)求包對(duì)應(yīng)的目標(biāo)數(shù)據(jù)包,其中,所述目標(biāo)數(shù)據(jù)包為包含psh標(biāo)志的數(shù)據(jù)包;
具體的,在實(shí)際應(yīng)用中,服務(wù)器可以為:提供下載服務(wù)的服務(wù)器,例如視頻網(wǎng)站的服務(wù)器等。
具體的,針對(duì)客戶端請(qǐng)求的目標(biāo)數(shù)據(jù),在客戶端發(fā)送給服務(wù)器包含客戶端相應(yīng)標(biāo)識(shí)、且用于請(qǐng)求目標(biāo)數(shù)據(jù)的目標(biāo)數(shù)據(jù)請(qǐng)求包a之后,服務(wù)器接收到該目標(biāo)數(shù)據(jù)請(qǐng)求包a,從而向該客戶端發(fā)送a對(duì)應(yīng)的目標(biāo)數(shù)據(jù)包,其中,目標(biāo)數(shù)據(jù)包均為包含psh(push,推送比特)標(biāo)志的數(shù)據(jù)包。
具體的,psh是tcp報(bào)頭中的一個(gè)標(biāo)志,服務(wù)器在發(fā)送數(shù)據(jù)的時(shí)候可以設(shè)置這個(gè)標(biāo)志。當(dāng)服務(wù)器與客戶端進(jìn)行交互式通信并傳輸數(shù)據(jù)時(shí),可以在數(shù)據(jù)包中添加psh標(biāo)志。這時(shí),服務(wù)器端將推送比特psh置為1,并立即創(chuàng)建一個(gè)報(bào)文段發(fā)送出去??蛻舳私邮盏酵扑捅忍刂?的報(bào)文段后,就盡快地(即“推送向前”)交付給接收應(yīng)用進(jìn)程,而不再等到整個(gè)tcp接收緩沖區(qū)都填滿后在向上交互。另外,為目標(biāo)數(shù)據(jù)包添加puh標(biāo)志為現(xiàn)有技術(shù),本發(fā)明實(shí)施例在此不對(duì)其進(jìn)行贅述。
s102,接收所述客戶端在接收到最后一個(gè)目標(biāo)數(shù)據(jù)包之后所發(fā)送的ack包;
具體的,客戶端在接收到服務(wù)器發(fā)送的最后一個(gè)帶psh標(biāo)志的目標(biāo)數(shù)據(jù)包之后,會(huì)向服務(wù)器返回一個(gè)ack包(表明接收到了服務(wù)器發(fā)送的這些目標(biāo)數(shù)據(jù)包),進(jìn)而服務(wù)器可以接收到返回的這個(gè)ack包,其中,ack為確認(rèn)字符,表示服務(wù)器發(fā)來(lái)的數(shù)據(jù)客戶端已確認(rèn)接收無(wú)誤。服務(wù)器向客戶端發(fā)送最后一個(gè)目標(biāo)數(shù)據(jù)包之后,能夠收到客戶端返回的一個(gè)ack包,為tcp協(xié)議的一種現(xiàn)有策略。
s103,根據(jù)接收到的所述ack包,向客戶端發(fā)送至少一個(gè)rst包;
具體的,在接收到客戶端發(fā)送的該ack包后,確認(rèn)客戶端已接收完所有的目標(biāo)數(shù)據(jù)包,此時(shí)會(huì)直接向客戶端發(fā)送至少一個(gè)rst(reset,重置)包。在實(shí)際應(yīng)用中,可以一次性發(fā)送一個(gè)或多個(gè)rst包以確保發(fā)送端可以接收到至少一個(gè)rst包,防止rst包在傳輸過(guò)程中發(fā)生丟失,進(jìn)而提高容錯(cuò)性。在實(shí)際應(yīng)用中,可以對(duì)服務(wù)器端進(jìn)行相應(yīng)修改,以實(shí)現(xiàn)可以在收到ack包后向客戶端發(fā)送至少一個(gè)rst包的目的。其中,在服務(wù)器端進(jìn)行修改可以為現(xiàn)有技術(shù),本發(fā)明實(shí)施例在此不對(duì)其進(jìn)行贅述。
s104,關(guān)閉當(dāng)前與所述客戶端相連的服務(wù)器端tcp連接。
具體的,在實(shí)際應(yīng)用中,服務(wù)器在收到ack包后直接向客戶端發(fā)送一個(gè)rst包,同時(shí)關(guān)閉當(dāng)前與客戶端建立的服務(wù)器端tcp連接,從而釋放了服務(wù)器端tcp連接所占用的資源。
可見(jiàn),應(yīng)用本發(fā)明實(shí)施例,服務(wù)器可以在向客戶端發(fā)送至少一個(gè)rst包后,直接關(guān)閉自身與客戶端相連的服務(wù)器端tcp連接,并且客戶端可以根據(jù)至少一個(gè)rst包,關(guān)閉自身與服務(wù)器相連的客戶端tcp連接,而不需要進(jìn)行任何的等待,使得tcp連接可以及時(shí)關(guān)閉,釋放維護(hù)tcp連接所需的網(wǎng)絡(luò)資源,從而減少了網(wǎng)絡(luò)資源的占用。
參見(jiàn)圖2,圖2為本發(fā)明實(shí)施例提供的傳輸控制協(xié)議tcp連接的關(guān)閉方法的另一種流程示意圖,應(yīng)用于客戶端,可以包括如下步驟:
s201,根據(jù)向服務(wù)器發(fā)送的目標(biāo)數(shù)據(jù)請(qǐng)求包,接收所述服務(wù)器發(fā)送的目標(biāo)數(shù)據(jù)包,其中,所述目標(biāo)數(shù)據(jù)包為包含psh標(biāo)志的數(shù)據(jù)包;
s202,在接收到最后一個(gè)目標(biāo)數(shù)據(jù)包之后,向所述服務(wù)器發(fā)送ack包;
s203,接收所述服務(wù)器根據(jù)所述ack包發(fā)送的至少一個(gè)rst包;
s204,根據(jù)所述至少一個(gè)rst包,關(guān)閉當(dāng)前與所述服務(wù)器相連的客戶端tcp連接。
具體的,所述根據(jù)所述至少一個(gè)rst包,關(guān)閉當(dāng)前與所述服務(wù)器相連的客戶端tcp連接,可以針對(duì)所述至少一個(gè)rst包中的每一個(gè)rst包,分別判斷所述rst包的前一個(gè)數(shù)據(jù)包是否包含所述psh標(biāo)志;
如果包含,將tcp接收緩沖區(qū)的所有數(shù)據(jù)發(fā)送給應(yīng)用層,關(guān)閉當(dāng)前與所述服務(wù)器相連的客戶端tcp連接;
如果不包含,關(guān)閉當(dāng)前與所述服務(wù)器相連的客戶端tcp連接。
具體的,在實(shí)際應(yīng)用中,可以利用現(xiàn)有技術(shù)在tcp協(xié)議棧進(jìn)行判斷選項(xiàng)的配置等等,以使客戶端收到rst包后,判斷rst包的前一個(gè)數(shù)據(jù)包是否包含所述psh標(biāo)志(客戶端往往還與其他服務(wù)器進(jìn)行連接傳輸數(shù)據(jù),所以需要判斷rst包的前一個(gè)數(shù)據(jù)包是否為本服務(wù)器發(fā)送的目標(biāo)數(shù)據(jù)包),目的是將用來(lái)關(guān)閉連接的rst包和發(fā)生錯(cuò)誤重置的rst包區(qū)別開(kāi)來(lái)。其中,關(guān)閉了當(dāng)前與服務(wù)器相連的客戶端tcp連接,即代表釋放了客戶端tcp連接所占用的資源。
示例性的,圖3為本發(fā)明實(shí)施例提供的一種tcp連接的關(guān)閉示意圖。如圖3所示,最后一個(gè)數(shù)據(jù)包(psh)為最后一個(gè)包含psh標(biāo)志的數(shù)據(jù)包,即為最后一個(gè)包含psh標(biāo)志的目標(biāo)數(shù)據(jù)包,ack包為攜帶ack確認(rèn)字符的包,表示服務(wù)器發(fā)來(lái)的數(shù)據(jù)客戶端已確認(rèn)接收無(wú)誤。服務(wù)器端在發(fā)送rst包后關(guān)閉服務(wù)器端tcp連接,此時(shí)服務(wù)器端tcp連接處于關(guān)閉狀態(tài)??蛻舳嗽诮邮盏街辽僖粋€(gè)rst包之前,客戶端tcp連接處于established狀態(tài)(建立狀態(tài)),在接收到rst包后,客戶端tcp連接處于等待關(guān)閉的狀態(tài),然后客戶端查看之前的一個(gè)數(shù)據(jù)包是否包含psh標(biāo)志,如果包含,通知并等待應(yīng)用層接收tcp接收緩沖區(qū)的數(shù)據(jù),否則直接關(guān)閉客戶端tcp連接,客戶端tcp連接進(jìn)而會(huì)直接轉(zhuǎn)到關(guān)閉狀態(tài)。
可見(jiàn),應(yīng)用本發(fā)明實(shí)施例,服務(wù)器可以在向客戶端發(fā)送至少一個(gè)rst包后,直接關(guān)閉自身與客戶端相連的服務(wù)器端tcp連接,并且客戶端可以根據(jù)至少一個(gè)rst包,關(guān)閉自身與服務(wù)器相連的客戶端tcp連接,而不需要進(jìn)行任何的等待,使得tcp連接可以及時(shí)關(guān)閉,釋放維護(hù)tcp連接所需的網(wǎng)絡(luò)資源,從而減少了網(wǎng)絡(luò)資源的占用。
參見(jiàn)圖4,圖4為本發(fā)明實(shí)施例提供的傳輸控制協(xié)議tcp連接的關(guān)閉方法的再一種流程示意圖,本發(fā)明圖4實(shí)施例在圖2所示實(shí)施例的基礎(chǔ)上,增加步驟s205:在向所述服務(wù)器發(fā)送ack包后,預(yù)設(shè)時(shí)長(zhǎng)內(nèi)未接收到所述服務(wù)器發(fā)送的所述至少一個(gè)rst包中的任一個(gè)rst包的情況下,關(guān)閉當(dāng)前與所述服務(wù)器相連的客戶端tcp連接。
具體的,在實(shí)際應(yīng)用中,在向服務(wù)器發(fā)送ack包后,在預(yù)設(shè)時(shí)長(zhǎng)內(nèi)即使沒(méi)有任何一個(gè)rst包到達(dá)客戶端,tcp協(xié)議的現(xiàn)有機(jī)制也可以保證客戶端一定會(huì)關(guān)閉當(dāng)前與服務(wù)器相連的客戶端tcp連接。其中,預(yù)設(shè)時(shí)長(zhǎng)可以根據(jù)服務(wù)器和客戶端的實(shí)際配置等情況來(lái)進(jìn)行設(shè)置,具體以能夠?qū)崿F(xiàn)客戶端在未接收到服務(wù)器發(fā)送的任一個(gè)rst包的情況下,關(guān)閉當(dāng)前與服務(wù)器相連的客戶端tcp連接為準(zhǔn)。
可見(jiàn),應(yīng)用本發(fā)明實(shí)施例,服務(wù)器可以在向客戶端發(fā)送至少一個(gè)rst包后,直接關(guān)閉自身與客戶端相連的服務(wù)器端tcp連接,并且客戶端可以根據(jù)至少一個(gè)rst包,關(guān)閉自身與服務(wù)器相連的客戶端tcp連接,而不需要進(jìn)行任何的等待,使得tcp連接可以及時(shí)關(guān)閉,釋放維護(hù)tcp連接所需的網(wǎng)絡(luò)資源,從而減少了網(wǎng)絡(luò)資源的占用。進(jìn)一步的,即使在客戶端沒(méi)有接收到任一個(gè)rst包的情況下,也能夠保證在預(yù)設(shè)時(shí)長(zhǎng)后一定可以關(guān)閉當(dāng)前與服務(wù)器相連的客戶端tcp連接,進(jìn)而保證可以釋放資源,減少網(wǎng)絡(luò)資源的占用。
參見(jiàn)圖5,圖5為本發(fā)明實(shí)施例提供的傳輸控制協(xié)議tcp連接的關(guān)閉裝置的一種結(jié)構(gòu)示意圖,應(yīng)用于服務(wù)器,與圖1所示的流程相對(duì)應(yīng),該關(guān)閉裝置包括:第一發(fā)送模塊501、第一接收模塊502、第二發(fā)送模塊503、第一關(guān)閉模塊504。
第一發(fā)送模塊501,用于根據(jù)客戶端發(fā)送的目標(biāo)數(shù)據(jù)請(qǐng)求包,向所述客戶端發(fā)送所述目標(biāo)數(shù)據(jù)請(qǐng)求包對(duì)應(yīng)的目標(biāo)數(shù)據(jù)包,其中,所述目標(biāo)數(shù)據(jù)包為包含psh標(biāo)志的數(shù)據(jù)包;
第一接收模塊502,用于接收所述客戶端在接收到最后一個(gè)目標(biāo)數(shù)據(jù)包之后所發(fā)送的ack包;
第二發(fā)送模塊503,用于根據(jù)接收到的所述ack包,向客戶端發(fā)送至少一個(gè)rst包;
第一關(guān)閉模塊504,用于關(guān)閉當(dāng)前與所述客戶端相連的服務(wù)器端tcp連接。
具體的,所述服務(wù)器可以為:提供下載服務(wù)的服務(wù)器。
可見(jiàn),應(yīng)用本發(fā)明實(shí)施例,服務(wù)器可以在向客戶端發(fā)送至少一個(gè)rst包后,直接關(guān)閉自身與客戶端相連的服務(wù)器端tcp連接,并且客戶端可以根據(jù)至少一個(gè)rst包,關(guān)閉自身與服務(wù)器相連的客戶端tcp連接,而不需要進(jìn)行任何的等待,使得tcp連接可以及時(shí)關(guān)閉,釋放維護(hù)tcp連接所需的網(wǎng)絡(luò)資源,從而減少了網(wǎng)絡(luò)資源的占用。
參見(jiàn)圖6,圖6為本發(fā)明實(shí)施例提供的傳輸控制協(xié)議tcp連接的關(guān)閉裝置的另一種結(jié)構(gòu)示意圖,應(yīng)用于客戶端,與圖2所示的流程相對(duì)應(yīng),該關(guān)閉裝置可以包括:第二接收模塊601、第三發(fā)送模塊602、第三接收模塊603、第二關(guān)閉模塊604。
第二接收模塊601,用于根據(jù)向服務(wù)器發(fā)送的目標(biāo)數(shù)據(jù)請(qǐng)求包,接收所述服務(wù)器發(fā)送的目標(biāo)數(shù)據(jù)包,其中,所述目標(biāo)數(shù)據(jù)包為包含psh標(biāo)志的數(shù)據(jù)包;
第三發(fā)送模塊602,用于在接收到最后一個(gè)目標(biāo)數(shù)據(jù)包之后,向所述服務(wù)器發(fā)送ack包;
第三接收模塊603,用于接收所述服務(wù)器根據(jù)所述ack包發(fā)送的至少一個(gè)rst包;
第二關(guān)閉模塊604,用于根據(jù)所述至少一個(gè)rst包,關(guān)閉當(dāng)前與所述服務(wù)器相連的客戶端tcp連接。
具體的,所述第二關(guān)閉模塊,具體用于:
針對(duì)所述至少一個(gè)rst包中的每一個(gè)rst包,分別判斷所述rst包的前一個(gè)數(shù)據(jù)包是否包含所述psh標(biāo)志;
如果包含,將tcp接收緩沖區(qū)的所有數(shù)據(jù)發(fā)送給應(yīng)用層,關(guān)閉當(dāng)前與所述服務(wù)器相連的客戶端tcp連接;
如果不包含,關(guān)閉當(dāng)前與所述服務(wù)器相連的客戶端tcp連接。
可見(jiàn),應(yīng)用本發(fā)明實(shí)施例,服務(wù)器可以在向客戶端發(fā)送至少一個(gè)rst包后,直接關(guān)閉自身與客戶端相連的服務(wù)器端tcp連接,并且客戶端可以根據(jù)至少一個(gè)rst包,關(guān)閉自身與服務(wù)器相連的客戶端tcp連接,而不需要進(jìn)行任何的等待,使得tcp連接可以及時(shí)關(guān)閉,釋放維護(hù)tcp連接所需的網(wǎng)絡(luò)資源,從而減少了網(wǎng)絡(luò)資源的占用。
參見(jiàn)圖7,圖7為本發(fā)明實(shí)施例提供的傳輸控制協(xié)議tcp連接的關(guān)閉裝置的再一種結(jié)構(gòu)示意圖,與圖4所示的流程相對(duì)應(yīng),本發(fā)明圖7所示實(shí)施例在圖6所示實(shí)施例的基礎(chǔ)上,增加第三關(guān)閉模塊605,用于在向所述服務(wù)器發(fā)送ack包后,預(yù)設(shè)時(shí)長(zhǎng)內(nèi)未接收到所述服務(wù)器發(fā)送的所述至少一個(gè)rst包中的任一個(gè)rst包的情況下,關(guān)閉當(dāng)前與所述服務(wù)器相連的客戶端tcp連接。
可見(jiàn),應(yīng)用本發(fā)明實(shí)施例,服務(wù)器可以在向客戶端發(fā)送至少一個(gè)rst包后,直接關(guān)閉自身與客戶端相連的服務(wù)器端tcp連接,并且客戶端可以根據(jù)至少一個(gè)rst包,關(guān)閉自身與服務(wù)器相連的客戶端tcp連接,而不需要進(jìn)行任何的等待,使得tcp連接可以及時(shí)關(guān)閉,釋放維護(hù)tcp連接所需的網(wǎng)絡(luò)資源,從而減少了網(wǎng)絡(luò)資源的占用。進(jìn)一步的,即使在客戶端沒(méi)有接收到任一個(gè)rst包的情況下,也能夠保證在預(yù)設(shè)時(shí)長(zhǎng)后一定可以關(guān)閉當(dāng)前與服務(wù)器相連的客戶端tcp連接,進(jìn)而保證可以釋放資源,減少網(wǎng)絡(luò)資源的占用。
需要說(shuō)明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語(yǔ)僅僅用來(lái)將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開(kāi)來(lái),而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或者設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過(guò)程、方法、物品或者設(shè)備中還存在另外的相同要素。
本說(shuō)明書(shū)中的各個(gè)實(shí)施例均采用相關(guān)的方式描述,各個(gè)實(shí)施例之間相同相似的部分互相參見(jiàn)即可,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處。尤其,對(duì)于系統(tǒng)實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均包含在本發(fā)明的保護(hù)范圍內(nèi)。