一種基于傳輸控制協(xié)議建立會(huì)話連接的方法、裝置及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種基于傳輸控制協(xié)議建立會(huì)話連接的方法、裝置及系統(tǒng),涉及通信【技術(shù)領(lǐng)域】,用于實(shí)現(xiàn)網(wǎng)絡(luò)地址轉(zhuǎn)換的傳輸控制協(xié)議簡單穿越。本發(fā)明提供的基于傳輸控制協(xié)議建立會(huì)話連接的方法,包括:獲取主叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息;根據(jù)所述主叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息向所述主叫方網(wǎng)關(guān)發(fā)起傳輸控制協(xié)議建立連接,以使得被叫方網(wǎng)關(guān)記錄被叫方與被叫方網(wǎng)關(guān)之間的端口映射關(guān)系;在所述主叫方發(fā)起傳輸控制協(xié)議建立連接時(shí),接收所述被叫方網(wǎng)關(guān)根據(jù)所述被叫方與被叫方網(wǎng)關(guān)之間的端口映射關(guān)系發(fā)送的握手消息并向所述主叫方返回第一應(yīng)答消息;接收主叫方發(fā)送的第二應(yīng)答消息,建立與主叫方之間的會(huì)話連接。
【專利說明】一種基于傳輸控制協(xié)議建立會(huì)話連接的方法、裝置及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信【技術(shù)領(lǐng)域】,尤其涉及一種基于傳輸控制協(xié)議(Transmiss1nControl Protocol,以下簡稱為TCP)建立會(huì)話連接的方法、裝置及系統(tǒng)。
【背景技術(shù)】
[0002]網(wǎng)絡(luò)地址轉(zhuǎn)換(Network Address Translators, NAT)是在IP地址日益缺乏的情況下產(chǎn)生的,主要目的就是為了能夠地址重用。NAT是一個(gè)IETF(Internet EngineeringTask Force,互聯(lián)網(wǎng)工程任務(wù)組)標(biāo)準(zhǔn),可以將局域網(wǎng)中的內(nèi)部地址節(jié)點(diǎn)翻譯成合法的IP地址在Internet上使用(即把IP包內(nèi)的地址域用合法的IP地址來替換),或者可以把一個(gè)IP地址轉(zhuǎn)換成某個(gè)局域網(wǎng)節(jié)點(diǎn)的地址,從而可以幫助網(wǎng)絡(luò)超越地址的限制,合理的安排網(wǎng)絡(luò)中共有Internet地址和私有IP地址的使用。
[0003]然而,NAT的存在將給通信雙方建立會(huì)話連接帶來問題。比如:當(dāng)主叫對(duì)處于NAT后的被叫發(fā)起會(huì)話請(qǐng)求時(shí),由于此時(shí)被叫用戶尚未在其NAT上留下端口映射關(guān)系,因此主叫不知道目的的端口號(hào),NAT設(shè)備也不知道該往內(nèi)網(wǎng)何處轉(zhuǎn)發(fā)外來的請(qǐng)求。這種接連是不能建立成功的。如果通信雙方都在NAT之后,建立會(huì)話連接將會(huì)更加困難。
[0004]康奈爾大學(xué)的NUTSS 項(xiàng)目組提出了一種 STUN(Simple Traversal of UDP overNATs,NAT的UDP簡單穿越)的改進(jìn)協(xié)議STUNT (STUN with TCP),這個(gè)協(xié)議利用發(fā)送一個(gè)低生命周期的信號(hào)來引發(fā)本地NAT返回一個(gè)ICMP (Internet Control Message Protocol,Internet控制報(bào)文協(xié)議)錯(cuò)誤消息,以獲得TCP連接序號(hào)等信息,然后利用這些信息來偽造一個(gè)TCP連接的方法從而實(shí)現(xiàn)NAT的穿越。
[0005]具體的,如圖1所示,終端雙方(終端A、終端B)都主動(dòng)發(fā)送低生命周期(TTL)的SYN,且SYN的生命周期要足夠大,大到SYN包能穿過終端雙方各自的NAT,但生命周期又要足夠小,小到穿過各自的NAT后就過期而被網(wǎng)絡(luò)丟棄。這樣發(fā)起終端一方的NAT就會(huì)返回一個(gè)ICMP消息,通過偵聽經(jīng)過原始套接字(RAW-socket)或PCAP (packet capture library,抓包庫)返回的ICMP消息,終端可以得知初始TCP的序號(hào)。終端雙方把各自的序號(hào)告訴都能抵達(dá)(連接)的STUNT服務(wù)器,緊接著STUNT服務(wù)器通過設(shè)置匹配的序號(hào)構(gòu)造一個(gè)SYNACK來欺騙雙方(雙方都認(rèn)為該SYNACK是對(duì)方回應(yīng)的)。完成TCP握手任務(wù)的ACK按照正常方式穿過網(wǎng)絡(luò)。這種方法最大的缺點(diǎn)在于,需要一個(gè)第三方為一個(gè)任意地址產(chǎn)生一個(gè)欺騙包,而該欺騙包很可能被網(wǎng)絡(luò)中各種各樣的進(jìn)出過濾器丟棄。
【發(fā)明內(nèi)容】
[0006]本發(fā)明的實(shí)施例提供一種基于TCP建立會(huì)話連接的方法、裝置及系統(tǒng),用于實(shí)現(xiàn)NAT的TCP簡單穿越。
[0007]為達(dá)到上述目的,本發(fā)明的實(shí)施例根據(jù)如下技術(shù)方案:
[0008]第一方面,本發(fā)明實(shí)施例提供了一種基于TCP建立會(huì)話連接的方法,包括:獲取主叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息;根據(jù)所述主叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息向所述主叫方網(wǎng)關(guān)發(fā)起TCP建立連接,以使得被叫方網(wǎng)關(guān)記錄被叫方與被叫方網(wǎng)關(guān)之間的端口映射關(guān)系;在所述主叫方發(fā)起TCP建立連接時(shí),接收所述被叫方網(wǎng)關(guān)根據(jù)所述被叫方與被叫方網(wǎng)關(guān)之間的端口映射關(guān)系發(fā)送的握手消息并向所述主叫方返回第一應(yīng)答消息;接收主叫方發(fā)送的第二應(yīng)答消息,建立與主叫方之間的會(huì)話連接。
[0009]第二方面,本發(fā)明實(shí)施例還提供了一種基于TCP建立會(huì)話連接的方法,包括:獲取被叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息;在所述被叫方向主叫方網(wǎng)關(guān)發(fā)起TCP建立連接后,根據(jù)所述被叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息向所述被叫方網(wǎng)關(guān)發(fā)送握手消息以使得所述被叫方網(wǎng)管將所述握手消息發(fā)送給被叫方,所述被叫方網(wǎng)關(guān)在所述被叫方發(fā)起TCP建立連接時(shí)記錄有被叫方與被叫方網(wǎng)關(guān)之間的端口映射關(guān)系;接收被叫方返回的第一應(yīng)答消息并發(fā)送第二應(yīng)答消息給被叫方,建立與被叫方之間的會(huì)話連接。
[0010]第三方面,本發(fā)明實(shí)施例還提供了一種服務(wù)端,包括:
[0011]第一獲取單元,用于獲取主叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息;
[0012]第一發(fā)起單元,用于根據(jù)所述第一獲取單元獲取的主叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息向所述主叫方網(wǎng)關(guān)發(fā)起TCP建立連接,以使得被叫方網(wǎng)關(guān)記錄被叫方與被叫方網(wǎng)關(guān)之間的端口映射關(guān)系;
[0013]第一接收單元,在所述主叫方發(fā)起TCP建立連接時(shí),用于接收所述被叫方網(wǎng)關(guān)根據(jù)所述被叫方與被叫方網(wǎng)關(guān)之間的端口映射關(guān)系發(fā)送的握手消息;
[0014]第一發(fā)送單兀,用于向所述主叫方返回第一應(yīng)答消息;
[0015]第二接收單元,用于接收主叫方發(fā)送的第二應(yīng)答消息,建立與主叫方之間的會(huì)話連接。
[0016]第四方面,本發(fā)明實(shí)施例還提供了一種客戶端,包括:
[0017]第二獲取單元,用于獲取被叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息;
[0018]第二發(fā)送單元,用于在所述被叫方向主叫方網(wǎng)關(guān)發(fā)起TCP建立連接后,根據(jù)所述第二獲取單元獲取的被叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息向所述被叫方網(wǎng)關(guān)發(fā)送握手消息以使得所述被叫方網(wǎng)管將所述握手消息發(fā)送給被叫方,所述被叫方網(wǎng)關(guān)在所述被叫方發(fā)起TCP建立連接時(shí)記錄有被叫方與被叫方網(wǎng)關(guān)之間的端口映射關(guān)系;
[0019]第三接收單元,用于接收被叫方返回的第一應(yīng)答消息;
[0020]第三發(fā)送單元,用于發(fā)送第二應(yīng)答消息給被叫方,建立與被叫方之間的會(huì)話連接。
[0021]第五方面,本發(fā)明實(shí)施例還提供了一種基于TCP建立會(huì)話連接的系統(tǒng),包括:主叫方和被叫方
[0022]所述被叫方,用于獲取主叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息;根據(jù)所述主叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息向所述主叫方網(wǎng)關(guān)發(fā)起TCP建立連接,以使得被叫方網(wǎng)關(guān)記錄被叫方與被叫方網(wǎng)關(guān)之間的端口映射關(guān)系;在所述主叫方發(fā)起TCP建立連接時(shí),接收所述被叫方網(wǎng)關(guān)根據(jù)所述被叫方與被叫方網(wǎng)關(guān)之間的端口映射關(guān)系發(fā)送的握手消息并向所述主叫方返回第一應(yīng)答消息;接收主叫方發(fā)送的第二應(yīng)答消息,建立與主叫方之間的會(huì)話連接;
[0023]所述主叫方,用于獲取被叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息;在所述被叫方向主叫方網(wǎng)關(guān)發(fā)起TCP建立連接后,根據(jù)所述被叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息向所述被叫方網(wǎng)關(guān)發(fā)送握手消息以使得所述被叫方網(wǎng)管將所述握手消息發(fā)送給被叫方,所述被叫方網(wǎng)關(guān)在所述被叫方發(fā)起TCP建立連接時(shí)記錄有被叫方與被叫方網(wǎng)關(guān)之間的端口映射關(guān)系;接收被叫方返回的第一應(yīng)答消息并發(fā)送第二應(yīng)答消息給被叫方,建立與被叫方之間的會(huì)話連接。
[0024]本發(fā)明實(shí)施例提供的一種基于TCP建立會(huì)話連接的方法、裝置及系統(tǒng),由于被叫方主動(dòng)發(fā)起TCP建立連接,使得被叫方網(wǎng)關(guān)記錄被叫方與被叫方網(wǎng)關(guān)之間的端口映射關(guān)系,在主叫方發(fā)起TCP建立連接時(shí),被叫方能夠接收所述被叫方網(wǎng)關(guān)根據(jù)所述被叫方與被叫方網(wǎng)關(guān)之間的端口映射關(guān)系發(fā)送的握手消息,從而實(shí)現(xiàn)了主叫方與被叫方之間的會(huì)話連接建立成功,即實(shí)現(xiàn)了 NAT的TCP簡單穿越,避免了現(xiàn)有技術(shù)中實(shí)現(xiàn)NAT的TCP穿越需要一個(gè)第三方為一個(gè)任意地址產(chǎn)生一個(gè)欺騙包,而該欺騙包很可能被網(wǎng)絡(luò)中各種各樣的進(jìn)出過濾器丟棄的情況發(fā)生。
【專利附圖】
【附圖說明】
[0025]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0026]圖1為現(xiàn)有技術(shù)中NAT的TCP穿越時(shí)序圖;
[0027]圖2為本發(fā)明實(shí)施例提供的一種基于TCP建立會(huì)話連接的方法的流程圖一;
[0028]圖3為本發(fā)明實(shí)施例提供的一種基于TCP建立會(huì)話連接的方法的流程圖二 ;
[0029]圖4為本發(fā)明又一實(shí)施例提供的一種基于TCP建立會(huì)話連接的方法的時(shí)序圖;
[0030]圖5為本發(fā)明另一實(shí)施例提供的服務(wù)端的結(jié)構(gòu)示意圖;
[0031]圖6為圖5所示的服務(wù)端中第一獲取單元的結(jié)構(gòu)示意圖;
[0032]圖7為本發(fā)明另一實(shí)施例提供的客戶端的結(jié)構(gòu)示意圖;
[0033]圖8為圖7所示的客戶端中第二獲取單元的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0034]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0035]如圖2所示,本發(fā)明實(shí)施例提供一種基于TCP建立會(huì)話連接的方法,可以應(yīng)用于作為被叫方的終端,包括:
[0036]步驟201、獲取主叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息。
[0037]步驟202、根據(jù)所述主叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息向所述主叫方網(wǎng)關(guān)發(fā)起TCP建立連接,以使得被叫方網(wǎng)關(guān)記錄被叫方與被叫方網(wǎng)關(guān)之間的端口映射關(guān)系。
[0038]步驟203、在所述主叫方發(fā)起TCP建立連接時(shí),接收所述被叫方網(wǎng)關(guān)根據(jù)所述被叫方與被叫方網(wǎng)關(guān)之間的端口映射關(guān)系發(fā)送的握手消息并向所述主叫方返回第一應(yīng)答消息。
[0039]在本實(shí)施例中,所述握手消息可以是SYN消息,所述第一應(yīng)答消息可以是SYN-ACK消息。
[0040]步驟204、接收主叫方發(fā)送的第二應(yīng)答消息,建立與主叫方之間的會(huì)話連接。
[0041]在本實(shí)施例中,所述第二應(yīng)答消息可以是ACK消息。
[0042]如圖3所示,對(duì)應(yīng)于上述實(shí)施例,本發(fā)明實(shí)施例還提供一種基于TCP建立會(huì)話連接的方法,可以應(yīng)用于作為主叫方的終端,包括:
[0043]步驟301、獲取被叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息。
[0044]步驟302、在所述被叫方向主叫方網(wǎng)關(guān)發(fā)起TCP建立連接后,根據(jù)所述被叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息向所述被叫方網(wǎng)關(guān)發(fā)送握手消息以使得所述被叫方網(wǎng)管將所述握手消息發(fā)送給被叫方,所述被叫方網(wǎng)關(guān)在所述被叫方發(fā)起TCP建立連接時(shí)記錄有被叫方與被叫方網(wǎng)關(guān)之間的端口映射關(guān)系。
[0045]在本實(shí)施例中,所述握手消息可以是SYN消息。
[0046]步驟303、接收被叫方返回的第一應(yīng)答消息并發(fā)送第二應(yīng)答消息給被叫方,建立與被叫方之間的會(huì)話連接。
[0047]在本實(shí)施例中,所述第一應(yīng)答消息可以是SYN-ACK消息,所述第二應(yīng)答消息可以是ACK消息。
[0048]本發(fā)明實(shí)施例提供的一種基于TCP建立會(huì)話連接的方法,由于被叫方主動(dòng)發(fā)起TCP建立連接,使得被叫方網(wǎng)關(guān)記錄被叫方與被叫方網(wǎng)關(guān)之間的端口映射關(guān)系,在主叫方發(fā)起TCP建立連接時(shí),被叫方能夠接收所述被叫方網(wǎng)關(guān)根據(jù)所述被叫方與被叫方網(wǎng)關(guān)之間的端口映射關(guān)系發(fā)送的握手消息,從而實(shí)現(xiàn)了主叫方與被叫方之間的會(huì)話連接建立成功,即實(shí)現(xiàn)了 NAT的TCP簡單穿越,避免了現(xiàn)有技術(shù)中實(shí)現(xiàn)NAT的TCP穿越需要一個(gè)第三方為一個(gè)任意地址產(chǎn)生一個(gè)欺騙包,而該欺騙包很可能被網(wǎng)絡(luò)中各種各樣的進(jìn)出過濾器丟棄的情況發(fā)生。
[0049]為了使得本領(lǐng)域技術(shù)人員更好的理解本方案,現(xiàn)對(duì)本發(fā)明又一實(shí)施例提供的一種基于TCP建立會(huì)話連接的方法進(jìn)行詳細(xì)的說明。
[0050]本發(fā)明又一實(shí)施例提供的基于TCP建立會(huì)話連接的方法可以應(yīng)用于一種TCP網(wǎng)絡(luò)架構(gòu),在該TCP網(wǎng)絡(luò)架構(gòu)中設(shè)置有主叫方、主叫方網(wǎng)關(guān)、注冊(cè)服務(wù)器、被叫方以及被叫方網(wǎng)關(guān)。值得說明的是,在本實(shí)施例中,發(fā)起TCP建立連接,均是由發(fā)起方發(fā)送SYN消息給對(duì)端,實(shí)現(xiàn)TCP建立連接,是由發(fā)起方發(fā)送SYN消息,并且發(fā)起方能夠接收到對(duì)端返回的SYN-ACK消息并在此發(fā)送一個(gè)ACK消息,通過發(fā)起方與對(duì)端的三次握手實(shí)現(xiàn)發(fā)起方與對(duì)端之間的TCP連接。
[0051]如圖4所示,本發(fā)明又一實(shí)施例提供的一種基于TCP建立會(huì)話連接的方法,包括:
[0052]步驟401、主叫方、被叫方均與注冊(cè)服務(wù)器之間建立TCP連接。
[0053]步驟402、主叫方向注冊(cè)服務(wù)器發(fā)送第二注冊(cè)消息,以使得注冊(cè)服務(wù)器記錄被叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息。
[0054]步驟403、被叫方向注冊(cè)服務(wù)器發(fā)送第一注冊(cè)消息,以使得注冊(cè)服務(wù)器記錄主叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息。
[0055]步驟404、主叫方向注冊(cè)服務(wù)器發(fā)送第二請(qǐng)求消息,其中,所述第二請(qǐng)求消息中攜帶有主叫方的標(biāo)識(shí)信息。
[0056]步驟405、注冊(cè)服務(wù)器根據(jù)第二請(qǐng)求消息向主叫方返回第二回復(fù)消息,其中,所述第二回復(fù)消息中攜帶有被叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息。
[0057]步驟406、被叫方向注冊(cè)服務(wù)器發(fā)送第一請(qǐng)求消息,其中,所述第一請(qǐng)求消息中攜帶有主叫方的標(biāo)識(shí)信息;
[0058]步驟407、注冊(cè)服務(wù)器根據(jù)所述第一請(qǐng)求消息向被叫方返回第一回復(fù)消息,其中,所述第一回復(fù)消息中攜帶有主叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息。
[0059]步驟408、被叫方根據(jù)主叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息向所述主叫方網(wǎng)關(guān)發(fā)起TCP建立連接,以使得被叫方網(wǎng)關(guān)記錄被叫方與被叫方網(wǎng)關(guān)之間的端口映射關(guān)系O
[0060]在所述步驟408中,由于標(biāo)準(zhǔn)TCP建立連接均是由主叫方發(fā)起的,在本步驟中,由被叫方主動(dòng)發(fā)起TCP建立連接,其報(bào)文不是標(biāo)準(zhǔn)的TCP/IP協(xié)議棧能發(fā)出的,所以只能采用手動(dòng)構(gòu)造報(bào)文并到送該報(bào)文的方法來實(shí)現(xiàn)。值得說明的是,在本實(shí)施例中,手動(dòng)構(gòu)造的報(bào)文為偽造SYN消息,偽造SYN消息為原始套接字RAW-socket或者抓包庫PCAP。
[0061]由于本實(shí)施例中涉及到如何構(gòu)造一個(gè)TCP的SYN報(bào)文,即偽造SYN消息,并發(fā)送該報(bào)文,現(xiàn)在介紹下如何實(shí)現(xiàn)。
[0062]在windows/1 inux系統(tǒng)上有兩種方案,一是適用RAW-socket ;另一種則是使用PCAP ;RAW-socket在windows上在XP以后,不能發(fā)送TCP報(bào)文而PCAP可以發(fā)送TCP報(bào)文,故在本實(shí)施例中以PCAP為例進(jìn)行詳細(xì)的說明來實(shí)現(xiàn)。Pcap在windows上有NDIS協(xié)議層驅(qū)動(dòng),它完全繞開了 TCP/IP協(xié)議棧,所以能夠發(fā)送和接收任何以太網(wǎng)報(bào)文。本實(shí)施例對(duì)于如何構(gòu)造并發(fā)送TCPSYN報(bào)文不做任何限制,在windows上,除了上面的方法,也可以實(shí)現(xiàn)自己的NDIS中間層、協(xié)議層、NIC層驅(qū)動(dòng)來實(shí)現(xiàn)同樣的目的。
[0063]此外,由于建立TCP連接由被叫方主動(dòng)發(fā)起,所以改報(bào)文肯定會(huì)失敗,但是,卻打通了主叫方到被叫方的通道,即被叫方網(wǎng)管上記錄了被叫方與被叫方網(wǎng)關(guān)之間的端口映射關(guān)系。
[0064]步驟409、主叫方向被叫方網(wǎng)關(guān)發(fā)送SYN消息。
[0065]步驟410、被叫方網(wǎng)關(guān)根據(jù)所述被叫方與被叫方網(wǎng)關(guān)之間的端口映射關(guān)系將SYN消息發(fā)送給被叫方。
[0066]步驟411、被叫方向所述主叫方返回SYN-ACK消息。
[0067]步驟412、主叫方在接收到SYN-ACK消息后向被叫方發(fā)送ACK消息,主叫方與被叫方之間實(shí)現(xiàn)了會(huì)話連接。
[0068]本發(fā)明實(shí)施例提供的一種基于TCP建立會(huì)話連接的方法,由于被叫方主動(dòng)發(fā)起TCP建立連接,使得被叫方網(wǎng)關(guān)記錄被叫方與被叫方網(wǎng)關(guān)之間的端口映射關(guān)系,在主叫方發(fā)起TCP建立連接時(shí),被叫方能夠接收所述被叫方網(wǎng)關(guān)根據(jù)所述被叫方與被叫方網(wǎng)關(guān)之間的端口映射關(guān)系發(fā)送的SYN消息,從而實(shí)現(xiàn)了主叫方與被叫方之間的會(huì)話連接建立成功,SP實(shí)現(xiàn)了 NAT的TCP簡單穿越,避免了現(xiàn)有技術(shù)中實(shí)現(xiàn)NAT的TCP穿越需要一個(gè)第三方為一個(gè)任意地址產(chǎn)生一個(gè)欺騙包,而該欺騙包很可能被網(wǎng)絡(luò)中各種各樣的進(jìn)出過濾器丟棄的情況發(fā)生。
[0069]通過以上的實(shí)施方式的描述,所屬領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在可讀取的存儲(chǔ)介質(zhì)中,如計(jì)算機(jī)的軟盤,硬盤或光盤等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。
[0070]本發(fā)明另一實(shí)施例提供的一種服務(wù)端,如圖5所示,包括:
[0071]第一獲取單元51,用于獲取主叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息。
[0072]其中,如圖6所示,所述第一獲取單元,包括:
[0073]第一建立子單元61,用于與注冊(cè)服務(wù)器之間建立TCP連接;
[0074]第一發(fā)送子單元62,用于向所述注冊(cè)服務(wù)器發(fā)送第一請(qǐng)求消息,所述第一請(qǐng)求消息中攜帶有主叫方的標(biāo)識(shí)信息;
[0075]第一接收子單元63,用于接收所述注冊(cè)服務(wù)器根據(jù)所述第一請(qǐng)求消息發(fā)送的第一回復(fù)消息,所述第一回復(fù)消息中攜帶有主叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息。
[0076]進(jìn)一步的,如圖6所示,所述第一獲取單元,還包括:
[0077]第二發(fā)送子單元64,用于向所述注冊(cè)服務(wù)器發(fā)送第一注冊(cè)消息,以使得所述注冊(cè)服務(wù)器記錄被叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息。
[0078]第一發(fā)起單元52,用于根據(jù)所述第一獲取單元獲取的主叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息向所述主叫方網(wǎng)關(guān)發(fā)起TCP建立連接,以使得被叫方網(wǎng)關(guān)記錄被叫方與被叫方網(wǎng)關(guān)之間的端口映射關(guān)系;
[0079]在本實(shí)施例中,所述第一發(fā)起單元,具體用于根據(jù)所述主叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息向所述主叫方網(wǎng)關(guān)發(fā)送偽造握手消息,所述偽造握手消息為原始套接字RAW-socket或者抓包庫PCAP。
[0080]第一接收單元53,在所述主叫方發(fā)起TCP建立連接時(shí),用于接收所述被叫方網(wǎng)關(guān)根據(jù)所述被叫方與被叫方網(wǎng)關(guān)之間的端口映射關(guān)系發(fā)送的握手消息;
[0081]第一發(fā)送單元54,用于向所述主叫方返回第一應(yīng)答消息;
[0082]第二接收單元55,用于接收主叫方發(fā)送的第二應(yīng)答消息,建立與主叫方之間的會(huì)話連接。
[0083]對(duì)應(yīng)于上述實(shí)施例,本發(fā)明另一實(shí)施例還提供一種客戶端,如圖7所示,包括:
[0084]第二獲取單元71,用于獲取被叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息;
[0085]其中,如圖8所示,所述第二獲取單元,包括:
[0086]第二建立子單元81,用于與注冊(cè)服務(wù)器之間建立TCP連接;
[0087]第三發(fā)送子單元82,用于向所述注冊(cè)服務(wù)器發(fā)送第二請(qǐng)求消息,所述第二請(qǐng)求消息中攜帶有被叫方的標(biāo)識(shí)信息;
[0088]第二接收子單元83,用于接收所述注冊(cè)服務(wù)器根據(jù)所述第二請(qǐng)求消息發(fā)送的第二回復(fù)消息,所述第二回復(fù)消息中攜帶有被叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息。
[0089]進(jìn)一步的,如圖8所示,第二獲取單元,還包括:
[0090]第四發(fā)送子單元84,用于向所述注冊(cè)服務(wù)器發(fā)送第二注冊(cè)消息,以使得所述注冊(cè)服務(wù)器記錄主叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息。
[0091]第二發(fā)送單元72,用于在所述被叫方向主叫方網(wǎng)關(guān)發(fā)起TCP建立連接后,根據(jù)所述第二獲取單元獲取的被叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息向所述被叫方網(wǎng)關(guān)發(fā)送握手消息以使得所述被叫方網(wǎng)管將所述握手消息發(fā)送給被叫方,所述被叫方網(wǎng)關(guān)在所述被叫方發(fā)起TCP建立連接時(shí)記錄有被叫方與被叫方網(wǎng)關(guān)之間的端口映射關(guān)系;
[0092]第三接收單元73,用于接收被叫方返回的第一應(yīng)答消息;
[0093]第三發(fā)送單元74,用于發(fā)送第二應(yīng)答消息給被叫方,建立與被叫方之間的會(huì)話連接。
[0094]本發(fā)明實(shí)施例提供的一種客戶端、服務(wù)端,由于被叫方主動(dòng)發(fā)起TCP建立連接,使得被叫方網(wǎng)關(guān)記錄被叫方與被叫方網(wǎng)關(guān)之間的端口映射關(guān)系,在主叫方發(fā)起TCP建立連接時(shí),被叫方能夠接收所述被叫方網(wǎng)關(guān)根據(jù)所述被叫方與被叫方網(wǎng)關(guān)之間的端口映射關(guān)系發(fā)送的握手消息,從而實(shí)現(xiàn)了主叫方與被叫方之間的會(huì)話連接建立成功,即實(shí)現(xiàn)了 NAT的TCP簡單穿越,避免了現(xiàn)有技術(shù)中實(shí)現(xiàn)NAT的TCP穿越需要一個(gè)第三方為一個(gè)任意地址產(chǎn)生一個(gè)欺騙包,而該欺騙包很可能被網(wǎng)絡(luò)中各種各樣的進(jìn)出過濾器丟棄的情況發(fā)生。
[0095]本發(fā)明另一實(shí)施例提供的一種基于TCP建立會(huì)話連接的系統(tǒng),包括:主叫方和被叫方
[0096]所述被叫方,用于獲取主叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息;根據(jù)所述主叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息向所述主叫方網(wǎng)關(guān)發(fā)起TCP建立連接,以使得被叫方網(wǎng)關(guān)記錄被叫方與被叫方網(wǎng)關(guān)之間的端口映射關(guān)系;在所述主叫方發(fā)起TCP建立連接時(shí),接收所述被叫方網(wǎng)關(guān)根據(jù)所述被叫方與被叫方網(wǎng)關(guān)之間的端口映射關(guān)系發(fā)送的握手消息并向所述主叫方返回第一應(yīng)答消息;接收主叫方發(fā)送的第二應(yīng)答消息,建立與主叫方之間的會(huì)話連接;
[0097]所述主叫方,用于獲取被叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息;在所述被叫方向主叫方網(wǎng)關(guān)發(fā)起TCP建立連接后,根據(jù)所述被叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息向所述被叫方網(wǎng)關(guān)發(fā)送握手消息以使得所述被叫方網(wǎng)管將所述握手消息發(fā)送給被叫方,所述被叫方網(wǎng)關(guān)在所述被叫方發(fā)起TCP建立連接時(shí)記錄有被叫方與被叫方網(wǎng)關(guān)之間的端口映射關(guān)系;接收被叫方返回的第一應(yīng)答消息并發(fā)送第二應(yīng)答消息給被叫方,建立與被叫方之間的會(huì)話連接。
[0098]本發(fā)明實(shí)施例提供的一種基于TCP建立會(huì)話連接的系統(tǒng),由于被叫方主動(dòng)發(fā)起TCP建立連接,使得被叫方網(wǎng)關(guān)記錄被叫方與被叫方網(wǎng)關(guān)之間的端口映射關(guān)系,在主叫方發(fā)起TCP建立連接時(shí),被叫方能夠接收所述被叫方網(wǎng)關(guān)根據(jù)所述被叫方與被叫方網(wǎng)關(guān)之間的端口映射關(guān)系發(fā)送的握手消息,從而實(shí)現(xiàn)了主叫方與被叫方之間的會(huì)話連接建立成功,即實(shí)現(xiàn)了 NAT的TCP簡單穿越,避免了現(xiàn)有技術(shù)中實(shí)現(xiàn)NAT的TCP穿越需要一個(gè)第三方為一個(gè)任意地址產(chǎn)生一個(gè)欺騙包,而該欺騙包很可能被網(wǎng)絡(luò)中各種各樣的進(jìn)出過濾器丟棄的情況發(fā)生。
[0099]以上所述,僅為本發(fā)明的【具體實(shí)施方式】,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本【技術(shù)領(lǐng)域】的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以所述權(quán)利要求的保護(hù)范圍為準(zhǔn)。
【權(quán)利要求】
1.一種基于傳輸控制協(xié)議建立會(huì)話連接的方法,其特征在于,包括: 獲取主叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息; 根據(jù)所述主叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息向所述主叫方網(wǎng)關(guān)發(fā)起傳輸控制協(xié)議建立連接,以使得被叫方網(wǎng)關(guān)記錄被叫方與被叫方網(wǎng)關(guān)之間的端口映射關(guān)系; 在所述主叫方發(fā)起傳輸控制協(xié)議建立連接時(shí),接收所述被叫方網(wǎng)關(guān)根據(jù)所述被叫方與被叫方網(wǎng)關(guān)之間的端口映射關(guān)系發(fā)送的握手消息并向所述主叫方返回第一應(yīng)答消息; 接收主叫方發(fā)送的第二應(yīng)答消息,建立與主叫方之間的會(huì)話連接。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述獲取主叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息,包括: 與注冊(cè)服務(wù)器之間建立傳輸控制協(xié)議連接; 向所述注冊(cè)服務(wù)器發(fā)送第一請(qǐng)求消息,所述第一請(qǐng)求消息中攜帶有主叫方的標(biāo)識(shí)信息; 接收所述注冊(cè)服務(wù)器根據(jù)所述第一請(qǐng)求消息發(fā)送的第一回復(fù)消息,所述第一回復(fù)消息中攜帶有主叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息。
3.根據(jù)權(quán)利要 求2所述的方法,其特征在于,在所述與注冊(cè)服務(wù)器之間建立傳輸控制協(xié)議連接之后,還包括: 向所述注冊(cè)服務(wù)器發(fā)送第一注冊(cè)消息,以使得所述注冊(cè)服務(wù)器記錄被叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息。
4.根據(jù)權(quán)利要求1-3任一項(xiàng)所述的方法,其特征在于,所述根據(jù)所述主叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息向所述主叫方網(wǎng)關(guān)發(fā)起傳輸控制協(xié)議建立連接,包括: 根據(jù)所述主叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息向所述主叫方網(wǎng)關(guān)發(fā)送偽造握手消息,所述偽造握手消息為原始套接字RAW-socket或者抓包庫PCAP。
5.一種基于傳輸控制協(xié)議建立會(huì)話連接的方法,其特征在于,包括: 獲取被叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息; 在所述被叫方向主叫方網(wǎng)關(guān)發(fā)起傳輸控制協(xié)議建立連接后,根據(jù)所述被叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息向所述被叫方網(wǎng)關(guān)發(fā)送握手消息以使得所述被叫方網(wǎng)管將所述握手消息發(fā)送給被叫方,所述被叫方網(wǎng)關(guān)在所述被叫方發(fā)起傳輸控制協(xié)議建立連接時(shí)記錄有被叫方與被叫方網(wǎng)關(guān)之間的端口映射關(guān)系; 接收被叫方返回的第一應(yīng)答消息并發(fā)送第二應(yīng)答消息給被叫方,建立與被叫方之間的會(huì)話連接。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述獲取被叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息,包括: 與注冊(cè)服務(wù)器之間建立傳輸控制協(xié)議連接; 向所述注冊(cè)服務(wù)器發(fā)送第二請(qǐng)求消息,所述第二請(qǐng)求消息中攜帶有被叫方的標(biāo)識(shí)信息; 接收所述注冊(cè)服務(wù)器根據(jù)所述第二請(qǐng)求消息發(fā)送的第二回復(fù)消息,所述第二回復(fù)消息中攜帶有被叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,在所述與注冊(cè)服務(wù)器之間建立傳輸控制協(xié)議連接之后,還包括:向所述注冊(cè)服務(wù)器發(fā)送第二注冊(cè)消息,以使得所述注冊(cè)服務(wù)器記錄主叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息。
8.根據(jù)權(quán)利要求5-7任一項(xiàng)所述的方法,其特征在于,所述被叫方向主叫方網(wǎng)關(guān)發(fā)起傳輸控制協(xié)議建立連接,具體包括: 所述被叫方向主叫方網(wǎng)關(guān)發(fā)送偽造握手消息,所述偽造握手消息為原始套接字RAW-socket或者抓包庫PCAP。
9.一種服務(wù)端,其特征在于,包括: 第一獲取單元,用于獲取主叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息; 第一發(fā)起單元,用于根據(jù)所述第一獲取單元獲取的主叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息向所述主叫方網(wǎng)關(guān)發(fā)起傳輸控制協(xié)議建立連接,以使得被叫方網(wǎng)關(guān)記錄被叫方與被叫方網(wǎng)關(guān)之間的端口映射關(guān)系; 第一接收單元,在所述主叫方發(fā)起傳輸控制協(xié)議建立連接時(shí),用于接收所述被叫方網(wǎng)關(guān)根據(jù)所述被叫方與被叫方網(wǎng)關(guān)之間的端口映射關(guān)系發(fā)送的握手消息; 第一發(fā)送單元,用于向所述主叫方返回第一應(yīng)答消息; 第二接收單元,用于接收主叫方發(fā)送的第二應(yīng)答消息,建立與主叫方之間的會(huì)話連接。
10.根據(jù)權(quán)利要求9所述的服務(wù)端,其特征在于,所述第一獲取單元,包括: 第一建立子單元,用于與注冊(cè)服務(wù)器之間建立傳輸控制協(xié)議連接; 第一發(fā)送子單元,用于向所述注冊(cè)服務(wù)器發(fā)送第一請(qǐng)求消息,所述第一請(qǐng)求消息中攜帶有主叫方的標(biāo)識(shí)信息; 第一接收子單元,用于接收所述注冊(cè)服務(wù)器根據(jù)所述第一請(qǐng)求消息發(fā)送的第一回復(fù)消息,所述第一回復(fù)消息中攜帶有主叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息。
11.根據(jù)權(quán)利要求10所述的服務(wù)端,其特征在于,所述第一獲取單元,還包括: 第二發(fā)送子單元,用于向所述注冊(cè)服務(wù)器發(fā)送第一注冊(cè)消息,以使得所述注冊(cè)服務(wù)器記錄被叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息。
12.根據(jù)權(quán)利要求9-11任一項(xiàng)所述的服務(wù)端,其特征在于,所述第一發(fā)起單元,具體用于根據(jù)所述主叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息向所述主叫方網(wǎng)關(guān)發(fā)送偽造握手消息,所述偽造握手消息為原始套接字RAW-socket或者抓包庫PCAP。
13.—種客戶端,其特征在于,包括: 第二獲取單元,用于獲取被叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息; 第二發(fā)送單元,用于在所述被叫方向主叫方網(wǎng)關(guān)發(fā)起傳輸控制協(xié)議建立連接后,根據(jù)所述第二獲取單元獲取的被叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息向所述被叫方網(wǎng)關(guān)發(fā)送握手消息以使得所述被叫方網(wǎng)管將所述握手消息發(fā)送給被叫方,所述被叫方網(wǎng)關(guān)在所述被叫方發(fā)起傳輸控制協(xié)議建立連接時(shí)記錄有被叫方與被叫方網(wǎng)關(guān)之間的端口映射關(guān)系; 第三接收單元,用于接收被叫方返回的第一應(yīng)答消息; 第三發(fā)送單元,用于發(fā)送第二應(yīng)答消息給被叫方,建立與被叫方之間的會(huì)話連接。
14.根據(jù)權(quán)利要求13所述的客戶端,其特征在于,所述第二獲取單元,包括: 第二建立子單元,用于與注冊(cè)服務(wù)器之間建立傳輸控制協(xié)議連接; 第三發(fā)送子單元,用于向所述注冊(cè)服務(wù)器發(fā)送第二請(qǐng)求消息,所述第二請(qǐng)求消息中攜帶有被叫方的標(biāo)識(shí)信息; 第二接收子單元,用于接收所述注冊(cè)服務(wù)器根據(jù)所述第二請(qǐng)求消息發(fā)送的第二回復(fù)消息,所述第二回復(fù)消息中攜帶有被叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息。
15.根據(jù)權(quán)利要求14所述的客戶端,其特征在于,第二獲取單元,還包括: 第四發(fā)送子單元,用于向所述注冊(cè)服務(wù)器發(fā)送第二注冊(cè)消息,以使得所述注冊(cè)服務(wù)器記錄主叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息。
16.—種基于傳輸控制協(xié)議建立會(huì)話連接的系統(tǒng),其特征在于,包括:主叫方和被叫方 所述被叫方,用于獲取主叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息;根據(jù)所述主叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息向所述主叫方網(wǎng)關(guān)發(fā)起傳輸控制協(xié)議建立連接,以使得被叫方網(wǎng)關(guān)記錄被叫方與被叫方網(wǎng)關(guān)之間的端口映射關(guān)系;在所述主叫方發(fā)起傳輸控制協(xié)議建立連接時(shí),接收所述被叫方網(wǎng)關(guān)根據(jù)所述被叫方與被叫方網(wǎng)關(guān)之間的端口映射關(guān)系發(fā)送的握手消息并向所述主叫方返回第一應(yīng)答消息;接收主叫方發(fā)送的第二應(yīng)答消息,建立與主叫方之間的會(huì)話連接; 所述主叫方,用于獲取被叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息;在所述被叫方向主叫方網(wǎng)關(guān)發(fā)起傳輸控制協(xié)議建立連接后,根據(jù)所述被叫方網(wǎng)關(guān)的地址以及使用網(wǎng)關(guān)的端口信息向所述被叫方網(wǎng)關(guān)發(fā)送握手消息以使得所述被叫方網(wǎng)管將所述握手消息發(fā)送給被叫方,所述被叫方網(wǎng)關(guān)在所述被叫方發(fā)起傳輸控制協(xié)議建立連接時(shí)記錄有被叫方與被叫方網(wǎng)關(guān)之間的端口映射關(guān)系;接收被叫方返回的第一應(yīng)答消息并發(fā)送第二應(yīng)答消息給被叫方,建立與被叫方之 間的會(huì)話連接。
【文檔編號(hào)】H04L29/06GK104079537SQ201310103897
【公開日】2014年10月1日 申請(qǐng)日期:2013年3月28日 優(yōu)先權(quán)日:2013年3月28日
【發(fā)明者】王燦, 戴輝 申請(qǐng)人:聯(lián)想(北京)有限公司