數據接收、發送方法及裝置與流程
2023-05-29 08:44:06
![](https://img.xjishu.com/img/zl/2017/04/28/1338323572.gif)
本發明涉及通信領域,具體而言,涉及數據接收、發送方法及裝置。
背景技術:
隨著IPv4地址資源日漸枯竭,網絡地址轉換(Network Address Translation,簡稱為NAT)技術廣泛應用,原有的客戶端與服務端之間的數據傳輸流程可能不能適用於經由NAT組網的網絡系統。以實時流傳輸協議(Real Time Streaming Protocol,簡稱為RTSP)為例,RTSP是TCP/IP協議體系中的一個應用層協議,定義了應用程式如何有效地通過IP網絡傳送多媒體數據。圖1是相關技術中RTSP協議的交互流程圖,如圖1所示,RTSP客戶端和RTSP伺服器可以直接進行交互,十分方便。
但是,隨著NAT添加到相關的組網系統中,RTSP客戶端和服務端位於不同的NAT設備後,並且通過各自的NAT設備接入網際網路(Internet),在該種場景下,RTSP客戶端和RTSP服務端的直接訪問存在障礙。
針對相關技術中存在的當客戶端和服務端位於不同NAT設備後時,客戶端和服務端之間的直接訪問存在障礙的問題,目前尚未提出有效的解決方案。
技術實現要素:
本發明的主要目的在於提供一種數據接收、發送方法及裝置,以至少解決相關技術中存在的當客戶端和服務端位於不同NAT設備後時,導致客戶端和服務端之間的直接訪問存在障礙的問題。
為了實現上述目的,根據本發明的一個方面,提供了一種數據接收方法,包括:客戶端獲取所述客戶端的接收埠的信息和服務端的發送埠的信息,其中,所述接收埠用於所述客戶端接收數據,所述發送埠用於所述服務端發送數據,所述客戶端通過第一網絡地址轉換器NAT接入網絡;所述客戶端根據所述發送埠的信息通過所述第一NAT向所述服務端發送穿透報文,其中,所述穿透報文用於所述第一NAT記錄所述發送埠的信息和所述接收埠的信息的映射關係,所述映射關係用於允許所述服務端發送的數據通過穿透所述第一NAT到達所述客戶端;所述客戶端接收所述服務端發送的通過穿透所述第一NAT達到所述客戶端的數據。
可選地,客戶端獲取所述客戶端的接收埠的信息和服務端的發送埠的信息,包括:所述客戶端創建所述接收埠;所述客戶端獲取所述接收埠的信息;所述客戶端通過中繼伺服器向所述服務端發送用於請求獲取所述發送埠的信息的請求消息,其中,所述請求消息中攜帶有所述接收埠的信息,所述接收埠的信息用於所述服務端直接向所述接收埠發送數據;所述客戶端接收所述服務端根據所述請求消息通過所述中繼伺服器返回的響應消息,其中,所述響應消息中攜帶所述發送埠的信息。
可選地,所述客戶端接收所述服務端發送的通過穿透所述第一NAT到達所述客戶端的數據之後,還包括:所述客戶端通過中繼伺服器向所述服務端發送終止請求,其中,所述終止請求用於請求所述服務端停止向所述客戶端發送數據。
可選地,所述方法包括以下至少之一:所述客戶端包括實時流傳輸協議RTSP客戶端和/或所述服務端包括RTSP服務端;所述發送埠的信息包括所述發送埠的公網網際網路協議IP位址和NAT映射公網埠號;接收埠的信息包括所述接收埠的公網網際網路協議IP位址和NAT映射公網埠號。
根據本發明的另一個方面,還提供了另一種數據發送方法,包括:服務端向客戶端發送所述服務端的用於發送數據的發送埠的信息,其中,所述客戶端通過第一網絡地址轉換器NAT接入網絡,所述發送埠的信息用於所述客戶端通過所述第一NAT向所述服務端發送穿透報文,所述穿透報文用於所述第一NAT記錄所述發送埠的信息和所述客戶端的用於接收數據的接收埠的信息的映射關係,所述映射關係用於允許所述服務端發送的數據穿透所述第一NAT到達所述客戶端;所述服務端向所述客戶端發送數據,其中,所述數據通過所述第一NAT達到所述客戶端。
可選地,所述服務端向所述客戶端發送所述服務端的用於發送數據的發送埠的信息,包括:所述服務端通過中繼伺服器獲取所述客戶端發送的用於請求獲取所述發送埠的信息的請求消息,其中,所述請求消息中攜帶有所述接收埠的信息;所述服務端根據所述請求消息創建所述發送埠;所述服務端獲取所述發送埠的信息;所述服務端通過所述中繼伺服器向所述客戶端發送響應消息,其中,所述響應消息中攜帶所述發送埠的信息。
可選地,所述服務端通過第二NAT接入網絡,所述服務端通過中繼伺服器向客戶端發送所述服務端的用於發送數據的發送埠的信息包括:所述服務端通過所述第二NAT向所述中繼伺服器發送所述發送埠的信息,其中,所述發送埠的信息被所述中繼伺服器發送給所述客戶端,所述發送埠的信息用於所述第二NAT記錄所述發送埠的信息和所述接收埠的信息的映射關係,所述映射關係用於允許所述客戶端發送的數據通過穿透所述第二NAT到達所述服務端。
可選地,所述服務端向所述客戶端發送數據之後,還包括:所述服務端接收所述客戶端通過中繼伺服器發送的終止請求;所述服務端根據所述終止請求停止向所述客戶端發送數據。
可選地,所述方法包括以下至少之一:所述客戶端包括實時流傳輸協議RTSP客戶端和/或所述服務端包括RTSP服務端;所述發送埠的信息包括所述發送埠的公網網際網路協議IP位址和NAT映射公網埠號;接收埠的信息包括所述接收埠的公網網際網路協議IP位址和NAT映射公網埠號。
根據本發明的再一個方面,提供了一種數據接收裝置,應用於客戶端中,包括:獲取模塊,用於獲取所述客戶端的接收埠的信息和服務端的發送埠的信息,其中,所述接收埠用於所述客戶端接收數據,所述發送埠用於所述服務端發送數據,所述客戶端通過第一網絡地址轉換器NAT接入網絡;第一發送模塊,用於根據所述發送埠的信息通過所述第一NAT向所述服務端發送穿透報文,其中,所述穿透報文用於所述第一NAT記錄所述發送埠的信息和所述接收埠的信息的映射關係,所述映射關係用於允許所述服務端發送的數據通過穿透所述第一NAT到達所述客戶端;第一接收模塊,用於接收所述服務端發送的通過穿透所述第一NAT達到所述客戶端的數據。
可選地,所述獲取模塊包括:第一創建單元,用於創建所述接收埠;第一獲取單元,用於獲取所述接收埠的信息;第一發送單元,用於通過中繼伺服器向所述服務端發送用於請求獲取所述發送埠的信息的請求消息,其中,所述請求消息中攜帶有所述接收埠的信息,所述接收埠的信息用於所述服務端直接向所述接收埠發送數據;接收單元,用於接收所述服務端根據所述請求消息通過所述中繼伺服器返回的響應消息,其中,所述響應消息中攜帶所述發送埠的信息。
可選地,所述裝置還包括:第二發送模塊,用於通過中繼伺服器向所述服務端發送終止請求,其中,所述終止請求用於請求所述服務端停止向所述客戶端發送數據。
可選地,所述裝置包括以下至少之一:所述客戶端包括實時流傳輸協議RTSP客戶端和/或所述服務端包括RTSP服務端;所述發送埠的信息包括所述發送埠的公網網際網路協議IP位址和NAT映射公網埠號;接收埠的信息包括所述接收埠的公網網際網路協議IP位址和NAT映射公網埠號。
根據本發明的又一個方面,提供了又一種數據發送裝置,應用於服務端中,包括:第三發送模塊,用於向客戶端發送所述服務端的用於發送數據的發送埠的信息,其中,所述客戶端通過第一網絡地址轉換器NAT接入網絡,所述發送埠的信息用於所述客戶端通過所述第一NAT向所述服務端發送穿透報文,所 述穿透報文用於所述第一NAT記錄所述發送埠的信息和所述客戶端的用於接收數據的接收埠的信息的映射關係,所述映射關係用於允許所述服務端發送的數據穿透所述第一NAT到達所述客戶端;第四發送模塊,用於向所述客戶端發送數據,其中,所述數據通過所述第一NAT到達所述客戶端。
可選地,所述第三發送模塊包括:第二獲取單元,用於通過中繼伺服器獲取所述客戶端發送的用於請求獲取所述發送埠的信息的請求消息,其中,所述請求消息中攜帶有所述接收埠的信息;第二創建單元,用於根據所述請求消息創建所述發送埠;第三獲取單元,用於獲取所述發送埠的信息;第二發送單元,用於通過所述中繼伺服器向所述客戶端發送響應消息,其中,所述響應消息中攜帶所述發送埠的信息。
可選地,所述服務端通過第二NAT接入網絡,所述第三發送模塊包括:通過所述第二NAT向中繼伺服器發送所述發送埠的信息,其中,所述發送埠的信息被所述中繼伺服器發送給所述客戶端,所述發送埠的信息用於所述第二NAT記錄所述發送埠的信息和所述接收埠的信息的映射關係,所述映射關係用於允許所述客戶端發送的數據通過穿透所述第二NAT到達所述服務端。
可選地,所述裝置還包括:第二接收模塊,用於接收所述客戶端通過中繼伺服器發送的終止請求;終止模塊,用於根據所述終止請求停止向所述客戶端發送數據。
可選地,所述裝置包括以下至少之一:所述客戶端包括實時流傳輸協議RTSP客戶端和/或所述服務端包括RTSP服務端;所述發送埠的信息包括所述發送埠的公網網際網路協議IP位址和NAT映射公網埠號;接收埠的信息包括所述接收埠的公網網際網路協議IP位址和NAT映射公網埠號。
通過本發明,採用客戶端獲取所述客戶端的接收埠的信息和服務端的發送埠的信息,其中,所述接收埠用於所述客戶端接收數據,所述發送埠用於所述服務端發送數據,所述客戶端通過第一網絡地址轉換器NAT接入網絡;所述客戶端根據所述發送埠的信息通過所述第一NAT向所述服務端發送穿透報文,其中,所述穿透報文用於所述第一NAT記錄所述發送埠的信息和所述接收埠的信息的映射關係,所述映射關係用於允許所述服務端發送的數據通過穿透所述第一NAT到達所述客戶端;所述客戶端接收所述服務端發送的通過穿透所述第一NAT達到所述客戶端的數據的方式,使得客戶端和服務端可以直接收發數據,解決了相關技術中存在的當客戶端和服務端位於不同NAT設備後時,客戶端和服務端之間的直接訪問存在障礙的問題,能夠實現客戶端與服務端之間的直接訪問,提高了客戶端與服務端進行數據交互的效率。
附圖說明
此處所說明的附圖用來提供對本發明的進一步理解,構成本申請的一部分,本發明的示意性實施例及其說明用於解釋本發明,並不構成對本發明的不當限定。在附圖中:
圖1是相關技術中RTSP協議的交互流程圖;
圖2是根據本發明實施例的數據接收方法的流程圖;
圖3是根據本發明實施例的數據發送方法的流程圖;
圖4是根據本發明實施例的數據接收裝置的結構框圖;
圖5是根據本發明實施例的數據接收裝置中獲取模塊42的結構框圖;
圖6是根據本發明實施例的數據接收裝置的優選結構框圖;
圖7是根據本發明實施例的數據發送裝置的結構框圖;
圖8是根據本發明實施例的數據發送裝置中的第三發送模塊72的結構框圖;
圖9是根據本發明實施例的數據發送裝置的優選結構框圖;
圖10是根據本發明實施例的系統結構框圖;
圖11是根據本發明實施例的RTSP客戶端和服務端的交互流程圖。
具體實施方式
需要說明的是,在不衝突的情況下,本申請中的實施例及實施例中的特徵可以相互組合。下面將參考附圖並結合實施例來詳細說明本發明。
在附圖的流程圖示出的步驟可以在諸如一組計算機可執行指令的計算機系統中執行,並且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同於此處的順序執行所示出或描述的步驟。
以下實施例中的「第一」「第二」僅用於區分,並不對順序進行限定。
本發明實施例中提供了一種數據接收方法,圖2是根據本發明實施例的數據接收方法的流程圖,如圖2所示,該方法包括:
步驟S202:客戶端獲取客戶端的接收埠的信息和服務端的發送埠的信息,其中,接收埠用於客戶端接收數據,發送埠用於服務端發送數據,客戶端通過第一NAT接入網絡;
步驟S204:客戶端根據發送埠的信息通過第一NAT向服務端發送穿透報文,其中,該穿透報文用於第一NAT記錄發送埠的信息和接收埠的信息的 映射關係,該映射關係用於允許服務端發送的數據通過穿透第一NAT到達客戶端;
步驟S206:客戶端接收服務端發送的通過穿透第一NAT達到客戶端的數據。
通過上述各個處理步驟,使得客戶端和服務端可以直接根收發數據,解決了相關技術中存在的當客戶端和服務端位於不同的NAT設備後時,導致客戶端和服務端之間的直接訪問存在障礙的問題,能夠實現客戶端與服務端之間的直接訪問,提高了客戶端與服務端進行數據交互的效率。
在一個可選的實施例中,步驟S202可以通過以下步驟實現:客戶端創建接收數據的接收埠;客戶端獲取接收埠的信息;客戶端通過中繼伺服器向服務端發送用於請求獲取發送埠的信息的請求消息,其中,請求消息中攜帶有接收埠的信息,接收埠的信息用於服務端直接向接收埠發送數據;客戶端接收服務端根據請求消息通過中繼伺服器返回的響應消息,其中,響應消息中攜帶發送埠的信息。在該實施方式中,客戶端通過中繼伺服器將接收數據的接收埠的信息發送給服務端,可以使得服務端確定接收該服務端發送的數據的客戶端的接口,進而可以確定服務端發送數據時的目的地址,同時向服務端請求服務端用於發送數據的發送埠的信息,以向服務端發送穿透報文。
在一個可選的實施例中,在步驟S206之後,上述方法還包括:客戶端通過中繼伺服器向服務端發送終止請求,其中,該終止請求用於請求服務端停止向客戶端發送數據。在該可選的實施例中,當客戶端不需要接收服務端傳輸的數據後,可以通過發送請求的方式告知服務端,以使服務端斷開客戶端的直接通信,從而節省了系統資源。
上述記載的實施例中,客戶端可以包括實時流傳輸協議RTSP客戶端和/或服務端可以包括RTSP服務端;發送埠的信息可以包括發送埠的公網網際網路協議IP位址和NAT映射公網埠號;接收埠的信息可以包括接收埠的公網網際網路協議IP位址和NAT映射公網埠號。當然,上述客戶端和服務端也可以為除RTSP協議以外的其他客戶端與服務端,在此不再一一舉例。
上述實施例及實施方式是從客戶端的角度進行描述的,下面,從服務端的角度出發對本發明進行說明,在本發明的實施例中,還提供了一種數據發送方法,圖3是根據本發明實施例的數據發送方法的流程圖,如圖3所示,該方法包括:
步驟S302:服務端向客戶端發送服務端的用於發送數據的發送埠的信息,其中,客戶端通過第一NAT接入網絡,發送埠的信息用於客戶端通過第一NAT向服務端發送穿透報文,該穿透報文用於第一NAT記錄發送埠的信息和客戶端的用於接收數據的接收埠的信息的映射關係,該映射關係用於允許服務端發送的數據穿透第一NAT到達客戶端;
步驟S304:服務端向客戶端發送數據,其中,上述數據通過第一NAT達到客戶端。
通過上述各個處理步驟,可以使得客戶端和服務端可以直接收發數據,解決了相關技術中存在的當客戶端和服務端位於不同NAT設備後時,導致客戶端和服務端之間的直接訪問存在障礙的問題,從而實現客戶端與服務端之間的直接訪問,提高了客戶端與服務端進行數據交互的效率。
在一個可選的實施例中,步驟S302可以採取以下步驟實現:服務端通過中繼伺服器獲取客戶端發送的用於請求獲取發送埠的信息的請求消息,其中,該請求消息中攜帶有接收埠的信息;服務端根據請求消息創建發送埠;服務端獲取發送埠的信息;服務端通過中繼伺服器向客戶端發送響應消息,其中,該響應消息中攜帶發送埠的信息。在該可選的實施例中,服務端在向客戶端發送發送埠的信息之前,首先收到了客戶端的請求消息,並從該請求消息中獲取了客戶端接收埠的信息,從而方便直接與客戶端進行數據透傳。
在一個可選的實施例中,步驟S304可以根據以下步驟來實現:服務端通過第二NAT接入網絡,並通過第二NAT向中繼伺服器發送發送埠的信息,其中,該發送埠的信息被中繼伺服器發送給客戶端,該發送埠的信息用於第二NAT記錄該發送埠的信息和接收埠的信息的映射關係,該映射關係用於允許客戶端發送的數據通過穿透第二NAT到達服務端。在該實施例中,服務端側的第二NAT記錄客戶端接收埠的信息與服務端發送埠的信息之間的映射關係,方便客戶端的數據通過第二NAT透傳,直接發送到服務端。
在另一個可選的實施例中,在步驟S304之後,上述方法還可以包括:服務端接收客戶端通過中繼伺服器發送的終止請求;服務端根據終止請求停止向客戶端發送數據。在該可選的實施例中,在訪問完成後,服務端根據終止請求斷開與客戶端的直接通信,節省了系統資源。
上述的實施例中,客戶端可以包括實時流傳輸協議RTSP客戶端和/或服務端可以包括RTSP服務端;發送埠的信息包括發送埠的公網網際網路協議IP位址和NAT映射公網埠號;接收埠的信息包括接收埠的公網網際網路協議IP位址和NAT映射公網埠號。當然,上述的客戶端和服務端也可以為除RTSP協議以外的其他客戶端與服務端,在此不再一一舉例。
通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到根據上述實施例的方法可藉助軟體加必須的通用硬體平臺的方式來實現,當然也可以通過硬體,但很多情況下前者是更佳的實施方式。基於這樣的理解,本發明的技術方案本質上或者說對現有技術做出的貢獻的部分可以以軟體產品的形式體現出來,該計算機軟體產品存儲在一個存儲介質(如ROM/RAM、磁碟、光碟)中,包括 若干指令用以使得一臺中端設備(可以使手機,計算機,伺服器,或者網絡設備等)執行本發明各個實施例所述的方法。
本實施例中還提供了一種數據接收、發送裝置,該裝置用於實現上述數據接收、發送方法實施例及可選實施方式,已經進行過說明的在此不再贅述。如以下所使用的,術語「模塊」可以實現預定功能的軟體和/或硬體的組合。儘管以下實施例所描述的裝置較佳地以軟體來實現,但是硬體、或者軟體和硬體的組合的實現也是可能並被構想的。
圖4是根據本發明實施例的數據接收裝置的結構框圖,該裝置可以應用於客戶端中,如圖4所示,該裝置包括:獲取模塊42、第一發送模塊44和第一接收模塊46,下面對該裝置進行說明。
獲取模塊42,用於獲取客戶端的接收埠的信息和服務端的發送埠的信息,其中,接收埠用於客戶端接收數據,發送埠用於服務端發送數據,客戶端通過第一NAT接入網絡;第一發送模塊44,連接於上述獲取模塊42,用於根據發送埠的信息通過第一NAT向服務端發送穿透報文,其中,該穿透報文用於第一NAT記錄發送埠的信息和接收埠的信息的映射關係,該映射關係用於允許服務端發送的數據通過穿透第一NAT到達客戶端;第一接收模塊46,連接於第一發送模塊44,用於接收服務端發送的通過穿透第一NAT達到客戶端的數據。
圖5是根據本發明實施例的數據接收裝置中獲取模塊42的結構框圖,如圖5所示,獲取模塊42包括:第一創建單元52、第一獲取單元54、第一發送單元56和接收單元58,下面對該裝置進行說明。
第一創建單元52,用於創建用於接收數據的接收埠;第一獲取單元54,連接於第一創建單元52,用於獲取接收埠的信息,其中,該接收埠的信息用於服務端確定接收數據的埠;第一發送單元56,連接於第一獲取單元54,用於通過中繼伺服器向服務端發送用於請求獲取發送埠的信息的請求消息,其中,請求消息中攜帶有接收埠的信息,接收埠的信息用於服務端直接向接收埠發送數據;接收單元58,連接於第一發送單元56,用於接收服務端根據請求消息通過中繼伺服器返回的響應消息,其中,響應消息中攜帶發送埠的信息。
圖6是根據本發明實施例的數據接收裝置的優選結構框圖,如圖6所示,該裝置除包括圖4所示的所有模塊外,還包括:第二發送模塊62,下面對該裝置進行說明。
第二發送模塊62,連接至第一接收模塊46,用於通過中繼伺服器向服務端發送終止請求,其中,該終止請求用於請求服務端停止向客戶端發送數據。
上述所記載的數據發送裝置的實施例及實施方式中,客戶端可以包括實時流傳輸協議RTSP客戶端,服務端可以包括RTSP服務端;發送埠的信息可以包括發送埠的公網網際網路協議IP位址和NAT映射公網埠號;接收埠的信息可以包括接收埠的公網網際網路協議IP位址和NAT映射公網埠號。
上述數據發送裝置是從客戶端的角度來進行描述的,下面,從服務端的角度來對數據發送裝置的實施例及實施方式進行描述。
圖7是根據本發明實施例的數據發送裝置的結構框圖,該裝置可以應用於服務端中,如圖7所示,該裝置包括:第三發送模塊72和第四發送模塊74,下面對該裝置進行說明。
第三發送模塊72,用於向客戶端發送服務端的用於發送數據的發送埠的信息,其中,客戶端通過第一NAT接入網絡,發送埠的信息用於客戶端通過第一NAT向服務端發送穿透報文,該穿透報文用於第一NAT記錄發送埠的信息和客戶端的用於接收數據的接收埠的信息的映射關係,該映射關係用於允許服務端發送的數據穿透第一NAT到達客戶端;第四發送模塊74,連接於第三發送模塊72,用於向客戶端發送數據,其中,上述數據通過第一NAT到達客戶端。
圖8是根據本發明實施例的數據發送裝置中的第三發送模塊72的結構框圖,如圖8所示,第三發送模塊72還包括:第二獲取單元82、第二創建單元84、第三獲取單元86和第二發送單元88,下面對該裝置進行說明。
第二獲取單元82,用於通過中繼伺服器獲取客戶端發送的用於請求獲取發送埠的信息的請求消息,其中,該請求消息中攜帶有接收埠的信息;第二創建單元84,連接於第二獲取單元82,用於根據請求消息創建發送埠;第三獲取單元86,連接於第二創建單元84,用於獲取發送埠的信息;第二發送單元88,連接於第三獲取單元86,用於通過中繼伺服器向客戶端發送響應消息,其中,該響應消息中攜帶發送埠的信息。
在一個可選的實施例中,上述服務端通過第二NAT接入網絡,第三發送模塊72可以包括:通過第二NAT向中繼伺服器發送發送埠的信息,其中,發送埠的信息被中繼伺服器發送給客戶端,發送埠的信息用於第二NAT記錄發送埠的信息和接收埠的信息的映射關係,映射關係用於允許客戶端發送的數據通過穿透第二NAT到達服務端。
圖9是根據本發明實施例的數據發送裝置的優選結構框圖,如圖9所示,該裝置除包括圖7所示的所有模塊外,還包括:第二接收模塊92和終止模塊94,下面對該裝置進行說明。
第二接收模塊92,連接至上述第四發送模塊74,用於接收客戶端通過中繼 伺服器發送的終止請求;終止模塊94,連接於第二接收模塊92,用於根據該終止請求停止向客戶端發送數據。
上述數據發送模塊的實施例及實施方式中,客戶端可以包括RTSP客戶端、服務端可以包括RTSP服務端;發送埠的信息可以包括發送埠的公網網際網路協議IP位址和NAT映射公網埠號;接收埠的信息可以包括接收埠的公網網際網路協議IP位址和NAT映射公網埠號。
需要說明的是,上述各個模塊是可以通過軟體或硬體來實現的,對於後者,可以表現為以下形式,但不限於此,其中,第三發送模塊72和第四發送模塊74可以位於同一處理器中,或者,第三發送模塊72和第四發送模塊74也可以分別位於第一處理器和第二處理器中。
下面以RTSP客戶端和RTSP服務端為例,對本發明進行舉例說明。圖10是根據本發明實施例的系統結構框圖,如圖10所示,本實施例針對RTSP客戶端和伺服器端分別位於不同NAT設備之後的組網場景,為了實現RTSP客戶端對服務端的直接訪問,RTSP客戶端和伺服器端首先通過TCP中繼伺服器建立起RTSP會話,在RTSP SETUP消息交互之前向NAT的用戶數據協議(User Datagram Protocol,簡稱為UDP)簡單穿越(Simple Transversal of UDP over nats,簡稱為STUN)伺服器獲取各自的實時傳輸協議(Real Time Transport Protocol,簡稱為RTP)、RTP控制協議(RTP Control Protocol,簡稱為RTCP)埠公網映射地址,在RTSP建立SETUP消息中交換各自的RTP、RTCP公網映射地址,並向對端的RTP、RTCP公網地址發送UDP穿透報文在各自的NAT設備上形成記錄,使對端的RTP、RTCP報文能夠穿越自己的NAT設備。下面對本實施例中的上述方法進行具體描述:
步驟1):RTSP客戶端向中繼伺服器發送選擇OPTION、描述DESCRIBE請求,中繼伺服器轉發RTSP服務端響應;
步驟2):RTSP客戶端創建用於接收RTP數據報文的UDP埠,並通過STUN協議獲取該埠公網IP位址及NAT映射公網埠號;
步驟3):RTSP客戶端發送SETUP請求至中繼伺服器,RTP地址為接收埠公網地址及埠號;
步驟4)RTSP服務端創建RTP發送埠,並通過STUN協議獲取該埠公網地址及NAT映射公網埠號;
步驟5):中繼伺服器轉發RTSP服務端SETUP響應,RTP地址為發送端公網地址及埠號;
步驟6):RTSP客戶端發送並接收到PLAY響應後,發送RTP UDP穿透報 文;
步驟7):RTSP服務端向客戶端發送UDP數據報文;
步驟8):RTSP客戶端發送TEARDOWN請求至中繼伺服器後流程結束。
與相關技術相比較,在本實施例中,可以使位於不同NAT設備之後的RTSP客戶端和服務端之間點到點的實時流傳輸成為可能。提高了RTSP客戶端和服務端之間的數據實時傳輸的效率。
在圖10中,RTSP客戶端(如裝有相關應用程式(Application,簡稱為APP)的手機、平板電腦等)和RTSP服務端(如可產生實時音視頻流的攝像頭等)位於NAT路由器之後,位於NAT設備之後的RTSP客戶端想要獲取位於NAT設備之後的RTSP伺服器上的音視頻流,也可以按照本發明實施例紅提供的方法實現,具體描述如下:
首先在公網環境中部署RTSP中繼伺服器和STUN伺服器,中繼伺服器用來轉發客戶端和服務端的請求與響應,STUN伺服器用來協助位於NAT後的客戶端和服務端穿越NAT。
圖11是根據本發明實施例的RTSP客戶端和服務端的交互流程圖,如圖11所示,該流程包括如下步驟:
步驟S1102:基於RTSP協議,客戶端向中繼伺服器發送OPTION、DESCRIBE請求,中繼伺服器將客戶端的請求轉發到服務端,並將服務端的響應轉發給客戶端,如圖11中的消息1-8。
步驟S1104:收到DESCRIBE響應後,RTSP客戶端創建用於接收RTP數據報文的UDP埠,並通過STUN協議獲取該埠公網IP位址及NAT映射公網埠號,如圖11中的消息9,並在下一步發送SETUP請求中將獲取到的公網IP及埠號公布出去。
步驟S1106:RTSP客戶端通過STUN協議獲取到公網IP及NAT映射公網埠號後,發送SETUP請求至中繼伺服器,RTP地址為客戶端接收埠公網地址及埠號;中繼伺服器轉發SETUP請求至服務端,服務端創建RTP發送埠,並通過STUN協議獲取該埠的公網地址及NAT映射公網埠號;隨後服務端發送SETUP響應至中繼伺服器,SETUP響應中的RTP地址為發送端公網地址及埠號,中繼伺服器將SETUP響應轉發到客戶端,如圖11中的消息10-14。至此,客戶端和服務端已經知道了對端的公網IP位址及NAT映射公網埠號。
步驟S1108:RTSP客戶端向中繼伺服器發送PLAY請求,中繼伺服器將PLAY請求轉發到服務端,服務端回復PLAY響應,中繼伺服器向客戶端轉發PLAY響應,如圖11中的消息15-18。
步驟S1110:客戶端收到PLAY響應後,向服務端(步驟S1306中獲取到的發送端公網地址)發送RTP UDP穿透報文,如圖11中的消息19。發送該消息後,在客戶端連接的NAT路由上形成記錄,此後,從服務端發送過來的UDP數據報文即可穿越NAT到達客戶端。
至此,位於NAT後的RTSP客戶端可以直接從同樣位於NAT後的服務端獲取音視頻流。
步驟S1112,RTSP客戶端可以通過發送TEARDOWN請求至中繼伺服器來結束音視頻流的請求,如圖11中的消息21-24。
綜上所述,本發明實施例的技術方案能夠達到以下有益效果:使位於不同NAT設備之後的RTSP客戶端和服務端之間進行點到點的實時流傳輸,RTSP客戶端可以較快、效率較高的從RTSP服務端獲得音視頻流,並在獲取完成後結束RTSP客戶端與服務端之間的通信,提高了系統資源的利用率。
需要說明的是,上述各個模塊是可以通過軟體或硬體來實現的,對於後者,可以通過以下方式實現,但不限於此:上述模塊均位於同一處理器中;或者,上述模塊分別位於多個處理器中。
在另外一個實施例中,還提供了一種存儲介質,可選地,在本實施例中,上述存儲介質可以被設置為存儲用於執行以下步驟的程序代碼:
S1,客戶端獲取客戶端的接收埠的信息和服務端的發送埠的信息,其中,接收埠用於客戶端接收數據,發送埠用於服務端發送數據,客戶端通過第一NAT接入網絡;
S2,客戶端根據發送埠的信息通過第一NAT向服務端發送穿透報文,其中,該穿透報文用於第一NAT記錄發送埠的信息和接收埠的信息的映射關係,該映射關係用於允許服務端發送的數據通過穿透第一NAT到達客戶端;
S3,客戶端接收服務端發送的通過穿透第一NAT到達客戶端的數據。
可選地,在本實施例中,上述存儲介質還可以被設置為存儲用於執行以下步驟的程序代碼:
S1,服務端向客戶端發送服務端的用於發送數據的發送埠的信息,其中,客戶端通過第一NAT接入網絡,發送埠的信息用於客戶端通過第一NAT向服務端發送穿透報文,該穿透報文用於第一NAT記錄發送埠的信息和客戶端的用於接收數據的接收埠的信息的映射關係,該映射關係用於允許伺服器發送的數據穿透第一NAT到達客戶端;
S2,服務端向客戶端發送數據,其中,上述數據通過第一NAT達到客戶端。
可選地,該存儲介質中存儲有上述軟體,該存儲介質包括但不限於:U盤、只讀存儲器(Read-Only Memory,簡稱為ROM)、隨即存取存儲器(Random Access Memory,簡稱為RAM)、光碟、軟盤、移動硬碟、磁碟、可擦寫存儲器等各種可以存儲程序代碼的介質。
以上僅為本發明的可選實施例而已,並不用於限制本發明,對於本領域的技術人員來說,本發明可以有各種更改和變化。凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護範圍之內。