專利名稱:一種基于tcp協(xié)議實時傳輸媒體數(shù)據(jù)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)語音/視頻通訊技術(shù)領(lǐng)域,具體涉及一種媒體數(shù)據(jù)穿越只允許TCP協(xié)議傳輸?shù)木W(wǎng)絡(luò)防火墻進(jìn)行實時數(shù)據(jù)傳輸?shù)姆椒ā?br>
背景技術(shù):
隨著多媒體處理技術(shù)的發(fā)展,基于流媒體傳輸?shù)亩嗝襟w應(yīng)用得到了迅速的發(fā)展。而語音/視頻等媒體流對傳輸實時性要求很高,因此通常是采用基于UDP的RTP協(xié)議來傳輸?shù)模壳坝心承┚W(wǎng)絡(luò)環(huán)境中的網(wǎng)絡(luò)防火墻不開放UDP端口,只允許TCP協(xié)議的數(shù)據(jù)包通過,這就阻礙了語音/視頻等媒體流的傳輸,限制了防火墻內(nèi)的客戶端同Internet上的客戶端之間的語音/視頻互通。
為了使得該情況下可以進(jìn)行語音/視頻通信,就必須用TCP來傳輸媒體數(shù)據(jù),現(xiàn)有的相關(guān)解決方法有HTTP代理,SOCKET4/5代理等,他們在一定程度上解決了傳輸?shù)膯栴},比如QQ、MSN等在此種情況下,可以使用代理上網(wǎng),但是它們本質(zhì)上都是基于標(biāo)準(zhǔn)TCP協(xié)議的,因為TCP協(xié)議的丟包重傳等可靠性保證機(jī)制,在執(zhí)行過程中占用大量的資源和時間上的開銷,使得TCP傳輸媒體數(shù)據(jù)的效率不高,因此在此種環(huán)境下,語音/視頻等媒體數(shù)據(jù)的傳輸就無法保證實時性,根難取得較好的通信質(zhì)量。
發(fā)明內(nèi)容
針對現(xiàn)有技術(shù)的上述缺陷,本發(fā)明的主要目的在于提出一種基于TCP協(xié)議實時傳輸媒體數(shù)據(jù)的方法,在只允許TCP協(xié)議的數(shù)據(jù)包通過防火墻的條件下,保證媒體數(shù)據(jù)的傳輸實時性,具有較好的媒體通訊質(zhì)量。
本發(fā)明是通過下述技術(shù)方案實現(xiàn)的一種基于TCP協(xié)議實時傳輸媒體數(shù)據(jù)的方法,先通過標(biāo)準(zhǔn)的TCP協(xié)議棧建立通訊雙方的連接,然后通過底層網(wǎng)絡(luò)協(xié)議接口直接發(fā)送和接收數(shù)據(jù),媒體數(shù)據(jù)傳輸結(jié)束后,斷開連接。
該方式包括如下步驟
A.雙方連接本地通訊方(源端)通過標(biāo)準(zhǔn)的TCP協(xié)議棧直接與對方(目標(biāo)端)建立連接;獲取該連接的套接字對信息(源IP、目標(biāo)IP、源端口、目標(biāo)端口),以及雙方TCP包的SEQ值、ACK值等;B.TCP數(shù)據(jù)封包源端的封包模塊利用前述獲得的信息,根據(jù)網(wǎng)絡(luò)的MTU值,把要發(fā)送的數(shù)據(jù)拆分成適當(dāng)?shù)拇笮?,封裝成TCP數(shù)據(jù)包;C.TCP數(shù)據(jù)發(fā)送源端的發(fā)送模塊將封裝好的TCP數(shù)據(jù)包交給底層網(wǎng)絡(luò)協(xié)議接口發(fā)送至目標(biāo)端;D.TCP數(shù)據(jù)處理目標(biāo)端的接收模塊接收全部TCP數(shù)據(jù)包,并判斷該數(shù)據(jù)包是否屬于本方法構(gòu)造的TCP數(shù)據(jù)包,如果是,則交給應(yīng)用層處理,否則,直接交給系統(tǒng)的TCP/IP協(xié)議棧的處理;E.斷開連接媒體數(shù)據(jù)傳輸結(jié)束后,雙方發(fā)送帶FIN標(biāo)志的數(shù)據(jù)包,斷開雙方連接。
所述底層網(wǎng)絡(luò)協(xié)議接口位于TCP層之下,網(wǎng)卡之上;所述源端和目標(biāo)端的操作可以互換。
本發(fā)明的優(yōu)點(diǎn)在于1.不使用構(gòu)造的數(shù)據(jù)包三次握手方式建立TCP連接,而是直接使用系統(tǒng)提供的TCP協(xié)議棧實現(xiàn)和對方的連接,這樣就有效的避免了和系統(tǒng)選擇端口號的沖突;2.通訊兩端在通過標(biāo)準(zhǔn)的TCP協(xié)議建立連接并轉(zhuǎn)入數(shù)據(jù)包直接收發(fā)的狀態(tài)后,不通過標(biāo)準(zhǔn)的TCP協(xié)議棧的接口發(fā)送TCP數(shù)據(jù)包,而是通過底層的網(wǎng)絡(luò)接口直接發(fā)送;接收TCP數(shù)據(jù)包時也不通過標(biāo)準(zhǔn)的TCP協(xié)議棧的接口,而直接通過底層協(xié)議接口查找連接對端發(fā)送的數(shù)據(jù)包,并將查找到的數(shù)據(jù)包直接送交應(yīng)用層處理;3.轉(zhuǎn)入數(shù)據(jù)包直接收發(fā)狀態(tài)后,所有通過此標(biāo)準(zhǔn)TCP連接發(fā)送的數(shù)據(jù)包都會被丟棄,以避免系統(tǒng)的TCP包對本方法的數(shù)據(jù)包收發(fā)的干擾。
4.本方法能夠和系統(tǒng)標(biāo)準(zhǔn)的TCP協(xié)議棧共同工作。
圖1是本發(fā)明工作協(xié)議層示意圖;
圖2是本發(fā)明實施例連接/發(fā)包/收包流程圖。
具體實施例方式
為了便于本領(lǐng)域一般技術(shù)人員的理解和實現(xiàn)本發(fā)明,下面結(jié)合附圖對本發(fā)明的實施例作進(jìn)一步的說明。
由于基于標(biāo)準(zhǔn)TCP協(xié)議傳輸語音/視頻等媒體流在執(zhí)行過程中占用大量的資源和時間上的開銷,使得TCP傳輸媒體數(shù)據(jù)的效率不高,但基于UDP的RTP協(xié)議來傳輸語音/視頻等媒體流又常常難以順利地穿過只允許TCP協(xié)議的數(shù)據(jù)包通過的防火墻。
所以本發(fā)明提供了一種基于TCP協(xié)議實時傳輸媒體數(shù)據(jù)的方法,將媒體數(shù)據(jù)打成TCP數(shù)據(jù)包,既可以通過防火墻,但又繞開標(biāo)準(zhǔn)的TCP協(xié)議,可以實現(xiàn)對媒體數(shù)據(jù)的高效傳輸,實現(xiàn)了發(fā)明目的。
下面是本發(fā)明在Windows2000/XP環(huán)境下的一個實施實例圖1是本發(fā)明工作協(xié)議層示意圖,位于TCP層之下,網(wǎng)卡之上。本發(fā)明的實施例使用NDIS中間層驅(qū)動來完成TCP的封包發(fā)送,以及數(shù)據(jù)包的過濾接收。NDIS中間層介于TCP協(xié)議層驅(qū)動和小端口(網(wǎng)卡)驅(qū)動之間,對上面的TCP協(xié)議層表現(xiàn)為一個虛擬的微端口網(wǎng)卡結(jié)構(gòu),而對下面的網(wǎng)卡則表現(xiàn)為一個協(xié)議層的結(jié)構(gòu)。所以,無論是對網(wǎng)卡接收并上傳的數(shù)據(jù)包,還是上層(TCP協(xié)議層)要下送至網(wǎng)卡發(fā)送的數(shù)據(jù)包,無一例外地都會經(jīng)過NDIS中間層,所以它能夠截獲所有的網(wǎng)絡(luò)數(shù)據(jù)包,因而可以實施本發(fā)明,并實現(xiàn)本發(fā)明目的。
圖2是本發(fā)明實施例的連接/發(fā)包/收包流程圖。具體過程如下1.發(fā)送方(源端)在應(yīng)用層通過系統(tǒng)標(biāo)準(zhǔn)TCP協(xié)議棧與接收方(目標(biāo)端)建立連接;2.發(fā)送方(源端)應(yīng)用層獲取該連接的套接字對信息,包括源IP、目的IP、源端口、目的端口,傳遞給下層驅(qū)動(NDIS中間層);3.在驅(qū)動(NDIS中間層)中建立該連接通道的數(shù)據(jù)結(jié)構(gòu)信息,分配該通道的發(fā)送緩沖和接收緩沖,維護(hù)一個連接通道信息鏈表,并進(jìn)入抓包模式,獲取該連接的雙方MAC、Seq、Ack等信息;4.發(fā)送方(源端)應(yīng)用層通知驅(qū)動(NDIS中間層)進(jìn)入攔截模式,并在驅(qū)動內(nèi)部模擬接收到RST包以復(fù)位雙方各自的TCP連接。
5.發(fā)送方(源端)利用獲得的套接字對信息構(gòu)造TCP數(shù)據(jù)包,使用NDIS技術(shù)發(fā)送,并阻止該連接上系統(tǒng)標(biāo)準(zhǔn)TCP數(shù)據(jù)包的發(fā)送。
6.接收方(目標(biāo)端)收到所有數(shù)據(jù)包后,判斷該數(shù)據(jù)包是否屬于本方法構(gòu)造的TCP數(shù)據(jù)包,如果是,先判斷該連接是否有未完成的IRP讀請求,如果有,直接完成該請求,否則把該數(shù)據(jù)包放入該連接的接收緩沖隊列中,并通知應(yīng)用層已經(jīng)收到數(shù)據(jù)包;如果不是,則直接放行,交給系統(tǒng)的上層TCP/IP協(xié)議棧處理。
7.數(shù)據(jù)通信完畢后,主動關(guān)斷方可以發(fā)送帶FIN標(biāo)志的數(shù)據(jù)包,指示對方斷開該連接。
在本發(fā)明中,所述源端和目標(biāo)端的操作可以互換。
本發(fā)明已經(jīng)進(jìn)行了實施試驗,實時傳輸性好,語音非常清晰,較好的實現(xiàn)了本發(fā)明的目的。
以上為本發(fā)明的較佳實施方式,依據(jù)本發(fā)明公開的內(nèi)容,本領(lǐng)域的普通技術(shù)人員能夠顯而易見地想到的一些雷同、替代方案,均落入本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種基于TCP協(xié)議實時傳輸媒體數(shù)據(jù)的方法,其特征在于,先通過標(biāo)準(zhǔn)的TCP協(xié)議棧建立通訊雙方的連接,然后通過底層網(wǎng)絡(luò)協(xié)議接口直接發(fā)送和接收數(shù)據(jù),媒體數(shù)據(jù)傳輸結(jié)束后,斷開連接。
2.根據(jù)權(quán)利要求1所述的基于TCP協(xié)議實時傳輸媒體數(shù)據(jù)的方法,其特征在于,包括如下步驟A.雙方連接源端通過標(biāo)準(zhǔn)的TCP協(xié)議棧直接與目標(biāo)端建立連接,并獲取該連接的套接字對信息,以及雙方TCP包的SEQ值、ACK值等;B.TCP數(shù)據(jù)封包源端封包模塊利用前述獲得的信息,根據(jù)網(wǎng)絡(luò)的MTU值,把要發(fā)送的數(shù)據(jù)拆分成適當(dāng)?shù)拇笮。庋b成TCP數(shù)據(jù)包;C.TCP數(shù)據(jù)發(fā)送源端的發(fā)送模塊將封裝好的TCP數(shù)據(jù)包交給底層網(wǎng)絡(luò)協(xié)議接口發(fā)送至目標(biāo)端;D.TCP數(shù)據(jù)處理目標(biāo)端的接收模塊接收全部TCP數(shù)據(jù)包,并判斷該數(shù)據(jù)包是否屬于本方法構(gòu)造的TCP數(shù)據(jù)包,如果是,則交給應(yīng)用層處理,否則,直接交給系統(tǒng)的TCP/IP協(xié)議棧的處理;E.斷開連接媒體數(shù)據(jù)傳輸結(jié)束后,要求關(guān)斷的一方發(fā)送帶FIN標(biāo)志的數(shù)據(jù)包,通知對方斷開連接。
3.根據(jù)權(quán)利要求2所述的基于TCP協(xié)議實時傳輸媒體數(shù)據(jù)的方法,其特征在于,所述步驟B前還執(zhí)行,源端通知底層驅(qū)動進(jìn)入攔截模式。
4.根據(jù)權(quán)利要求2所述的基于TCP協(xié)議實時傳輸媒體數(shù)據(jù)的方法,其特征在于,所述步驟C中還執(zhí)行,源端通知底層驅(qū)動阻止該連接上系統(tǒng)標(biāo)準(zhǔn)TCP數(shù)據(jù)包的發(fā)送。
5.根據(jù)權(quán)利要求2所述的基于TCP協(xié)議實時傳輸媒體數(shù)據(jù)的方法,其特征在于,所述步驟D中還執(zhí)行,在TCP數(shù)據(jù)包交給應(yīng)用層處理之前,先判斷該連接是否有未完成的IRP讀請求,如果有,直接完成該請求,否則把該數(shù)據(jù)包放入該連接的接收緩沖隊列中,并通知應(yīng)用層已經(jīng)收到數(shù)據(jù)包。
6.根據(jù)權(quán)利要求2或3或4或5所述的基于TCP協(xié)議實時傳輸媒體數(shù)據(jù)的方法,其特征在于,所述底層網(wǎng)絡(luò)協(xié)議接口位于TCP層之下,網(wǎng)卡之上。
全文摘要
本發(fā)明提供一種基于TCP協(xié)議實時傳輸媒體數(shù)據(jù)的方法,特別涉及一種媒體數(shù)據(jù)穿越網(wǎng)絡(luò)防火墻進(jìn)行實時數(shù)據(jù)傳輸?shù)姆椒?。本發(fā)明方法主要解決了在只允許TCP協(xié)議通過的防火墻環(huán)境中,媒體數(shù)據(jù)傳輸無法保證實時性的問題。其主要方法是先通過標(biāo)準(zhǔn)的TCP協(xié)議棧建立通訊雙方的連接,然后通過底層網(wǎng)絡(luò)協(xié)議接口在雙方直接發(fā)送和接收數(shù)據(jù),媒體數(shù)據(jù)傳輸結(jié)束后,斷開連接。這種方法的一個重要的特點(diǎn)是可以和所在的操作系統(tǒng)中的標(biāo)準(zhǔn)的TCP協(xié)議棧共同工作,從而增強(qiáng)了本方法的實用性。本方法的傳輸方式雖然不保證傳輸可靠,但傳輸實時性好,能提高上述網(wǎng)絡(luò)環(huán)境下進(jìn)行媒體通訊的質(zhì)量。
文檔編號H04L29/06GK101039319SQ20061012591
公開日2007年9月19日 申請日期2006年8月20日 優(yōu)先權(quán)日2006年8月20日
發(fā)明者尹國利 申請人:科博技術(shù)有限公司