專利名稱:一種用于媒體流傳輸和網絡測量的實時數據傳輸控制方法
技術領域:
本發(fā)明涉及一種用于實時性應用的數據傳輸控制方法,確切地說,涉及一種用于媒體流傳輸和網絡測量等的實時數據傳輸控制方法,屬于互聯(lián)網通信技術領域。
背景技術:
隨著互聯(lián)網的迅猛發(fā)展,傳輸控制協(xié)議TCP(Transmission Control Protocol)和用戶數據報協(xié)議UDP(User Datagram Protocol)得到了廣泛應用。其中,TCP協(xié)議提供的是面向連接、可靠的數據流傳輸服務;UDP協(xié)議提供的是無連接的、不可靠的、盡力的數據流傳輸服務,它只是把應用進程的數據封裝成UDP數據包,并通過IP層發(fā)送出去,它不保證這些數據能正確到達目的地。
在使用TCP協(xié)議時,兩個應用進程在彼此交換數據之前,必須先通過三次握手協(xié)議,建立一個TCP連接,然后通過該TCP連接發(fā)送數據,同時通過差錯控制和流量控制機制來保證所發(fā)送的數據正確達到目的地;使用UDP協(xié)議時,應用進程無需建立連接,無需執(zhí)行差錯控制和流量控制。TCP協(xié)議保證了數據傳輸的可靠性,但是它的數據傳輸速率相對較慢;而UDP協(xié)議保證了數據傳輸的高速率以及實時性,但是它提供的是不可靠的、盡力的數據流傳輸服務。
從傳輸實時數據上看,由于TCP協(xié)議提供的是可靠的數據流傳輸服務,因此,在傳輸數據的時候要執(zhí)行重傳機制、滑動窗口等操作,這些操作雖然保證了數據傳輸的可靠性,但同時也破壞了數據傳輸的實時性;而UDP協(xié)議在傳輸數據的時候并不執(zhí)行任何差錯控制和流量控制,它所提供的盡力的數據流傳輸服務可以保證數據的實時性。
從網絡安全的角度上看,由于TCP傳輸需要通過三次握手協(xié)議建立連接,因此,防火墻可以通過監(jiān)視TCP連接的激活情況來保證只有本地安全策略授權的通信才允許通過防火墻。由于UDP不需要建立連接,所有以給定端口號為發(fā)送目標的數據均送往同一進程,而不管其源地址或端口號,所以黑客可以通過偽裝某一個源地址或端口號向某個端口號發(fā)送大量UDP數據包進行惡意攻擊。為了防止這種安全隱患的發(fā)生,防火墻通常會阻斷UDP數據。
隨著網絡帶寬的增長,媒體流的應用迅速發(fā)展,媒體流在整個網絡流量中所占的比例迅速增長,使用什么傳輸協(xié)議來傳輸媒體流是一個急需解決的問題。目前,大多使用的是UDP協(xié)議,因為UDP可以保證數據傳輸的實時性。但是,現在很多網絡為了保證自身的安全性都使用了防火墻等安全措施,防火墻會阻斷UDP數據,這樣就意味著這些媒體流不能到達目的地。在這種情況下,若使用TCP協(xié)議來傳輸媒體流,那么這些媒體流就能夠通過防火墻到達目的地,但是對于媒體流的應用來說,TCP不能保證數據的實時性是一個致命的缺陷。
在網絡測量方面也存在著同樣的問題。目前,大多使用UDP協(xié)議來發(fā)送測量探測包進行主動測量,因為UDP協(xié)議的數據傳輸速率比較高。但由于防火墻的存在,使得UDP測量探測包不能到達目的主機,這也就意味著不能完成測量任務。在這種情況下,若使用TCP協(xié)議來發(fā)送探測包,就可以完成測量任務。但是,發(fā)送探測包的速率非常慢則是使用TCP協(xié)議的一個重大缺陷。
由此可見,UDP協(xié)議和TCP協(xié)議都不能完全滿足媒體流傳輸和網絡測量等實時性應用的需要。而且,在現有的各種傳輸層通信協(xié)議中,沒有能夠將TCP連接建立過程和UDP協(xié)議方式的收發(fā)數據包的通信過程結合在一起的通信協(xié)議。如何綜合上述兩種協(xié)議的優(yōu)點,建立一種能夠將TCP連接建立過程和能滿足實時性應用需要的數據傳輸過程結合在一起的數據通信協(xié)議或者數據傳輸的實現方法,成為許多業(yè)內人士的期望和關注。
發(fā)明內容
本發(fā)明的目的是提供一種用于媒體流傳輸和網絡測量的實時數據傳輸控制方法,該方法為媒體流傳輸和網絡測量等實時性應用的數據傳輸提供了一種簡便、高效、實時的實現方法。
本發(fā)明的目的是這樣實現的一種用于媒體流傳輸和網絡測量的實時數據傳輸控制方法,其特征在于先在需要進行通信的兩端主機間建立TCP連接,再在該兩端主機之間按照適用于實時性應用的UDP協(xié)議方式傳輸數據,并在數據傳輸過程結束后,釋放該TCP連接。
該方法包括下列步驟A、三次握手建立TCP連接先由請求建立連接的源端向目的端發(fā)送建立連接請求,目的端在接收到該請求后,發(fā)送一個確認信息到源端,源端在接收到該確認信息后,再向目的端發(fā)回一個確認信息,表示TCP連接建立過程結束;B、進行UDP方式的數據傳輸源端不斷地從發(fā)送隊列中取出數據把它封裝成TCP包,并發(fā)送到目的端,直到其將要發(fā)送的數據全部發(fā)送完畢;在該發(fā)送數據的過程中不必等待目的端的確認信息,也不執(zhí)行任何差錯控制和流量控制的操作;同時,目的端不斷地從接收隊列中接收數據,直到全部數據接收完畢;在該接收數據的過程中不必對每個數據包發(fā)送確認信息,也不執(zhí)行任何差錯控制和流量控制的操作;C、釋放TCP連接在數據傳輸過程結束后,任何一端都可以主動發(fā)送釋放連接請求,釋放TCP連接;其中一端主動發(fā)送連接釋放請求,另一端在收到該請求后,發(fā)回一個確認信息,就釋放了一個方向的連接;然后另一端再發(fā)送連接釋放請求,對端在接收到該請求后,也發(fā)回一個確認信息,就會釋放另一個方向的連接,這樣該TCP連接就釋放了。
所述三次握手建立TCP連接的具體操作步驟如下A1、源端發(fā)送建立連接請求包,即TCP包頭中的SYN位置位,該請求包的序號為一個隨機的初始化序號X;A2、目的端在接收到該建立連接請求包后,向源端發(fā)回一個該建立連接請求包的確認包,即TCP包頭中的SYN位和ACK位都置位,該確認包的序號為另一個隨機的初始化序號Y,確認序號為X+1;
A3、源端在接收到該確認包后,再向目的端發(fā)回一個對該確認包的確認信息,即TCP包頭中的ACK位置位,該確認包的序號為X+1,確認序號為Y+1;A4、目的端接收該確認包,表示TCP連接建立過程結束。
所述進行UDP方式的數據傳輸的具體操作步驟如下B1、源端不斷地把發(fā)送隊列中的數據封裝成TCP包,并發(fā)送到目的端,直到其發(fā)送隊列中沒有數據發(fā)送為止,在該發(fā)送數據的過程中不必等待目的端發(fā)回確認信息;也不執(zhí)行任何差錯控制和流量控制的操作;B2、目的端不斷地從接收隊列中接收數據,直到接收隊列中沒有數據為止,在該接收數據的過程中不必對每個數據包發(fā)送確認信息,也不執(zhí)行任何差錯控制和流量控制的操作。
所述釋放TCP連接的具體操作步驟如下C1、當應用進程要求關閉連接時,源端發(fā)送連接釋放請求包,即TCP包頭中的FIN位置位,該請求包的序號為x,且x=X+n,式中X為源端發(fā)送的第一個TCP包的初始序號,n為源端已經發(fā)送出去的數據字節(jié)數;C2、目的端在接收到該連接釋放請求包后,通知應用進程并發(fā)回一個對該請求包的確認包,即TCP包頭中的ACK位置位,該確認包的確認序號為x+1;當源端接收到該確認包后,就釋放了一個方向的連接;C3、目的端發(fā)送連接釋放請求包,即TCP包頭中的FIN位置位,該請求包的序號為y,且y=Y+m;式中Y為目的端發(fā)送的第一個TCP包的初始序號,m為目的端已經發(fā)送出去的數據字節(jié)數;C4、源端在接收到該連接釋放請求包后,通知應用進程并發(fā)回一個對該請求包的確認包,即TCP包頭中的ACK位置位,該確認包的確認序號為y+1;當目的端接收到該確認包后,就釋放了另一個方向的連接。
所述源端和目的端的操作可以互換進行。
本發(fā)明是一種用于媒體流傳輸和網絡測量等的實時數據傳輸控制方法,該方法在發(fā)送數據之前,首先在需要進行通信的兩端主機間通過防火墻建立一個TCP連接,然后在數據傳輸過程中不執(zhí)行TCP協(xié)議定義的差錯控制和流量控制的操作,而是采用適合于實時性應用的發(fā)送方式,即UDP協(xié)議方式來傳輸數據。
本發(fā)明的優(yōu)點是在需要進行通信的兩端主機間通過防火墻建立一個TCP連接后,采用適合于實時性應用的發(fā)送方式,即UDP協(xié)議方式來傳輸數據,這樣既可以提高發(fā)送數據的速率,保證數據的實時性,又可以防止防火墻阻斷數據傳輸。該方法可以應用于需要穿過防火墻進行實時性數據傳輸的應用場合,例如IP電話、媒體流的傳輸、網絡測量的探測數據流;也可以應用于任何既要使數據能夠安全地通過防火墻到達主機、又要高速率發(fā)送數據的情況中。
圖1是本發(fā)明用于媒體流傳輸和網絡測量等的實時數據傳輸控制方法的流程方框圖。
圖2是本發(fā)明用于媒體流傳輸和網絡測量等的實時數據傳輸控制方法的具體操作步驟流程圖。
具體實施例方式
本發(fā)明是一種用于媒體流傳輸和網絡測量等的實時數據傳輸控制方法,其是先在需要進行通信的兩端主機間通過防火墻建立一個TCP連接后,采用適合于實時性應用的發(fā)送方式,例如UDP協(xié)議方式在該兩端主機之間傳輸數據;即在數據傳輸過程中不執(zhí)行任何差錯控制和流量控制的操作,如同UDP協(xié)議中定義的那樣,它只是把應用進程的數據封裝成TCP數據包,并通過IP層發(fā)送出去,它不保證這些數據能夠正確到達目的地。在完成數據傳輸后,再釋放該TCP連接。
參見圖1,本發(fā)明的數據傳輸控制方法包括下列三個主要步驟A、三次握手建立TCP連接先由請求建立連接的源端向目的端發(fā)送建立連接請求,目的端在接收到該請求后,發(fā)送一個確認信息到源端,源端在接收到該確認信息后,再向目的端發(fā)回一個確認信息,表示TCP連接建立過程結束;
B、進行UDP方式的數據傳輸源端不斷地從發(fā)送隊列中取出數據把它封裝成TCP包,并發(fā)送到目的端,直到其將要發(fā)送的數據全部發(fā)送完畢;在該發(fā)送數據的過程中不必等待目的端的確認信息,也不執(zhí)行任何差錯控制和流量控制的操作;同時,目的端不斷地從接收隊列中接收數據,直到全部數據接收完畢;在該接收數據的過程中不必對每個數據包發(fā)送確認信息,也不執(zhí)行任何差錯控制和流量控制的操作;C、釋放TCP連接在數據傳輸過程結束后,任何一端都可以主動發(fā)送釋放連接請求,釋放TCP連接;其中一端主動發(fā)送連接釋放請求,另一端在收到該請求后,發(fā)回一個確認信息,就釋放了一個方向的連接;然后另一端再發(fā)送連接釋放請求,對端在接收到該請求后,也發(fā)回一個確認信息,就會釋放另一個方向的連接,這樣該TCP連接就釋放了。
需要說明的是,上述的源端和目的端的操作可以互換進行。
參見圖2,說明本發(fā)明的具體操作步驟1、圖中步驟(1)-(3)是TCP連接建立的全過程,即三次握手協(xié)議。只有這三個包全部正確地到達其目的地,該TCP連接才能成功建立。其中TCP包頭中的ACK(Acknowledgement)位表示對TCP包的確認;SYN(Synchronization)位表示請求建立連接。
2、圖中步驟(4)-(9)是UDP方式的數據傳輸的過程。TCP連接是一個雙向連接,兩個方向都可以收發(fā)數據。原來的TCP協(xié)議中定義的數據傳輸過程中,使用了重傳機制、滑動窗口、慢啟動、擁塞避免等等機制來保證數據流傳輸的可靠性,但是,本發(fā)明的數據傳輸過程是適用于實時性應用的UDP傳輸方式。在收發(fā)數據的過程中不使用任何差錯控制和流量控制機制,而是像UDP協(xié)議那樣不斷地發(fā)送或接收數據,而不管數據是否可靠地傳輸到目的端。
3、圖中步驟(10)-(13)是釋放TCP連接的全過程。TCP連接是一個雙向連接,如果要完全釋放一個TCP連接的話,必須分別釋放這兩個方向的連接。其中(10)和(11)這兩個步驟釋放了端點A到端點B方向的連接,這就意味這端點A不能再發(fā)送數據到端點B,但是此時端點B還能發(fā)送數據到端點A。(12)和(13)這兩個步驟釋放了端點B到端點A方向的連接,即該TCP連接完全釋放,端點A和端點B之間不再能發(fā)送數據;除非重新建立一個TCP連接。圖中TCP包頭中的FIN位表示應用進程已經沒有數據可以發(fā)送,于是通知對端釋放該方向的連接。
本發(fā)明已經進行了實施試驗,該試驗是采用對linux內核代碼中原有的TCP協(xié)議實現部分進行修改,實現了本發(fā)明在TCP連接上提供UDP協(xié)議方式的適用于實時性應用的傳輸方式。其中主要是對linux內核代碼中網絡部分跟TCP收發(fā)數據有關的函數進行相應的修改,即是在原TCP收發(fā)數據的函數省略一切跟流量控制和差錯控制有關的操作,以及與此有關的判斷條件,保留原有的發(fā)送隊列和接收隊列,以及對這些隊列的操作。修改后進行的試驗結果是成功的,實現了發(fā)明目的。
權利要求
1.一種用于媒體流傳輸和網絡測量的實時數據傳輸控制方法,其特征在于先在需要進行通信的兩端主機間建立TCP連接,再在該兩端主機之間按照適用于實時性應用的UDP協(xié)議方式傳輸數據,并在數據傳輸過程結束后,釋放該TCP連接。
2.根據權利要求1所述的數據傳輸控制方法,其特征在于該方法包括下列步驟A、三次握手建立TCP連接先由請求建立連接的源端向目的端發(fā)送建立連接請求,目的端在接收到該請求后,發(fā)送一個確認信息到源端,源端在接收到該確認信息后,再向目的端發(fā)回一個確認信息,表示TCP連接建立過程結束;B、進行UDP方式的數據傳輸源端不斷地從發(fā)送隊列中取出數據把它封裝成TCP包,并發(fā)送到目的端,直到其將要發(fā)送的數據全部發(fā)送完畢;在該發(fā)送數據的過程中不必等待目的端的確認信息,也不執(zhí)行任何差錯控制和流量控制的操作;同時,目的端不斷地從接收隊列中接收數據,直到全部數據接收完畢;在該接收數據的過程中不必對每個數據包發(fā)送確認信息,也不執(zhí)行任何差錯控制和流量控制的操作;C、釋放TCP連接在數據傳輸過程結束后,任何一端都可以主動發(fā)送釋放連接請求,釋放TCP連接;其中一端主動發(fā)送連接釋放請求,另一端在收到該請求后,發(fā)回一個確認信息,就釋放了一個方向的連接;然后另一端再發(fā)送連接釋放請求,對端在接收到該請求后,也發(fā)回一個確認信息,就會釋放另一個方向的連接,這樣該TCP連接就釋放了。
3.根據權利要求2所述的數據傳輸控制方法,其特征在于所述三次握手建立TCP連接的具體操作步驟如下A1、源端發(fā)送建立連接請求包,即TCP包頭中的SYN位置位,該請求包的序號為一個隨機的初始化序號X;A2、目的端在接收到該建立連接請求包后,向源端發(fā)回一個該建立連接請求包的確認包,即TCP包頭中的SYN位和ACK位都置位,該確認包的序號為另一個隨機的初始化序號Y,確認序號為X+1;A3、源端在接收到該確認包后,再向目的端發(fā)回一個對該確認包的確認信息,即TCP包頭中的ACK位置位,該確認包的序號為X+1,確認序號為Y+1;A4、目的端接收該確認包,表示TCP連接建立過程結束。
4.根據權利要求2所述的數據傳輸的控制方法,其特征在于所述進行UDP方式的數據傳輸的具體操作步驟如下B1、源端不斷地把發(fā)送隊列中的數據封裝成TCP包,并發(fā)送到目的端,直到其發(fā)送隊列中沒有數據發(fā)送為止,在該發(fā)送數據的過程中不必等待目的端發(fā)回確認信息;也不執(zhí)行任何差錯控制和流量控制的操作;B2、目的端不斷地從接收隊列中接收數據,直到接收隊列中沒有數據為止,在該接收數據的過程中不必對每個數據包發(fā)送確認信息,也不執(zhí)行任何差錯控制和流量控制的操作。
5.根據權利要求2所述的數據傳輸控制方法,其特征在于所述釋放TCP連接的具體操作步驟如下C1、當應用進程要求關閉連接時,源端發(fā)送連接釋放請求包,即TCP包頭中的FIN位置位,該請求包的序號為x,且x=X+n,式中X為源端發(fā)送的第一個TCP包的初始序號,n為源端已經發(fā)送出去的數據字節(jié)數;C2、目的端在接收到該連接釋放請求包后,通知應用進程并發(fā)回一個對該請求包的確認包,即TCP包頭中的ACK位置位,該確認包的確認序號為x+1;當源端接收到該確認包后,就釋放了一個方向的連接;C3、目的端發(fā)送連接釋放請求包,即TCP包頭中的FIN位置位,該請求包的序號為y,且y=Y+m;式中Y為目的端發(fā)送的第一個TCP包的初始序號,m為目的端已經發(fā)送出去的數據字節(jié)數;C4、源端在接收到該連接釋放請求包后,通知應用進程并發(fā)回一個對該請求包的確認包,即TCP包頭中的ACK位置位,該確認包的確認序號為y+1;當目的端接收到該確認包后,就釋放了另一個方向的連接。
6.根據權利要求4或5所述的數據傳輸控制方法,其特征在于所述源端和目的端的操作可以互換進行。
全文摘要
一種用于媒體流傳輸和網絡測量的實時數據傳輸控制方法,該方法包括三個主要步驟先使用三次握手建立TCP連接;然后采用適合于實時性應用的UDP協(xié)議方式傳輸數據,即在數據傳輸過程中不執(zhí)行TCP協(xié)議定義的差錯控制和流量控制的操作;最后在完成數據傳輸后,釋放TCP連接。這樣既防止了防火墻阻斷數據傳輸,又保證數據傳遞的實時性,提高發(fā)送數據的速率。該方法可應用于需要穿過防火墻的實時性應用場合,例如IP電話、媒體流的傳輸、網絡測量的探測數據流等;也可應用于任何既要使數據能夠安全地通過防火墻到達主機、又要高速率發(fā)送數據的情況中。本發(fā)明為媒體流傳輸和網絡測量等實時性應用數據的發(fā)送和接收提供了一種簡便、高效、實時的傳輸實現方法。
文檔編號H04L29/06GK1545294SQ20031011367
公開日2004年11月10日 申請日期2003年11月19日 優(yōu)先權日2003年11月19日
發(fā)明者耿毅, 林宇, 金躍輝, 龔向陽, 王文東, 荊雷, 耿 毅 申請人:北京郵電大學