数据接收、发送方法及装置与流程

文档序号:12625825阅读:310来源:国知局
数据接收、发送方法及装置与流程

本发明涉及通信领域,具体而言,涉及数据接收、发送方法及装置。



背景技术:

随着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)、光盘、软盘、移动硬盘、磁盘、可擦写存储器等各种可以存储程序代码的介质。

以上仅为本发明的可选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1