CN117640594A - 数据传输方法、装置、设备、存储介质和计算机程序产品 - Google Patents
数据传输方法、装置、设备、存储介质和计算机程序产品 Download PDFInfo
- Publication number
- CN117640594A CN117640594A CN202210958709.7A CN202210958709A CN117640594A CN 117640594 A CN117640594 A CN 117640594A CN 202210958709 A CN202210958709 A CN 202210958709A CN 117640594 A CN117640594 A CN 117640594A
- Authority
- CN
- China
- Prior art keywords
- session
- connectionless
- transport layer
- layer protocol
- destination
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000005540 biological transmission Effects 0.000 title claims abstract description 351
- 238000000034 method Methods 0.000 title claims abstract description 80
- 238000004590 computer program Methods 0.000 title claims abstract description 37
- 238000003860 storage Methods 0.000 title claims abstract description 22
- 238000004891 communication Methods 0.000 claims abstract description 204
- 230000004044 response Effects 0.000 claims abstract description 198
- 230000011664 signaling Effects 0.000 claims abstract description 102
- 230000003993 interaction Effects 0.000 claims abstract description 72
- 238000001514 detection method Methods 0.000 claims abstract description 52
- 230000002452 interceptive effect Effects 0.000 claims description 33
- 239000000523 sample Substances 0.000 claims description 6
- 230000000977 initiatory effect Effects 0.000 claims description 5
- 238000005516 engineering process Methods 0.000 description 22
- 238000010586 diagram Methods 0.000 description 13
- 238000012545 processing Methods 0.000 description 10
- 230000006835 compression Effects 0.000 description 9
- 238000007906 compression Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 7
- 238000013500 data storage Methods 0.000 description 4
- 230000035515 penetration Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0805—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
- H04L43/0811—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking connectivity
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/1066—Session management
- H04L65/1069—Session establishment or de-establishment
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/1066—Session management
- H04L65/1101—Session protocols
- H04L65/1108—Web based protocols, e.g. webRTC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/141—Setup of application sessions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/165—Combined use of TCP and UDP protocols; selection criteria therefor
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Multimedia (AREA)
- Computer Security & Cryptography (AREA)
- Environmental & Geological Engineering (AREA)
- Computer And Data Communications (AREA)
- Communication Control (AREA)
Abstract
本申请涉及一种数据传输方法、装置、计算机设备、存储介质和计算机程序产品。所述方法包括:生成通信会话的会话邀请,分别基于面向无连接的传输层协议与面向有连接的传输层协议,将会话邀请发送至目的端,根据目的端对会话邀请所反馈的会话应答的传输状态,确定关于通信会话的无连接传输通道与有连接传输通道各自的连通性探测结果;按连通性探测结果,建立与目的端之间的数据传输通道,通过数据传输通道,与目的端之间传输通信会话的会话数据。采用本方法通过无连接传输通道与有连接传输通道的双通道信令交互,在提升信令交互成功率的同时,同时实现无连接传输通道与有连接传输通道各自的连通性探测,降低数据传输的延时。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种数据传输方法、装置、计算机设备、存储介质和计算机程序产品。
背景技术
WebRTC(Web Real-Time Communication)技术是一种实时通信技术,可应用于音视频实时通信中,如拉取音视频流等。UDP(User Datagram Protocol,用户数据报协议)是一种面向无连接的传输层通信协议,具有传输快、效率高、延迟低的优点,同时具有不可靠、网络穿透力弱的缺点。TCP(Transmission Control Protocol,传输控制协议)是一种面向有连接的、可靠的、基于字节流的传输层通信协议,具有传输可靠、网络穿透能力强的优点,但同时具有传输慢、效率低、延迟高的缺点。
WebRTC需要通过网络进行两种交互:信令交互和数据传输。基于UDP与TCP各自的特点,WebRTC标准普遍采用基于TCP的传输协议实现信令交互,以采用基于UDP的实时传输协议传输数据。但由于UDP在很多场景或某些网络环境下会受到一定的限制,比如,不同区域不同运营商可能存在对UDP限速或直接限制的问题,又例如,在某些内部网络的安全策略下UDP甚至被直接禁止,导致基于WebRTC的数据传输受到较大影响。
目前,采用的对策是,在等待超时后切换到其它协议进行播放。但这种方式体验较差,需要有一个等待过程,耗时过长,数据传输延时较大,不适于低延时场景。
发明内容
基于此,有必要针对上述技术问题,提供一种能够降低数据传输延时的数据传输方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
本申请提供了一种数据传输方法。所述方法包括:
生成通信会话的会话邀请,分别基于面向无连接的传输层协议与面向有连接的传输层协议,将所述会话邀请发送至目的端;
根据所述目的端对所述会话邀请所反馈的会话应答的传输状态,确定关于所述通信会话的无连接传输通道与有连接传输通道各自的连通性探测结果;
按所述连通性探测结果,建立与所述目的端之间的数据传输通道;
通过所述数据传输通道,与所述目的端之间传输所述通信会话的会话数据。
本申请还提供了一种数据传输装置。所述装置包括:
会话邀请发送模块,用于生成通信会话的会话邀请,分别基于面向无连接的传输层协议与面向有连接的传输层协议,将所述会话邀请发送至目的端;
连通性探测模块,用于根据所述目的端对所述会话邀请所反馈的会话应答的传输状态,确定关于所述通信会话的无连接传输通道与有连接传输通道各自的连通性探测结果;
连接建立模块,用于按所述连通性探测结果,建立与所述目的端之间的数据传输通道;
传输模块,用于通过所述数据传输通道,与所述目的端之间传输所述通信会话的会话数据。
在一个实施例中,所述会话邀请发送模块,还用于响应于从服务器拉取媒体流的触发操作,创建通信会话;获取所述通信会话的会话描述信息;根据所述会话描述信息,生成所述通信会话的会话邀请。
在一个实施例中,所述会话邀请发送模块,还用于对所述会话邀请进行压缩处理,得到二进制数据;分别基于面向无连接的传输层协议与面向有连接的传输层协议,将所述二进制数据发送至目的端。
在一个实施例中,所述会话邀请发送模块,还用于根据所述面向无连接的传输层协议,将所述会话邀请封装为第一交互信令;根据所述面向有连接的传输层协议,将所述会话邀请封装为第二交互信令;通过面向无连接的传输层协议发送所述第一交互信令至目的端以及通过面向有连接的传输层协议发送所述第二交互信令至目的端。
在一个实施例中,所述连通性探测模块,还用于若仅接收到所述目的端通过面向无连接的传输层协议对所述第一交互信令所反馈的会话应答,则保存所述会话应答中用于传输会话数据的目的端候选地址,并确定关于所述通信会话的无连接传输通道处于连通状态;若仅接收到所述目的端通过面向有连接的传输层协议对所述第二交互信令所反馈的会话应答,则保存所述会话应答中用于传输会话数据的目的端候选地址,并确定关于所述通信会话的有连接传输通道处于连通状态。
在一个实施例中,所述连接建立模块,还用于若关于所述通信会话的无连接传输通道处于连通状态,则根据源端候选地址中的第一地址与所述目的端候选地址中的第二地址所形成的候选地址组合,发起关于该候选地址组合的连接检查请求;当接收到所述目的端响应于所述连接检查请求所反馈的连接检查响应时,根据所述候选地址组合建立与所述目的端之间面向无连接的数据传输通道。
在一个实施例中,所述连接建立模块,还用于若关于所述通信会话的有连接传输通道处于连通状态,则根据源端候选地址中的第一地址与所述目的端候选地址中的第二地址所形成的候选地址组合,发起关于该候选地址组合的连接检查请求;当接收到所述目的端响应于所述连接检查请求所反馈的连接检查响应时,根据所述候选地址组合建立与所述目的端之间面向有连接的数据传输通道。
在一个实施例中,所述连通性探测模块,还用于若在接收到所述目的端通过面向无连接的传输层协议对所述第一交互信令所反馈的会话应答,并保存所述会话应答中用于传输会话数据的目的端候选地址之后,接收到所述目的端通过面向有连接的传输层协议对所述第二交互信令所反馈的候选地址,则保存所述反馈的候选地址,并确定关于所述通信会话的无连接传输通道与有连接传输通道均处于连通状态。
本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
生成通信会话的会话邀请,分别基于面向无连接的传输层协议与面向有连接的传输层协议,将所述会话邀请发送至目的端;
根据所述目的端对所述会话邀请所反馈的会话应答的传输状态,确定关于所述通信会话的无连接传输通道与有连接传输通道各自的连通性探测结果;
按所述连通性探测结果,建立与所述目的端之间的数据传输通道;
通过所述数据传输通道,与所述目的端之间传输所述通信会话的会话数据。
本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
生成通信会话的会话邀请,分别基于面向无连接的传输层协议与面向有连接的传输层协议,将所述会话邀请发送至目的端;
根据所述目的端对所述会话邀请所反馈的会话应答的传输状态,确定关于所述通信会话的无连接传输通道与有连接传输通道各自的连通性探测结果;
按所述连通性探测结果,建立与所述目的端之间的数据传输通道;
通过所述数据传输通道,与所述目的端之间传输所述通信会话的会话数据。
本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
生成通信会话的会话邀请,分别基于面向无连接的传输层协议与面向有连接的传输层协议,将所述会话邀请发送至目的端;
根据所述目的端对所述会话邀请所反馈的会话应答的传输状态,确定关于所述通信会话的无连接传输通道与有连接传输通道各自的连通性探测结果;
按所述连通性探测结果,建立与所述目的端之间的数据传输通道;
通过所述数据传输通道,与所述目的端之间传输所述通信会话的会话数据。
上述数据传输方法、装置、计算机设备、存储介质和计算机程序产品,在源端与目的端的信令交互阶段,利用面向无连接的传输层协议与面向有连接的传输层协议各自的优缺点进行互补,通过无连接传输通道与有连接传输通道的双通道信令交互,在提升信令交互成功率的同时,同时实现无连接传输通道与有连接传输通道各自的连通性探测,具体而言:源端生成通信会话的会话邀请,分别基于面向无连接的传输层协议与面向有连接的传输层协议,将会话邀请发送至目的端,根据目的端对该会话邀请所反馈的会话应答的传输状态,确定关于该通信会话的无连接传输通道与有连接传输通道各自的连通性探测结果,这样,就可以直接根据连通性探测结果,自适应选择无连接传输通道或有连接传输通道来无缝地建立与目的端之间的连接,从而在数据传输阶段,基于建立的数据传输通道与目的端之间传输该通信会话的会话数据,整个过程中无需在等待超时后再尝试通过其它方式建立连接,而是在实现信令交互的同时直接完成两类通道的连通性探测,极大降低数据传输的延时,提升服务体验。
本申请提供了一种数据传输方法。所述方法包括:
依次接收源端分别基于面向无连接的传输层协议与基于面向有连接的传输层协议发送的关于通信会话的会话邀请;
收集所述会话邀请中用于传输会话数据的源端候选地址;
根据目的端候选地址生成响应于所述会话邀请的会话应答;
分别通过面向无连接的传输层协议与基于面向有连接的传输层协议将所述会话应答返回至所述源端,以根据所述源端候选地址与所述目的端候选地址建立与所述源端之间的数据传输通道;
通过所述数据传输通道,与所述源端之间传输所述通信会话的会话数据。
一种数据传输装置,所述装置包括:
会话邀请接收模块,用于依次接收源端分别基于面向无连接的传输层协议与基于面向有连接的传输层协议发送的关于通信会话的会话邀请;
源端地址添加模块,用于收集所述会话邀请中用于传输会话数据的源端候选地址;
会话应答生成模块,用于根据目的端候选地址生成响应于所述会话邀请的会话应答;
会话应答发送模块,用于分别通过面向无连接的传输层协议与基于面向有连接的传输层协议将所述会话应答返回至所述源端,以根据所述源端候选地址与所述目的端候选地址建立与所述源端之间的数据传输通道;
传输模块,用于通过所述数据传输通道,与所述源端之间传输所述通信会话的会话数据。
在一个实施例中,所述会话邀请接收模块,还用于依次接收源端分别基于面向无连接的传输层协议与基于面向有连接的传输层协议发送的关于通信会话的二进制数据,所述二进制数据为压缩的会话邀请;对所述二进制数据进行解压缩处理,得到关于所述通信会话的会话邀请。
在一个实施例中,所述会话应答发送模块,还用于对所述会话应答进行压缩处理,得到二进制数据;分别基于面向无连接的传输层协议与面向有连接的传输层协议,将所述二进制数据发送至所述源端。
在一个实施例中,所述会话应答发送模块,还用于根据所述面向无连接的传输层协议,将所述会话应答封装为第三交互信令;根据所述面向有连接的传输层协议,将所述会话应答封装为第四交互信令;通过面向无连接的传输层协议发送所述第三交互信令至所述源端以及通过面向有连接的传输层协议发送所述第四交互信令至所述源端。
在一个实施例中,所述装置还包括连接建立模块,用于接收所述源端根据所述源端候选地址中的第一地址与所述目的端候选地址中的第二地址所发起的连接检查请求;当检查到所述第一地址与所述第二地址属于关于所述通信会话的候选地址组合时,向所述源端反馈连接检查响应,以确定由所述第一地址与所述第二地址所形成的与所述源端之间的数据传输通道。
本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
依次接收源端分别基于面向无连接的传输层协议与基于面向有连接的传输层协议发送的关于通信会话的会话邀请;
收集所述会话邀请中用于传输会话数据的源端候选地址;
根据目的端候选地址生成响应于所述会话邀请的会话应答;
分别通过面向无连接的传输层协议与基于面向有连接的传输层协议将所述会话应答返回至所述源端,以根据所述源端候选地址与所述目的端候选地址建立与所述源端之间的数据传输通道;
通过所述数据传输通道,与所述源端之间传输所述通信会话的会话数据。
本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
依次接收源端分别基于面向无连接的传输层协议与基于面向有连接的传输层协议发送的关于通信会话的会话邀请;
收集所述会话邀请中用于传输会话数据的源端候选地址;
根据目的端候选地址生成响应于所述会话邀请的会话应答;
分别通过面向无连接的传输层协议与基于面向有连接的传输层协议将所述会话应答返回至所述源端,以根据所述源端候选地址与所述目的端候选地址建立与所述源端之间的数据传输通道;
通过所述数据传输通道,与所述源端之间传输所述通信会话的会话数据。
本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
依次接收源端分别基于面向无连接的传输层协议与基于面向有连接的传输层协议发送的关于通信会话的会话邀请;
收集所述会话邀请中用于传输会话数据的源端候选地址;
根据目的端候选地址生成响应于所述会话邀请的会话应答;
分别通过面向无连接的传输层协议与基于面向有连接的传输层协议将所述会话应答返回至所述源端,以根据所述源端候选地址与所述目的端候选地址建立与所述源端之间的数据传输通道;
通过所述数据传输通道,与所述源端之间传输所述通信会话的会话数据。
上述数据传输方法、装置、计算机设备、存储介质和计算机程序产品,在源端与目的端的信令交互阶段,利用面向无连接的传输层协议与面向有连接的传输层协议各自的优缺点进行互补,通过无连接传输通道与有连接传输通道的双通道信令交互,提升信令交互成功率的同时,同时实现无连接传输通道与有连接传输通道各自的连通性探测,具体而言:目的端在接收源端分别基于面向无连接的传输层协议与面向有连接的传输层协议发送的关于通信会话的会话邀请的情况下,收集该两个会话邀请中用于传输会话数据的源端候选地址,根据本地的目的端候选地址生成响应于该会话邀请的会话应答,分别通过面向无连接的传输层协议与面向有连接的传输层协议将该会话应答返回源端,以便于源端能够基于会话应答的传输状态,确定关于该通信会话的无连接传输通道与有连接传输通道各自的连通性探测结果,从而能够基于该连通性探测结果,根据源端候选地址与目的端候选地址自适应选择其中一种建立与源端之间的数据传输通道,从而在数据传输阶段,基于建立的数据传输通道与目的端之间传输该通信会话的会话数据,整个过程中源端无需在等待超时后再尝试通过其它方式建立连接,而是在实现信令交互的同时直接完成两类通道的连通性探测,极大降低数据传输的延时,提升服务体验。
附图说明
图1为一个实施例中数据传输方法的应用环境图;
图2为相关技术中UDP受到限制的场景示意图;
图3为相关技术中UDP受到限制的另一场景示意图;
图4为相关技术中建立实时通信会话的时序示意图;
图5为一个实施例中数据传输方法的时序示意图;
图6为一个实施例中数据传输方法的流程示意图;
图7为一个具体的实施例中数据传输方法的流程示意图;
图8为另一个实施例中数据传输方法的流程示意图;
图9为一个实施例中数据传输装置的结构框图;
图10为另一个实施例中数据传输装置的结构框图;
图11为一个实施例中计算机设备的内部结构图;
图12为另一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
对本申请实施例涉及的概念进行解释与说明:
WebRTC:Web Real-Time Communication,一种实时通信技术,可应用于音视频实时通信中,如音视频流的拉流等。在客户端中可以基于WebRTC中引入实时通信。
RTT:Round-Trip Time,往返时间,一个重要的性能指标。
SDP:Session Description Protocol,一种会话描述协议。
ICE:Interactive Connectivity Establishment,交互式连通建立方式。
UDP:User Datagram Protocol,用户数据报协议,一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
TCP:Transmission Control Protocol,传输控制协议,一种面向连接的、可靠的、基于字节流的传输层通信协议。
DTLS:Datagram Transport Layer Security,面向UDP的数据传输层安全性协议。
TLS,Transport Layer Security,面向TCP数据传输层安全性协议。
MTU,Maximum Transmission Unit最大传输单元。
QoS,Quality of Service,一种服务质量指标。
本申请实施例提供的数据传输方法,可以应用于云技术(Cloud technology),云技术是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。云技术基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。例如,本申请实施例提供的数据传输方法,可以用于云直播场景、云视频场景。
本申请实施例提供的数据传输方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。数据存储系统可以存储服务器104需要处理的数据。数据存储系统可以集成在服务器104上,也可以放在云上或其他服务器上。在一个实施例中,终端102上运行的客户端,该客户端可以是即时通信客户端、视频直播客户端等等。该客户端作为源端,生成通信会话的会话邀请,分别基于面向无连接的传输层协议与面向有连接的传输层协议,将会话邀请发送至作为目的端的服务器104,根据目的端对会话邀请所反馈的会话应答的传输状态,确定关于通信会话的无连接传输通道与有连接传输通道各自的连通性探测结果,继而可以按连通性探测结果,建立与目的端之间的数据传输通道,通过数据传输通道,与目的端之间传输通信会话的会话数据。
其中,终端102可以但不限于是各种台式计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。服务器104服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
本申请实施例提供的数据传输方法可以基于实时通信技术实现,如WebRTC,本申请提供的数据传输方法可以作为WebRTC SDK集成在客户端中与标准的WebRTC接口进行通信。WebRTC是一项实时通讯技术,它允许客户端与服务器之间,或者客户端与客户端之间,在不借助中间媒介的情况下,建立点对点(Peer-to-Peer)的连接,实现视频流和(或)音频流或者其他任意数据的传输。UDP是一种面向无连接的传输层通信协议,具有传输快、效率高、延迟低的优点,同时具有不可靠、网络穿透力弱的缺点。TCP是一种面向有连接的、可靠的、基于字节流的传输层通信协议,具有传输可靠、网络穿透能力强的优点,但同时具有传输慢、效率低、延迟高的缺点。WebRTC普遍采用基于UDP的RTP/RTCP传输协议,一般在基于WebRTC的通信会话的信令交互阶段,采用基于TCP的可靠传输协议来实现信令交互,如http或websocket,而在数据传输阶段,则采用基于UDP的传输协议来建立连接和传输。
然而,UDP在某些网络环境下会受到一定的限制。例如,如图2所示,为相关技术中UDP受到限制的场景之一,在该场景中,受到内网防火墙安全策略的限制,UDP被防火墙安全策略屏蔽的概率很大,内网中的终端基本上无法通过UDP和外网交互,只能通过TCP与外网交互。又例如,如图3所示,为相关技术中UDP受到限制的另一个场景,在该场景中,由于客户端调度异常或本地运营商服务器负荷较大,客户端无法与本地的运营商服务器连接,而是直接连接到了其它的跨域或跨运营商服务器,此时与跨域或跨运营商之间利用UDP进行数据传输就会受到限制。
在一个具体的应用场景中,例如视频直播场景,通常视频直播系统通常需要为用户提供优质的超低延迟直播服务,那么通常是需要通过基于UDP的低延迟协议启动视频流的拉取,但在上述两种UDP受到限制的情况下,就会导致传输失败,直接表现为直播开播失败。目前,针对此场景所采用的对策是,切换至其它协议进行传输,例如当超时等待开播失败时切换到http flv协议进行传输。但这种方式,需要有一个等待过程,UDP传输的连接超时后再切换到http flv播放,耗时过长,开播很慢,造成非常不好的直播服务体验。
实时通信技术中通信会话的建立通常包括两个阶段:
信令交互阶段:用于通信双方协商并了解双方的信息,如通信会话的会话相关信息与传输的媒体数据的媒体相关信息,媒体相关信息包括传输协议、传输地址与端口、编解码器和其他参数等等,可以基于会话描述协议如SDP等实现信令交互。会话描述协议用于在实时通信技术中交换双端的信息,一端使用SDP通知另一端在媒体会话中使用哪些参数。通常一个服务于WebRTC的SDP可以分为下面2个部分:会话层级描述信息,包括关于会话和时间的相关描述,具体会包含版本信息、会话标识、会话名称、会话时间等;媒体层级部分,包括关于音视频频媒体和网络的相关描述,具体包括音视频频信息、媒体类型和参数、传输媒体数据的候选地址和端口、网络协议类型和参数、音视频编码种类和参数等。
建立连接与数据传输阶段:根据第一个阶段协商的会话信息与媒体传输信息,建立一端与另一端之间的连接,启动传输会话数据。
如图4所示,为相关技术中在源端与目的端之间建立实时通信会话的数据传输通道的示意图。该实时通信会话可以是基于WebRTC的实时通信会话,首先,源端设置并保存本地的SDP,该SDP中含有源端的可用于数据传输的候选地址,然后将含有该SDP的会话邀请offer SDP发送至目的端(在端对端场景下是通过信令服务器将该offer SDP发送至目的端,在端对服务器场景下是直接发给该服务器),在目的端获得该会话邀请后,保存源端的候选地址,并触发设置并保存本地的SDP,该SDP中含有目的端的可用于数据传输的候选地址,目的端创建一个会话应答answer SDP,将目的端的可用于数据传输的候选地址发送给源端(在端对端场景下是通过信令服务器将该answer SDP发送至源端,在端对服务器场景下是直接发给该服务器),实现交换候选地址。然后源端可以基于两端候选地址形成的至少一个候选地址组合,基于优先级最高的候选地址组合,发起连接检查请求Stun BindingRequest,根据目的端的连接检查响应Stun Binding Response记录该候选地址组合的连接状态,若连接状态为发送就绪状态,则通过该候选地址组合所形成的数据传输通道,在源端与目的端之间传输数据,若目的端未反馈会话应答或目的端未反馈连接检查响应,则需要进行重传直到超时,超时之后才会考虑切换到其它传输协议。
如图4所示的WebRTC标准的交互流程中,信令交互阶段的会话邀请offer SDP与会话应答answer SDP是采用基于TCP的传输协议发送的,而建立连接以及数据传输阶段的数据传输则是采用基于UDP的传输协议发送的,但基于前面所描述的,UDP在很多情况下受到限制或不可用,由于无法提前知晓UDP是否可用,使得信令交互的失败率较低,等待超时后切换到其它协议耗时较大,低延时的数据传输服务质量较差。
如图5所示,为本申请实施例提供的数据传输方法的示意图。参照图5,源端设置并保存本地的SDP,该SDP中含有源端的可用于数据传输的候选地址,然后分别采用基于UDP的传输协议与基于TCP的传输协议,将含有该SDP的会话邀请offer(也叫offer SDP)发送至目的端,在目的端获得该两个的情况下,目的端可以保存源端的候选地址,并触发设置并保存本地的SDP,该SDP中含有目的端的可用于数据传输的候选地址,目的端创建一个会话应答answer(也叫answer SDP),分别采用基于UDP的传输协议与基于TCP的传输协议,将目的端的可用于数据传输的候选地址发送给源端,实现交换候选地址。若源端接收到了answerSDP,则说明基于相应传输协议的传输通道处于连通状态,那么然后源端就可以直接基于两端候选地址以及相应的传输协议形成至少一个候选地址组合,基于优先级最高的候选地址组合,采用该组合所对应的传输协议(TCP或UDP),发起连接检查请求Stun BindingRequest,根据目的端的连接检查响应Stun Binding Response记录该候选地址组合的连接状态,若该候选地址组合的连接状态为发送就绪状态,则通过该候选地址组合所形成的基于UDP或基于TCP的数据传输通道,在源端与目的端之间传输数据。
相比于图4所示的信令交互阶段使用TCP传输交互信令,图5所示的交互流程,在源端与目的端的信令交互阶段,利用面向无连接的传输层协议与面向有连接的传输层协议各自的优缺点进行互补,通过无连接传输通道与有连接传输通道的双通道信令交互,在提升信令交互成功率的同时,同时实现无连接传输通道与有连接传输通道各自的连通性探测,从而源端可以直接基于探测结果,直接无缝式地确定要选择何种协议建立与目的端的连接,无需等待,数据传输延时非常小。
本申请实施例提供的数据传输方法,源端生成通信会话的会话邀请,分别基于面向无连接的传输层协议与面向有连接的传输层协议,将会话邀请发送至目的端,根据目的端对该会话邀请所反馈的会话应答的传输状态,确定关于该通信会话的无连接传输通道与有连接传输通道各自的连通性探测结果,这样,就可以直接根据连通性探测结果,自适应选择无连接传输通道或有连接传输通道来无缝地建立与目的端之间的连接,从而在数据传输阶段,基于建立的数据传输通道与目的端之间传输该通信会话的会话数据,整个过程中无需在等待超时后再尝试通过其它方式建立连接,而是在实现信令交互的同时直接完成两类通道的连通性探测,极大降低数据传输的延时,提升服务体验。
在一个实施例中,如图6所示,提供了一种数据传输方法,以该方法应用于图1中的终端102为例进行说明,包括以下步骤:
步骤602,生成通信会话的会话邀请,分别基于面向无连接的传输层协议与面向有连接的传输层协议,将会话邀请发送至目的端。
本申请实施例涉及源端与目的端,源端是发起会话邀请的一方,目的端是反馈会话应答的一方。需要说明的是,在源端与目的端之间的数据传输通道成功建立后,可以从源端发送会话数据至目的端,也可以从目的端发送数据至源端。源端与目的端可以是客户端与服务器,即端对服务器场景,源端与目的端还可以是客户端与客户端,即端对端场景。通常,源端与目的端传输数据之前,或是建立数据传输通道之前,还需要建立源端与目的端之间的通信会话,该通信会话具有会话标识,用于代表源端与目的端之间本次会话数据的交互。
会话邀请是源端发起的用于表明源端的会话描述信息的指令,具体可以是源端发起的offer,该offer中携带源端SDP,称为offer SDP。类似地,会话应答是目的端反馈的用于表明目的端的会话描述信息的指令,具体可以是源端反馈的answer,该answer中携带目的端SDP,称为answer SDP。SDP用于在实时通信技术中交换双端的信息,一端使用SDP通知另一端在媒体会话中使用哪些参数。在一个实施例中,在端对服务器场景中,终端通过客户端从服务器拉取媒体流,那么终端可以响应于从服务器拉取媒体流的触发操作,创建通信会话,获取通信会话的会话描述信息,根据会话描述信息,生成通信会话的会话邀请。在一个实施例中,在端对端场景中,作为源端的终端通过服务器将生成的会话邀请请求服务器转发至对端,对端接收到会话邀请后,生成相应的会话应答,通过服务器将生成的会话应答请求服务器转发至源端。
在一个实施例中,该方法应用于WebRTC框架,在端对端场景中,作为源端的终端可以通过调用WebRTC标准框架中的peerConnection.addIceCandidate设置本地的SDP,为源端的peerConnection对象设置本地的SDP,然后调用peerConnection.createOffer方法创建一个会话邀请offer SDP,内含本地的SDP。创建成功后发送给服务器,请求服务器将其转发给目的端,目的端收到会话邀请offer SDP后,调用peerConnection.setRemoteDescription保存源端的SDP,将源端的SDP赋予给目的端的peerConnection对象,再调用peerConnection.addIceCandidate获得目的端本地的SDP,向目的端的peerConnection对象保存目的端本地的SDP,调用peerConnection.createAnswer创建一个会话应答answerSDP,创建成功后发送给服务器,请求服务器转发给源端,源端调用peerConnection.setRemoteDescription保存目的端的SDP,将目的端的SDP赋予给源端的peerConnection对象。从而,实现源端与目的端之间的SDP信息交互,该SDP中包含双方各自可使用的数据传输候选地址,实现候选地址的交换。源端与目的端各自的peerConnection对象都包含了自身与对方的候选地址信息,可用作后续进行连接检查。
在一个实施例中,在端对服务器场景中,作为源端的终端可以通过调用WebRTC标准接口peerConnection.addIceCandidate设置本地的会话描述信息SDP,由于终端直接与服务器连接,终端从服务器请求数据或上传数据,那么该会话描述信SDP中可以不包含终端的可用于数据传输的候选地址信息。终端调用peerConnection.createOffer方法创建offer SDP,内含本地的SDP,创建成功后发送给服务器,服务器调用setRemoteDescription保存源端的SDP,再调用peerConnection.addIceCandidate获得服务器本地的SDP,保存目的端本地的SDP,创建一个answer信令,内含该SDP,把answer SDP发送给终端,终端调用setRemoteDescription保存服务器的SDP。终端从服务器的SDP中获得可用于数据传输的目的端候选地址,同样也实现了候选地址的交换。
下面举例来说:
源端候选地址为:
UDP:192.168.1.100:60001、172.168.40.6:60002;
TCP:192.168.1.100:60003、172.168.40.6:60004;
目的端候选地址为:
UDP:183.60.131.111:8000、183.60.131.112:8000;
TCP:183.60.131.113:8080、183.60.131.114:8080;
若源端未接收到目的端反馈的answer UDP,则源端可以确定基于UDP的传输通道无法连接,就可以直接生成基于TCP的4个候选地址组合,优先级从高至低如下:
192.168.1.100:60003与183.60.131.113:8080;
172.168.40.6:60004与183.60.131.113:8080;
192.168.1.100:60003与183.60.131.114:8080;
172.168.40.6:60004与183.60.131.114:8080;
源端可以按优先级顺序依次进行连接检查,在连接状态为发送就绪时,得到用于数据传输的地址组合。源端无需等待UDP连接超时时才考虑切换传输协议,降低了数据传输等待的延时。
可以理解,本申请实施例中,面向有连接的传输层协议不一定单指TCP,还可以是其它基于TCP的传输协议如HTTP(Hyper Text Transfer Protocol,超文本传输协议,一个简单的请求-响应协议,通常运行在TCP之上)、WebSocket(一种在单个TCP连接上进行全双工通信的协议)等,以及面向无连接的传输层协议不一定单指UDP,还可以是其它基于UDP的传输协议如QUIC(Quick UDP Internet Connection,是一种基于UDP的低时延的互联网传输层协议)、SRT(Secure Reliable Transport,安全可靠传输协议,简称SRT,是一种基于UDT协议的开源互联网传输协议)等,本申请大多实施例为简要表述,直接采用TCP与UDP进行说明。
在一个实施例中,为便于传输,终端还可以对会话邀请进行压缩处理,得到二进制数据,从而将会话邀请压缩成一个MTU(一般为1200字节)以内的二进制数据,再分别基于面向无连接的传输层协议与面向有连接的传输层协议,将压缩得到的二进制数据发送至目的端。此处不限制采用的压缩方式。
在一个实施例中,终端根据面向无连接的传输层协议,将会话邀请封装为第一交互信令,根据面向有连接的传输层协议,将会话邀请封装为第二交互信令,通过面向无连接的传输层协议发送第一交互信令至目的端以及通过面向有连接的传输层协议发送第二交互信令至目的端。进一步可选地,终端根据会话邀请对应的二进制数据生成相应的第一交互信令,根据会话邀请对应的二进制数据生成相应的第二交互信令。
步骤604,根据目的端对会话邀请所反馈的会话应答的传输状态,确定关于通信会话的无连接传输通道与有连接传输通道各自的连通性探测结果。
需要说明的是,源端分别通过面向无连接的传输层协议与面向有连接的传输层协议发送会话邀请,在源端至目的端的无连接传输通道处于连通状态的情况下,目的端可以接收到该会话邀请,在源端至目的端的有连接传输通道处于连通状态的情况下,目的端可以接收到该会话邀请,否则,目的端不能接收到会话邀请或只能接收到其中一个会话邀请。
在目的端接收到源端通过面向无连接的传输层协议传输的会话邀请的情况下,目的端会通过通过面向无连接的传输层协议反馈相应的会话应答;在目的端接收到源端通过面向有连接的传输层协议发送的会话邀请的情况下,目的端会通过面向有连接的传输层协议反馈相应的会话应答。
那么,在目的端至源端的无连接传输通道处于连通状态的情况下,源端可以接收到该会话应答,在目的端至源端的有连接传输通道处于连通状态的情况下,源端可以接收到该会话应答,否则,源端不能接收到会话邀请或只能接收到其中一个会话应答。
从而,若源端能够接收到目的端通过面向无连接的传输层协议反馈的会话应答,说明源端至目的端的无连接传输通道、目的端至源端的无连接传输通道均处于连通状态,也就是源端与目的端之间的无连接传输通道处于连通状态。若源端能够接收到目的端通过面向有连接的传输层协议反馈的会话应答,说明源端至目的端的有连接传输通道、目的端至源端的有连接传输通道均处于连通状态,也就是源端与目的端之间的有连接传输通道处于连通状态。
所以,目的端对会话邀请所反馈的会话应答的传输状态,可以包括以下四种:未接收到目的端反馈的会话应答、仅接收到目的端通过面向无连接的传输层协议反馈的会话应答、仅接收到目的端通过面向有连接的传输层协议反馈的会话应答、接收到目的端通过面向无连接的传输层协议反馈的会话应答与目的端通过面向有连接的传输层协议反馈的会话应答(可能存在先后顺序)。基于这四种不同的传输状态,作为源端的终端可以确定关于通信会话的无连接传输通道与有连接传输通道各自的连通性探测结果,也就是:关于通信会话的无连接传输通与有连接传输通道均处理无法连接状态、仅关于通信会话的无连接传输通道处于连通状态、仅关于通信会话的有连接传输通道处于连通状态、关于通信会话的无连接传输通道与有连接传输通道均处于连通状态。
可以看出,在源端与目的端的信令交互阶段,利用面向无连接的传输层协议与面向有连接的传输层协议各自的优缺点进行互补,通过无连接传输通道与有连接传输通道的双通道信令交互,在提升信令交互成功率的同时,就可以直接同时实现无连接传输通道与有连接传输通道各自的连通性探测。后续终端就可以直接基于探测结果发出相应的连接检查,无需在连接超时后才考虑切换传输协议。
在一个实施例中,若终端仅接收到目的端通过面向无连接的传输层协议对第一交互信令所反馈的会话应答,则保存会话应答中用于传输会话数据的目的端候选地址,并确定关于通信会话的无连接传输通道处于连通状态。具体而言,终端可以通过调用peerConnection.setRemoteDescription保存目的端的会话应答中的目的端候选地址,将目的端候选地址赋予给源端的peerConnection对象,该peerConnection对象可用于在后续生成候选地址组合。可以理解的是,由于该会话应答是通过面向无连接的传输层协议反馈的,该会话应答中的候选地址,是通信会话的无连接传输通道可以使用的网络地址。
在一个实施例中,若终端仅接收到目的端通过面向有连接的传输层协议对第二交互信令所反馈的会话应答,则保存会话应答中用于传输会话数据的目的端候选地址,并确定关于通信会话的有连接传输通道处于连通状态。具体而言,终端可以通过调用peerConnection.setRemoteDescription保存目的端的会话应答中的目的端候选地址,将目的端候选地址赋予给源端的peerConnection对象,该peerConnection对象可用于在后续生成候选地址组合。可以理解的是,由于该会话应答是通过面向有连接的传输层协议反馈的,该会话应答中的候选地址,是通信会话的有连接传输通道可以使用的网络地址。
在一个实施例中,若终端接收到目的端通过面向无连接的传输层协议对第一交互信令所反馈的会话应答,还接收到目的端通过面向有连接的传输层协议对第二交互信令所反馈的会话应答,则保持该两个会话应答中用于传输会话数据的目的端候选地址,并确定关于通信会话的无连接传输通道与有连接传输通道均处于连通状态。具体地,若终端先接收到一个会话应答,终端可以通过调用peerConnection.setRemoteDescription保存该会话应答中的候选地址,此后,若终端又接收到目的端发送的远端候选地址信息,则直接通过调用peerConnection.addIceCandidate保存该候选地址信息,将新收到的候选地址赋予给源端的peerConnection对象。
需要说明的是,若目的端接收到的是压缩的二进制数据,则目的端需要先对该二进制数据进行解压缩处理,才能得到相应的会话邀请。类似地,为便于传输,目的端也可以对生成的会话应答进行压缩处理,得到相应的二进制数据,再分别通过面向无连接的传输层协议与面向有连接的传输层协议,反馈会话应答,那么源端也就需要对接收到的二进制数据进行解压处理,才能得到相应的会话应答。
步骤606,按连通性探测结果,建立与目的端之间的数据传输通道。
具体地,终端在获得连通性探测结果后,就可以提前确定无连接传输通道与有连接传输通道中可以成功建立连接的通道,从而根据需要自适应选择其中一个建立连接。
在建立连接之前,终端还可以根据候选地址组合进行连接检查,确定传输会话数据的最终路径。终端在上述的信令交互阶段,获得了本地与目的端各自对候选地址,终端可以将这些候选地址进行组合,得到至少一个候选地址组合,并将这些候选地址组合按优先级排序,优先级基于地址类型、媒体类型等参数确定,例如考虑延时、带宽资源、丢包等因素,通常主机类型的候选地址的优先级较高。每个候选地址组合都可能用于传输通信会话的会话数据,终端按这些候选地址组合的优先级顺序,先对最高优先级的候选地址组合向目的端发起连接检查请求,若能接收到目的端反馈的连接检查响应,则说明该候选地址组合连通,双端可以利用该候选地址组合传输会话数据,否则若未能接收到目的端反馈的连接检查响应,或是在连接检查响应反馈超时的情况下,源端可以获取下一对候选地址组合,对该下一对候选地址组合发起连接检查请求,按照这样的方式,可以从中确定最终的传输会话数据的路径与通道。
在一个实施例中,若关于通信会话的无连接传输通道处于连通状态,则根据源端候选地址中的第一地址与目的端候选地址中的第二地址所形成的候选地址组合,发起关于该候选地址组合的连接检查请求;当接收到目的端响应于连接检查请求所反馈的连接检查响应时,根据候选地址组合建立与目的端之间面向无连接的数据传输通道。
在一个实施例中,若关于通信会话的有连接传输通道处于连通状态,则根据源端候选地址中的第一地址与目的端候选地址中的第二地址所形成的候选地址组合,发起关于该候选地址组合的连接检查请求;当接收到目的端响应于连接检查请求所反馈的连接检查响应时,根据候选地址组合建立与目的端之间面向有连接的数据传输通道。
在一个实施例中,若关于通信会话的无连接传输通道与有连接传输通道均处于连通状态,终端可以视情况从中选择一个建立数据传输通道。一般情况下,由于无连接传输通道较低延时,优先通过建立无连接传输通道传输会话数据。当然,终端还可以根据这两个通道各自的接收到会话应答的时间先后顺序、往返时间、传输质量(通过SDP中的帧速率、传输质量参数确定)等进行选择,例如在无连接传输通道的传输质量较差的时候,仍然选择建立有连接传输通道传输会话数据。
步骤608,通过数据传输通道,与目的端之间传输通信会话的会话数据。
在成功建立了源端与目的端之间的数据传输通道后,就可以在源端与目的端之间传输通信会话的会话数据,例如本次通信会话要拉取的直播媒体流。
如图7所示,为一个具体的实施例中数据传输方法的流程示意图,参照图7,从双端详细描述本申请实施例提供的数据传输方法。参照图7,客户端作为源端,服务器作为目的端,在源端包括标准的WebRTC框架与集成在客户端中的WebRTC SDK,同样,在目的端包括标准的WebRTC框架与集成在客户端中的WebRTC SDK,本申请实施例的方法可通过WebRTC SDK实现。
具体地,在源端,通过WebRTC SDK接收到拉流请求,可以触发调用WebRTC框架的标准接口peerConnection.addIceCandidate设置本地的SDP,根据根据该SDP,调用WebRTC框架的标准接口peerConnection.createOffer创建一个会话邀请offer SDP,创建成功后,为便于传输,将会话邀请offer SDP压缩成二进制数据,将二进制数据,同时分别通过UDP和TCP的方式传输给服务器侧(这里UDP传输可以采用纯UDP、或其他基于UDP的协议如QUIC、SRT等,TCP传输可以采用纯TCP,获取其他基于TCP的协议如HTTP,WebSocket等)。
接着,目的端的WebRTC SDK根据源端发送的二进制数据到达情况,创建会话应答:如果收到通过UDP传输的二进制数据,则WebRTC SDK通过调用peerConnection.addIceCandidate添加服务端UDP候选地址,解压接收的二进制数据得到offer SDP后再通过调用peerConnection.setRemoteDescription保存源端的UDP候选地址。此外,目的端还根据服务端UDP候选地址调用peerConnection.createAnswer创建一个会话应答answer SDP,并进行二进制压缩,得到二进制数据,通过UDP返回给源端。
如果收到通过TCP传输的二进制数据,则WebRTC SDK通过调用peerConnection.addIceCandidate添加服务端TCP候选地址,解压接收的二进制数据得到offer SDP后再通过调用peerConnection.setRemoteDescription保存源端的TCP候选地址。此外,目的端还根据服务端TCP候选地址调用peerConnection.createAnswer创建一个会话应答answer SDP,并进行二进制压缩,得到二进制数据,通过TCP返回给源端。
如果在目的端侧,存在源端发送的二进制数据的收到晚于answer SDP的发送,则说明是一前一后接收到两个二进制数据,那么目的端侧的WebRTC SDK直接调用peerConnection.addIceCandidate添加后面收到的候选地址,并单独发送该候选地址给源端。
UDP和TCP的candidate示例如下:可以通过answer SDP发送或直接单独发送给源端:
a=candidate:1 1UDP 2130806431 183.60.131.113 8000typ host
a=candidate:2 1TCP 2111832063 183.60.131.113 8080typ host tcptypeactive
第一条为UDP候选地址,第二条为TCP候选地址。
源端在收到answer SDP的二进制数据后,解压还原出answer SDP,根据其中的目的端候选地址,调用peerConnection.setRemoteDescription保存目的端的SDP,将目的端的SDP赋予给源端的peerConnection对象,触发标准WebRTC会根据peerConnection对象中的双侧的候选地址形成的组合,发起连接检查。
如果源端后续又单独接收到目的端发送的目的端候选地址,则源端通过调用peerConnection.addIceCandidate将新的目的端候选地址设置给标准WebRTC,标准WebRTC可以向新的目的端地址发起连接检查。在连接检查通过后,服务器可以根据传输状态,自适应选择任意一个连接进行数据传输。
在一个具体的实施例中,数据传输方法包括以下步骤:
响应于从服务器拉取媒体流的触发操作,创建通信会话;
获取通信会话的会话描述信息;
根据会话描述信息,生成通信会话的会话邀请;
对会话邀请进行压缩处理,得到二进制数据;
根据面向无连接的传输层协议,将会话邀请封装为第一交互信令;
根据面向有连接的传输层协议,将会话邀请封装为第二交互信令;
通过面向无连接的传输层协议发送第一交互信令至目的端以及通过面向有连接的传输层协议发送第二交互信令至目的端;
若仅接收到目的端通过面向无连接的传输层协议对第一交互信令所反馈的会话应答,则保存会话应答中用于传输会话数据的目的端候选地址,并确定关于通信会话的无连接传输通道处于连通状态;
若仅接收到目的端通过面向有连接的传输层协议对第二交互信令所反馈的会话应答,则保存会话应答中用于传输会话数据的目的端候选地址,并确定关于通信会话的有连接传输通道处于连通状态;
若在接收到目的端通过面向无连接的传输层协议对第一交互信令所反馈的会话应答,并保存会话应答中用于传输会话数据的目的端候选地址之后,接收到目的端通过面向有连接的传输层协议对第二交互信令所反馈的候选地址,则保存反馈的候选地址,并确定关于通信会话的无连接传输通道与有连接传输通道均处于连通状态;
若关于通信会话的无连接传输通道处于连通状态,则根据源端候选地址中的第一地址与目的端候选地址中的第二地址所形成的候选地址组合,发起关于该候选地址组合的连接检查请求;当接收到目的端响应于连接检查请求所反馈的连接检查响应时,根据候选地址组合建立与目的端之间面向无连接的数据传输通道;
若关于通信会话的有连接传输通道处于连通状态,则根据源端候选地址中的第一地址与目的端候选地址中的第二地址所形成的候选地址组合,发起关于该候选地址组合的连接检查请求;当接收到目的端响应于连接检查请求所反馈的连接检查响应时,根据候选地址组合建立与目的端之间面向有连接的数据传输通道;
若关于通信会话的无连接传输通道与有连接传输通道均处于连通状态,则基于各自的传输质量自适应选择其中一个建立数据传输通道;
通过数据传输通道,与目的端之间传输通信会话的会话数据。
上述数据传输方法,利用UDP和TCP各自的优缺点,进行互补,通过UDP和TCP双通道信令交互,实现UDP和TCP连通性探测,并通过WebRTC自适应选择UDP或TCP通道建立连接来传输媒体数据,从而实现自动适应各种网络场景,从而提升基于WebRTC业务的服务质量,克服UDP无法通信时会出现信令交互成功而数据传输无法建立连接而传输失败的问题或等待超时后切换至其它传输协议带来的超长时延的问题,可以弥补数据单纯依靠UDP传输的不足,提升服务质量QoS指标和产品技术的完善性,进而提升产品体验。
本申请实施例还提供一种数据传输方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。数据存储系统可以存储服务器104需要处理的数据。数据存储系统可以集成在服务器104上,也可以放在云上或其他服务器上。在一个实施例中,服务器104作为目的端,依次接收作为源端的终端102分别基于面向无连接的传输层协议与基于面向有连接的传输层协议发送的关于通信会话的会话邀请,收集会话邀请中用于传输会话数据的源端候选地址,根据目的端候选地址生成响应于会话邀请的会话应答,分别通过面向无连接的传输层协议与基于面向有连接的传输层协议将会话应答返回至源端,以根据源端候选地址与目的端候选地址建立与源端之间的数据传输通道,通过数据传输通道,与源端之间传输通信会话的会话数据。
在一个实施例中,如图8所示,提供了一种数据传输方法,以该方法应用于图1中的服务器104为例进行说明,需要说明的是,关于该数据传输方法的步骤的实施例,可以参考前文的描述。该方法具体包括以下步骤:
步骤802,依次接收源端分别基于面向无连接的传输层协议与基于面向有连接的传输层协议发送的关于通信会话的会话邀请。
可以理解,源端分别通过面向无连接的传输层协议与面向有连接的传输层协议发送会话邀请,在源端至目的端的无连接传输通道处于连通状态的情况下,目的端可以接收到该会话邀请,在源端至目的端的有连接传输通道处于连通状态的情况下,目的端可以接收到该会话邀请,否则,目的端不能接收到会话邀请或只能接收到其中一个会话邀请。本实施例以目的端接收到两种类型的会话邀请为例进行说明。
步骤804,收集会话邀请中用于传输会话数据的源端候选地址。
步骤806,根据目的端候选地址生成响应于会话邀请的会话应答。
步骤808,分别通过面向无连接的传输层协议与基于面向有连接的传输层协议将会话应答返回至源端,以根据源端候选地址与目的端候选地址建立与源端之间的数据传输通道。
作为目的端的服务器收到会话邀请offer SDP后,调用peerConnection.setRemoteDescription保存源端的SDP,将源端的SDP赋予给目的端的peerConnection对象,再调用peerConnection.addIceCandidate获得目的端本地的SDP,向目的端的peerConnection对象保存目的端本地的SDP,调用peerConnection.createAnswer创建一个会话应答answerSDP,创建成功后发送给终端。
可以理解,在目的端接收到源端通过面向无连接的传输层协议传输的会话邀请的情况下,目的端会通过通过面向无连接的传输层协议反馈相应的会话应答,在目的端接收到源端通过面向有连接的传输层协议发送的会话邀请的情况下,目的端会通过面向有连接的传输层协议反馈相应的会话应答。
在目的端至源端的无连接传输通道处于连通状态的情况下,源端可以接收到该会话应答,在目的端至源端的有连接传输通道处于连通状态的情况下,源端可以接收到该会话应答,否则,源端不能接收到会话邀请或只能接收到其中一个会话应答。
若源端能够接收到目的端通过面向无连接的传输层协议反馈的会话应答,说明源端至目的端的无连接传输通道、目的端至源端的无连接传输通道均处于连通状态,也就是源端与目的端之间的无连接传输通道处于连通状态。若源端能够接收到目的端通过面向有连接的传输层协议反馈的会话应答,说明源端至目的端的有连接传输通道、目的端至源端的有连接传输通道均处于连通状态,也就是源端与目的端之间的有连接传输通道处于连通状态。
所以,目的端对会话邀请所反馈的会话应答的传输状态,可以包括以下四种:未接收到目的端反馈的会话应答、仅接收到目的端通过面向无连接的传输层协议反馈的会话应答、仅接收到目的端通过面向有连接的传输层协议反馈的会话应答、接收到目的端通过面向无连接的传输层协议反馈的会话应答与目的端通过面向有连接的传输层协议反馈的会话应答(可能存在先后顺序)。基于这四种不同的传输状态,作为源端的终端可以确定关于通信会话的无连接传输通道与有连接传输通道各自的连通性探测结果,也就是:关于通信会话的无连接传输通与有连接传输通道均处理无法连接状态、仅关于通信会话的无连接传输通道处于连通状态、仅关于通信会话的有连接传输通道处于连通状态、关于通信会话的无连接传输通道与有连接传输通道均处于连通状态。
步骤810,通过数据传输通道,与源端之间传输通信会话的会话数据。
在一个实施例中,作用目的端的服务器依次接收源端分别基于面向无连接的传输层协议与基于面向有连接的传输层协议发送的关于通信会话的二进制数据,二进制数据为压缩的会话邀请,对二进制数据进行解压缩处理,得到关于通信会话的会话邀请。
本实施例中,为便于传输,源端还可以对会话邀请进行压缩处理,得到二进制数据,从而将会话邀请压缩成一个MTU(一般为1200字节)以内的二进制数据,再分别基于面向无连接的传输层协议与面向有连接的传输层协议,将压缩得到的二进制数据发送至目的端,目的端接收到二进制数据后,进行解压缩处理,还原出会话邀请。
在一个实施例中,分别通过面向无连接的传输层协议与基于面向有连接的传输层协议将会话应答返回至源端,包括:对会话应答进行压缩处理,得到二进制数据,分别基于面向无连接的传输层协议与面向有连接的传输层协议,将二进制数据发送至源端。
为便于传输,目的端也可以对生成的会话应答进行压缩处理,得到相应的二进制数据,再分别通过面向无连接的传输层协议与面向有连接的传输层协议,反馈会话应答,那么源端也就需要对接收到的二进制数据进行解压处理,才能得到相应的会话应答。
在一个实施例中,分别通过面向无连接的传输层协议与基于面向有连接的传输层协议将会话应答返回至源端,包括:根据面向无连接的传输层协议,将会话应答封装为第三交互信令,根据面向有连接的传输层协议,将会话应答封装为第四交互信令,通过面向无连接的传输层协议发送第三交互信令至源端以及通过面向有连接的传输层协议发送第四交互信令至源端。
在建立连接之前,终端还可以根据候选地址组合进行连接检查,确定传输会话数据的最终路径。终端在上述的信令交互阶段,获得了本地与目的端各自对候选地址,终端可以将这些候选地址进行组合,得到至少一个候选地址组合,并将这些候选地址组合按优先级排序,优先级基于地址类型、媒体类型等参数确定,例如考虑延时、带宽资源、丢包等因素,通常主机类型的候选地址的优先级较高。每个候选地址组合都可能用于传输通信会话的会话数据,终端按这些候选地址组合的优先级顺序,先对最高优先级的候选地址组合向目的端发起连接检查请求,若能接收到目的端反馈的连接检查响应,则说明该候选地址组合连通,双端可以利用该候选地址组合传输会话数据,否则若未能接收到目的端反馈的连接检查响应,或是在连接检查响应反馈超时的情况下,源端可以获取下一对候选地址组合,对该下一对候选地址组合发起连接检查请求,按照这样的方式,可以从中确定最终的传输会话数据的路径与通道。
在一个实施例中,根据源端候选地址与目的端候选地址建立与源端之间的数据传输通道,包括:接收源端根据源端候选地址中的第一地址与目的端候选地址中的第二地址所发起的连接检查请求,当检查到第一地址与第二地址属于关于通信会话的候选地址组合时,向源端反馈连接检查响应,以确定由第一地址与第二地址所形成的与源端之间的数据传输通道。当第一地址与第二地址均是面向有连接传输的候选地址时,该数据传输通道即为面向有连接的数据传输通道,当第一地址与第二地址均是面向无连接传输的候选地址时,该数据传输通道即为面向无连接的数据传输通道。
在一个具体的实施例中,从源端与目的端双端的角度,描述该数据传输方法,具体包括以下步骤:
源端响应于从服务器拉取媒体流的触发操作,创建通信会话,获取通信会话的会话描述信息,根据会话描述信息,生成通信会话的会话邀请,对会话邀请进行压缩处理,得到二进制数据;
源端分别基于面向无连接的传输层协议与面向有连接的传输层协议,将二进制数据发送至目的端;
若目标端接收到通过面向无连接的传输层协议传输的二进制数据,则解压得到通过面向无连接的传输层协议传输的会话邀请,从会话邀请中获取源端的面向无连接的源端候选地址,并保存,目的端设置无连接的目的端候选地址,根据该目的端候选地址创建会话应答,通过面向无连接的传输层协议将会话应答反馈至源端;
若目标端接收到通过面向有连接的传输层协议传输的二进制数据,则解压得到通过面向有连接的传输层协议传输的会话邀请,从会话邀请中获取源端的面向有连接的源端候选地址,并保存,目的端设置有连接的目的端候选地址,根据该目的端候选地址创建会话应答,通过面向有连接的传输层协议将会话应答反馈至源端;
若源端仅接收到目的端通过面向无连接的传输层协议反馈的会话应答,则保存会话应答中用于传输会话数据的目的端候选地址,并确定关于通信会话的无连接传输通道处于连通状态;
若源端仅接收到目的端通过面向有连接的传输层协议反馈的会话应答,则保存会话应答中用于传输会话数据的目的端候选地址,并确定关于通信会话的有连接传输通道处于连通状态;
若源端在接收到目的端通过面向无连接的传输层协议反馈的会话应答,并保存会话应答中用于传输会话数据的目的端候选地址之后,接收到目的端通过面向有连接的传输层协议反馈的候选地址,则保存反馈的候选地址,并确定关于通信会话的无连接传输通道与有连接传输通道均处于连通状态;
若关于通信会话的无连接传输通道处于连通状态,则源端根据源端候选地址中的第一地址与目的端候选地址中的第二地址所形成的候选地址组合,发起关于该候选地址组合的连接检查请求;当接收到目的端响应于连接检查请求所反馈的连接检查响应时,根据候选地址组合建立与目的端之间面向无连接的数据传输通道;
若关于通信会话的有连接传输通道处于连通状态,则源端根据源端候选地址中的第一地址与目的端候选地址中的第二地址所形成的候选地址组合,发起关于该候选地址组合的连接检查请求,当接收到目的端响应于连接检查请求所反馈的连接检查响应时,根据候选地址组合建立与目的端之间面向有连接的数据传输通道;
通过数据传输通道,在源端与目的端之间传输通信会话的会话数据。
上述数据传输方法,在源端与目的端的信令交互阶段,利用面向无连接的传输层协议与面向有连接的传输层协议各自的优缺点进行互补,通过无连接传输通道与有连接传输通道的双通道信令交互,提升信令交互成功率的同时,同时实现无连接传输通道与有连接传输通道各自的连通性探测,具体而言:目的端在接收源端分别基于面向无连接的传输层协议与面向有连接的传输层协议发送的关于通信会话的会话邀请的情况下,收集该两个会话邀请中用于传输会话数据的源端候选地址,根据本地的目的端候选地址生成响应于该会话邀请的会话应答,分别通过面向无连接的传输层协议与面向有连接的传输层协议将该会话应答返回源端,以便于源端能够基于会话应答的传输状态,确定关于该通信会话的无连接传输通道与有连接传输通道各自的连通性探测结果,从而能够基于该连通性探测结果,根据源端候选地址与目的端候选地址自适应选择其中一种建立与源端之间的数据传输通道,从而在数据传输阶段,基于建立的数据传输通道与目的端之间传输该通信会话的会话数据,整个过程中源端无需在等待超时后再尝试通过其它方式建立连接,而是在实现信令交互的同时直接完成两类通道的连通性探测,极大降低数据传输的延时,提升服务体验。
应该理解的是,虽然如上的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的数据传输方法的数据传输装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个数据传输装置实施例中的具体限定可以参见上文中对于数据传输方法的限定,在此不再赘述。
在一个实施例中,如图9所示,提供了一种数据传输装置900,包括:会话邀请发送模块902、连通性探测模块904、连接建立模块906和传输模块908,其中:
会话邀请发送模块902,用于生成通信会话的会话邀请,分别基于面向无连接的传输层协议与面向有连接的传输层协议,将会话邀请发送至目的端;
连通性探测模块904,用于根据目的端对会话邀请所反馈的会话应答的传输状态,确定关于通信会话的无连接传输通道与有连接传输通道各自的连通性探测结果;
连接建立模块906,用于按连通性探测结果,建立与目的端之间的数据传输通道;
传输模块908,用于通过数据传输通道,与目的端之间传输通信会话的会话数据。
在一个实施例中,会话邀请发送模块902,还用于响应于从服务器拉取媒体流的触发操作,创建通信会话;获取通信会话的会话描述信息;根据会话描述信息,生成通信会话的会话邀请。
在一个实施例中,会话邀请发送模块902,还用于对会话邀请进行压缩处理,得到二进制数据;分别基于面向无连接的传输层协议与面向有连接的传输层协议,将二进制数据发送至目的端。
在一个实施例中,会话邀请发送模块902,还用于根据面向无连接的传输层协议,将会话邀请封装为第一交互信令;根据面向有连接的传输层协议,将会话邀请封装为第二交互信令;通过面向无连接的传输层协议发送第一交互信令至目的端以及通过面向有连接的传输层协议发送第二交互信令至目的端。
在一个实施例中,连通性探测模块904,还用于若仅接收到目的端通过面向无连接的传输层协议对第一交互信令所反馈的会话应答,则保存会话应答中用于传输会话数据的目的端候选地址,并确定关于通信会话的无连接传输通道处于连通状态;若仅接收到目的端通过面向有连接的传输层协议对第二交互信令所反馈的会话应答,则保存会话应答中用于传输会话数据的目的端候选地址,并确定关于通信会话的有连接传输通道处于连通状态。
在一个实施例中,连接建立模块906,还用于若关于通信会话的无连接传输通道处于连通状态,则根据源端候选地址中的第一地址与目的端候选地址中的第二地址所形成的候选地址组合,发起关于该候选地址组合的连接检查请求;当接收到目的端响应于连接检查请求所反馈的连接检查响应时,根据候选地址组合建立与目的端之间面向无连接的数据传输通道。
在一个实施例中,连接建立模块906,还用于若关于通信会话的有连接传输通道处于连通状态,则根据源端候选地址中的第一地址与目的端候选地址中的第二地址所形成的候选地址组合,发起关于该候选地址组合的连接检查请求;当接收到目的端响应于连接检查请求所反馈的连接检查响应时,根据候选地址组合建立与目的端之间面向有连接的数据传输通道。
在一个实施例中,连通性探测模块904,还用于若在接收到目的端通过面向无连接的传输层协议对第一交互信令所反馈的会话应答,并保存会话应答中用于传输会话数据的目的端候选地址之后,接收到目的端通过面向有连接的传输层协议对第二交互信令所反馈的候选地址,则保存反馈的候选地址,并确定关于通信会话的无连接传输通道与有连接传输通道均处于连通状态。
上述数据传输装置900,在源端与目的端的信令交互阶段,利用面向无连接的传输层协议与面向有连接的传输层协议各自的优缺点进行互补,通过无连接传输通道与有连接传输通道的双通道信令交互,在提升信令交互成功率的同时,同时实现无连接传输通道与有连接传输通道各自的连通性探测,具体而言:源端生成通信会话的会话邀请,分别基于面向无连接的传输层协议与面向有连接的传输层协议,将会话邀请发送至目的端,根据目的端对该会话邀请所反馈的会话应答的传输状态,确定关于该通信会话的无连接传输通道与有连接传输通道各自的连通性探测结果,这样,就可以直接根据连通性探测结果,自适应选择无连接传输通道或有连接传输通道来无缝地建立与目的端之间的连接,从而在数据传输阶段,基于建立的数据传输通道与目的端之间传输该通信会话的会话数据,整个过程中无需在等待超时后再尝试通过其它方式建立连接,而是在实现信令交互的同时直接完成两类通道的连通性探测,极大降低数据传输的延时,提升服务体验。
上述数据传输装置900中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,如图10所示,提供了一种数据传输装置1000,包括:会话邀请接收模块1002、源端地址添加模块1004、会话应答生成模块1006、会话应答发送模块1008和传输模块1010,其中:
会话邀请接收模块1002,用于依次接收源端分别基于面向无连接的传输层协议与基于面向有连接的传输层协议发送的关于通信会话的会话邀请;
源端地址添加模块1004,用于收集会话邀请中用于传输会话数据的源端候选地址;
会话应答生成模块1006,用于根据目的端候选地址生成响应于会话邀请的会话应答;
会话应答发送模块1008,用于分别通过面向无连接的传输层协议与基于面向有连接的传输层协议将会话应答返回至源端,以根据源端候选地址与目的端候选地址建立与源端之间的数据传输通道;
传输模块1010,用于通过数据传输通道,与源端之间传输通信会话的会话数据。
在一个实施例中,会话邀请接收模块1002,还用于依次接收源端分别基于面向无连接的传输层协议与基于面向有连接的传输层协议发送的关于通信会话的二进制数据,二进制数据为压缩的会话邀请;对二进制数据进行解压缩处理,得到关于通信会话的会话邀请。
在一个实施例中,会话应答发送模块1008,还用于对会话应答进行压缩处理,得到二进制数据;分别基于面向无连接的传输层协议与面向有连接的传输层协议,将二进制数据发送至源端。
在一个实施例中,会话应答发送模块1008,还用于根据面向无连接的传输层协议,将会话应答封装为第三交互信令;根据面向有连接的传输层协议,将会话应答封装为第四交互信令;通过面向无连接的传输层协议发送第三交互信令至源端以及通过面向有连接的传输层协议发送第四交互信令至源端。
在一个实施例中,装置还包括连接建立模块,用于接收源端根据源端候选地址中的第一地址与目的端候选地址中的第二地址所发起的连接检查请求;当检查到第一地址与第二地址属于关于通信会话的候选地址组合时,向源端反馈连接检查响应,以确定由第一地址与第二地址所形成的与源端之间的数据传输通道。
上述数据传输装置1000,在源端与目的端的信令交互阶段,利用面向无连接的传输层协议与面向有连接的传输层协议各自的优缺点进行互补,通过无连接传输通道与有连接传输通道的双通道信令交互,提升信令交互成功率的同时,同时实现无连接传输通道与有连接传输通道各自的连通性探测,具体而言:目的端在接收源端分别基于面向无连接的传输层协议与面向有连接的传输层协议发送的关于通信会话的会话邀请的情况下,收集该两个会话邀请中用于传输会话数据的源端候选地址,根据本地的目的端候选地址生成响应于该会话邀请的会话应答,分别通过面向无连接的传输层协议与面向有连接的传输层协议将该会话应答返回源端,以便于源端能够基于会话应答的传输状态,确定关于该通信会话的无连接传输通道与有连接传输通道各自的连通性探测结果,从而能够基于该连通性探测结果,根据源端候选地址与目的端候选地址自适应选择其中一种建立与源端之间的数据传输通道,从而在数据传输阶段,基于建立的数据传输通道与目的端之间传输该通信会话的会话数据,整个过程中源端无需在等待超时后再尝试通过其它方式建立连接,而是在实现信令交互的同时直接完成两类通道的连通性探测,极大降低数据传输的延时,提升服务体验。
上述数据传输装置1000中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是图1所示的服务器104,其内部结构图可以如图11所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储会话数据如媒体资源数据。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据传输方法。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是图1所示的终端102,其内部结构图可以如图12所示。该计算机设备包括处理器、存储器、输入/输出接口、通信接口、显示单元和输入装置。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口、显示单元和输入装置通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、移动蜂窝网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种数据传输方法。该计算机设备的显示单元用于形成视觉可见的画面,可以是显示屏、投影装置或虚拟现实成像装置,显示屏可以是液晶显示屏或电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图11、12中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述任一个或多个实施例描述的数据传输方法的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述任一个或多个实施例描述的数据传输方法的步骤。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述任一个或多个实施例描述的数据传输方法的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (18)
1.一种数据传输方法,其特征在于,所述方法包括:
生成通信会话的会话邀请,分别基于面向无连接的传输层协议与面向有连接的传输层协议,将所述会话邀请发送至目的端;
根据所述目的端对所述会话邀请所反馈的会话应答的传输状态,确定关于所述通信会话的无连接传输通道与有连接传输通道各自的连通性探测结果;
按所述连通性探测结果,建立与所述目的端之间的数据传输通道;
通过所述数据传输通道,与所述目的端之间传输所述通信会话的会话数据。
2.根据权利要求1所述的方法,其特征在于,所述生成通信会话的会话邀请,包括:
响应于从服务器拉取媒体流的触发操作,创建通信会话;
获取所述通信会话的会话描述信息;
根据所述会话描述信息,生成所述通信会话的会话邀请。
3.根据权利要求1所述的方法,其特征在于,所述分别基于面向无连接的传输层协议与面向有连接的传输层协议,将所述会话邀请发送至目的端,包括:
对所述会话邀请进行压缩处理,得到二进制数据;
分别基于面向无连接的传输层协议与面向有连接的传输层协议,将所述二进制数据发送至目的端。
4.根据权利要求1所述的方法,其特征在于,所述分别基于面向无连接的传输层协议与面向有连接的传输层协议,将所述会话邀请发送至目的端,包括:
根据所述面向无连接的传输层协议,将所述会话邀请封装为第一交互信令;
根据所述面向有连接的传输层协议,将所述会话邀请封装为第二交互信令;
通过面向无连接的传输层协议发送所述第一交互信令至目的端以及通过面向有连接的传输层协议发送所述第二交互信令至目的端。
5.根据权利要求4所述的方法,其特征在于,所述根据所述目的端对所述会话邀请所反馈的会话应答的传输状态,确定关于所述通信会话的无连接传输通道与有连接传输通道的连通性探测结果,包括:
若仅接收到所述目的端通过面向无连接的传输层协议对所述第一交互信令所反馈的会话应答,则保存所述会话应答中用于传输会话数据的目的端候选地址,并确定关于所述通信会话的无连接传输通道处于连通状态;
若仅接收到所述目的端通过面向有连接的传输层协议对所述第二交互信令所反馈的会话应答,则保存所述会话应答中用于传输会话数据的目的端候选地址,并确定关于所述通信会话的有连接传输通道处于连通状态。
6.根据权利要求5所述的方法,其特征在于,所述按所述连通性探测结果,建立与所述目的端之间的数据传输通道,包括:
若关于所述通信会话的无连接传输通道处于连通状态,则根据源端候选地址中的第一地址与所述目的端候选地址中的第二地址所形成的候选地址组合,发起关于该候选地址组合的连接检查请求;
当接收到所述目的端响应于所述连接检查请求所反馈的连接检查响应时,根据所述候选地址组合建立与所述目的端之间面向无连接的数据传输通道。
7.根据权利要求5所述的方法,其特征在于,所述按所述连通性探测结果,建立与所述目的端之间的数据传输通道,包括:
若关于所述通信会话的有连接传输通道处于连通状态,则根据源端候选地址中的第一地址与所述目的端候选地址中的第二地址所形成的候选地址组合,发起关于该候选地址组合的连接检查请求;
当接收到所述目的端响应于所述连接检查请求所反馈的连接检查响应时,根据所述候选地址组合建立与所述目的端之间面向有连接的数据传输通道。
8.根据权利要求4所述的方法,其特征在于,所述根据所述目的端对所述会话邀请所反馈的会话应答的传输状态,确定关于所述通信会话的无连接传输通道与有连接传输通道的连通性探测结果,包括:
若在接收到所述目的端通过面向无连接的传输层协议对所述第一交互信令所反馈的会话应答,并保存所述会话应答中用于传输会话数据的目的端候选地址之后,接收到所述目的端通过面向有连接的传输层协议对所述第二交互信令所反馈的候选地址,则保存所述反馈的候选地址,并确定关于所述通信会话的无连接传输通道与有连接传输通道均处于连通状态。
9.一种数据传输方法,其特征在于,所述方法包括:
依次接收源端分别基于面向无连接的传输层协议与基于面向有连接的传输层协议发送的关于通信会话的会话邀请;
收集所述会话邀请中用于传输会话数据的源端候选地址;
根据目的端候选地址生成响应于所述会话邀请的会话应答;
分别通过面向无连接的传输层协议与基于面向有连接的传输层协议将所述会话应答返回至所述源端,以根据所述源端候选地址与所述目的端候选地址建立与所述源端之间的数据传输通道;
通过所述数据传输通道,与所述源端之间传输所述通信会话的会话数据。
10.根据权利要求9所述的方法,其特征在于,所述依次接收源端分别基于面向无连接的传输层协议与基于面向有连接的传输层协议发送的关于通信会话的会话邀请,包括:
依次接收源端分别基于面向无连接的传输层协议与基于面向有连接的传输层协议发送的关于通信会话的二进制数据,所述二进制数据为压缩的会话邀请;
对所述二进制数据进行解压缩处理,得到关于所述通信会话的会话邀请。
11.根据权利要求9所述的方法,其特征在于,所述分别通过面向无连接的传输层协议与基于面向有连接的传输层协议将所述会话应答返回至所述源端,包括:
对所述会话应答进行压缩处理,得到二进制数据;
分别基于面向无连接的传输层协议与面向有连接的传输层协议,将所述二进制数据发送至所述源端。
12.根据权利要求9所述的方法,其特征在于,所述分别通过面向无连接的传输层协议与基于面向有连接的传输层协议将所述会话应答返回至所述源端,包括:
根据所述面向无连接的传输层协议,将所述会话应答封装为第三交互信令;
根据所述面向有连接的传输层协议,将所述会话应答封装为第四交互信令;
通过面向无连接的传输层协议发送所述第三交互信令至所述源端以及通过面向有连接的传输层协议发送所述第四交互信令至所述源端。
13.根据权利要求9所述的方法,其特征在于,所述根据所述源端候选地址与所述目的端候选地址建立与所述源端之间的数据传输通道,包括:
接收所述源端根据所述源端候选地址中的第一地址与所述目的端候选地址中的第二地址所发起的连接检查请求;
当检查到所述第一地址与所述第二地址属于关于所述通信会话的候选地址组合时,向所述源端反馈连接检查响应,以确定由所述第一地址与所述第二地址所形成的与所述源端之间的数据传输通道。
14.一种数据传输装置,其特征在于,所述装置包括:
会话邀请发送模块,用于生成通信会话的会话邀请,分别基于面向无连接的传输层协议与面向有连接的传输层协议,将所述会话邀请发送至目的端;
连通性探测模块,用于根据所述目的端对所述会话邀请所反馈的会话应答的传输状态,确定关于所述通信会话的无连接传输通道与有连接传输通道各自的连通性探测结果;
连接建立模块,用于按所述连通性探测结果,建立与所述目的端之间的数据传输通道;
传输模块,用于通过所述数据传输通道,与所述目的端之间传输所述通信会话的会话数据。
15.一种数据传输装置,其特征在于,所述装置包括:
会话邀请接收模块,用于依次接收源端分别基于面向无连接的传输层协议与基于面向有连接的传输层协议发送的关于通信会话的会话邀请;
源端地址添加模块,用于收集所述会话邀请中用于传输会话数据的源端候选地址;
会话应答生成模块,用于根据目的端候选地址生成响应于所述会话邀请的会话应答;
会话应答发送模块,用于分别通过面向无连接的传输层协议与基于面向有连接的传输层协议将所述会话应答返回至所述源端,以根据所述源端候选地址与所述目的端候选地址建立与所述源端之间的数据传输通道;
传输模块,用于通过所述数据传输通道,与所述源端之间传输所述通信会话的会话数据。
16.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至13中任一项所述的方法的步骤。
17.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至13中任一项所述的方法的步骤。
18.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至13中任一项所述的方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210958709.7A CN117640594A (zh) | 2022-08-09 | 2022-08-09 | 数据传输方法、装置、设备、存储介质和计算机程序产品 |
PCT/CN2023/097116 WO2024032102A1 (zh) | 2022-08-09 | 2023-05-30 | 数据传输方法、装置、设备、存储介质和计算机程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210958709.7A CN117640594A (zh) | 2022-08-09 | 2022-08-09 | 数据传输方法、装置、设备、存储介质和计算机程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117640594A true CN117640594A (zh) | 2024-03-01 |
Family
ID=89850556
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210958709.7A Pending CN117640594A (zh) | 2022-08-09 | 2022-08-09 | 数据传输方法、装置、设备、存储介质和计算机程序产品 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN117640594A (zh) |
WO (1) | WO2024032102A1 (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106161179B (zh) * | 2015-03-26 | 2019-12-20 | 中兴通讯股份有限公司 | 一种基于网页的实时通信的媒体处理方法与装置 |
CN109274634B (zh) * | 2017-07-18 | 2021-06-11 | 腾讯科技(深圳)有限公司 | 多媒体通信方法及装置、存储介质 |
WO2020214664A1 (en) * | 2019-04-18 | 2020-10-22 | Greeneden U.S. Holdings Ii, Llc. | A system and method for analyzing web application network performance |
CN113315823A (zh) * | 2021-05-21 | 2021-08-27 | 广州赞赏信息科技有限公司 | 一种低延迟音视频传输方法 |
CN113630439B (zh) * | 2021-06-30 | 2023-05-05 | 网宿科技股份有限公司 | 实时通信rtc连接方法、服务器及存储介质 |
-
2022
- 2022-08-09 CN CN202210958709.7A patent/CN117640594A/zh active Pending
-
2023
- 2023-05-30 WO PCT/CN2023/097116 patent/WO2024032102A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2024032102A1 (zh) | 2024-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11108570B2 (en) | Method and apparatus for multimedia communication, and storage medium | |
CN111479121B (zh) | 一种基于流媒体服务器的直播方法及系统 | |
CN113132376B (zh) | 媒体数据处理方法及装置、系统、电子设备和存储介质 | |
US20180295190A1 (en) | Communication sessions at a coap protocol layer | |
CN103348657B (zh) | 流媒体播放方法、设备及系统 | |
US11843642B1 (en) | Serverless signaling in peer-to-peer session initialization | |
US20170359187A1 (en) | Scalable real-time videoconferencing over WebRTC | |
CN111787026B (zh) | 一种媒体数据的传输方法、装置、设备及存储介质 | |
CN112291316A (zh) | 连接处理方法、装置、电子设备及计算机可读存储介质 | |
CN114679434A (zh) | 会话消息处理系统、方法、计算机设备及存储介质 | |
US20130080513A1 (en) | Multi-party communication sessions via broadcast notification network | |
WO2022100199A1 (zh) | 数据传输方法、装置、介质、电子设备及网络接入设备 | |
Emmanuel et al. | A peer-to-peer architecture for real-time communication using Webrtc | |
CN115865878A (zh) | 一种媒体流的传输控制方法、装置、存储介质和电子设备 | |
US11909780B2 (en) | Enabling vertical application layer server for peer-to-peer media parameter negotiation | |
CN117640594A (zh) | 数据传输方法、装置、设备、存储介质和计算机程序产品 | |
CN115802007A (zh) | 基于rtsp协议的监控系统控制方法、设备及可读存储介质 | |
CN112468886B (zh) | 组播数据转发方法、装置、设备及可读存储介质 | |
CN114710568A (zh) | 音视频数据通信方法、设备及存储介质 | |
CN114679433B (zh) | 视频访问会话管理系统、方法、计算机设备及存储介质 | |
CN114679435B (zh) | 会话管理系统、方法、计算机设备及存储介质 | |
WO2023160076A1 (zh) | 信息交互方法、装置及计算机设备、存储介质、程序产品 | |
US20230199040A1 (en) | Computerized system and method for suppressing audio leakage | |
CN116684459A (zh) | 数据传输方法、装置、计算机设备、存储介质和产品 | |
CN117714421A (zh) | 数据传输方法、装置、电子设备、存储介质及程序产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |