CN113630439B - 实时通信rtc连接方法、服务器及存储介质 - Google Patents

实时通信rtc连接方法、服务器及存储介质 Download PDF

Info

Publication number
CN113630439B
CN113630439B CN202110735839.XA CN202110735839A CN113630439B CN 113630439 B CN113630439 B CN 113630439B CN 202110735839 A CN202110735839 A CN 202110735839A CN 113630439 B CN113630439 B CN 113630439B
Authority
CN
China
Prior art keywords
information
udp
server
request
service process
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.)
Active
Application number
CN202110735839.XA
Other languages
English (en)
Other versions
CN113630439A (zh
Inventor
陈祥祥
庄晓川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wangsu Science and Technology Co Ltd
Original Assignee
Wangsu Science and Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wangsu Science and Technology Co Ltd filed Critical Wangsu Science and Technology Co Ltd
Priority to CN202110735839.XA priority Critical patent/CN113630439B/zh
Priority to EP21926053.6A priority patent/EP4135296B1/en
Priority to PCT/CN2021/110611 priority patent/WO2023272874A1/zh
Publication of CN113630439A publication Critical patent/CN113630439A/zh
Priority to US17/895,428 priority patent/US20230012322A1/en
Application granted granted Critical
Publication of CN113630439B publication Critical patent/CN113630439B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/141Setup of application sessions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/65Network streaming protocols, e.g. real-time transport protocol [RTP] or real-time control protocol [RTCP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1069Session establishment or de-establishment
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1101Session protocols
    • H04L65/1104Session initiation protocol [SIP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1101Session protocols
    • H04L65/1108Web based protocols, e.g. webRTC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/612Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for unicast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/80Responding to QoS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/163In-band adaptation of TCP data exchange; In-band control procedures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/164Adaptation or special uses of UDP protocol

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明实施例涉及通信技术领域,公开了一种实时通信RTC连接方法、服务器及存储介质,服务器被配置为业务进程与UDP端口一一对应绑定,在基于从服务器的TCP端口接收的一个或多个客户端发送的用于资源协商的SDP请求信息后,业务进程向各客户端分别发送SDP响应信息,该SDP响应信息中携带处理SDP请求的业务进程对应的UDP端口信息;业务进程从对应的UDP端口接收客户端发送的UDP连接请求,并采用UDP connect方式进行UDP连接,从而实现RTC连接。由于本方案中,预先配置业务进程与UDP端口一一对应,从而使同一UDP端口接收的所有客户端的所有UDP请求都可以被输送到同一业务进程,实现在有限端口下服务多个用户端,从而解决因开辟大量端口所带来的安全性差、运营维护难度大等问题。

Description

实时通信RTC连接方法、服务器及存储介质
技术领域
本发明实施例涉及通信技术领域,特别涉及一种实时通信RTC连接方法、服务器及存储介质。
背景技术
实时通信(Real-time Communications,RTC)最开始是由谷歌提出的,采用webrtc应用于web视频会议,传输层协议使用用户数据报协议(User Datagram Protocol,UDP),且针对的是客户端之间的P2P方式,所以端口是动态变化的,针对每个连接都是动态的分配端口。由于是客户端与客户端通信,因此传统方式的是采用在客户端侧开辟多个端口,每个端口对应一个客户端来区分与其连接的其他不同的客户端。因为同时连接的其他客户端并不会太多,所以在客户端侧采用动态的为每个与其连接的其他不同的客户端配置一个端口的方式不会存在太大问题。
当直播中的内容分发网络(Content Delivery Network,CDN)与RTC开始逐渐联系起来时,端口开辟方式开始成为一个需要密切关注的问题。因为在服务器一侧,一个服务器可能需要同时连接成千上万的客户端进行网络直播,如果仍采用传统方式为每一个客户端配置一个端口,则需要配置的端口数量将会很大,从而出现因端口数量庞大而导致的端口维护困难、易遭到攻击,且服务的客户数量有限等问题。
发明内容
本发明实施方式的目的在于提供一种数据处理方法、服务器及存储介质,能够有效解决传统RTC方式为适应CDN服务而开辟大量端口所带来的安全性差、运营维护难度大等问题。
为解决上述技术问题,本发明的实施方式提供了一种实时通信RTC连接方法,应用于服务器,所述服务器被配置为针对所述服务器上启动的业务进程分配UDP端口进行绑定,使业务进程与UDP端口一一对应,所述方法包括:
基于从所述服务器的TCP端口接收的一个或多个客户端发送的用于资源协商的SDP请求信息,向各客户端分别发送SDP响应信息,所述SDP响应信息中携带处理所述SDP请求的业务进程对应的UDP端口信息;
所述业务进程从对应的UDP端口接收所述客户端发送的UDP连接请求,并采用UDPconnect方式进行UDP连接。
本发明的实施方式还提供了一种服务器,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如上所述的实时通信RTC连接方法。
本发明的实施方式还提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的实时通信RTC连接方法。
本发明实施方式相对于现有技术而言,服务器被配置为业务进程与UDP端口一一对应绑定,在基于从服务器的TCP端口接收的一个或多个客户端发送的用于资源协商的SDP请求信息后,业务进程向各客户端分别发送SDP响应信息,该SDP响应信息中携带处理SDP请求的业务进程对应的UDP端口信息;业务进程从对应的UDP端口接收客户端发送的UDP连接请求,并采用UDP connect方式进行UDP连接,从而实现RTC连接。由于本方案中,预先配置业务进程与UDP端口一一对应,从而使同一UDP端口接收的所有客户端的所有UDP请求都可以被输送到同一业务进程,实现在有限端口下服务多个用户端,从而解决因开辟大量端口所带来的安全性差、运营维护难度大等问题。
并且,由于业务进程与UDP端口一一对应,避免同一客户端的UDP请求被输送到不同业务进程时而导致业务进程因无法从其他进程获取相关数据而不能执行业务处理。
并且,由于处于SDP请求的业务进程在SDP响应信息中携带的是与本业务进程对应的UDP端口,故可以将同一客户端的SDP请求和UDP请求传输到同一业务进程中,避免当这两个类型的请求路由到不同业务进程时而导致业务进程因无法从其他进程获取相关数据而不能执行业务处理。
并且,由于采用UDP connect方式进行UDP连接,可以对同一客户端的不同UDP请求实现有状态连接。
另外,处理SDP请求的业务进程为服务器基于负载均衡原则从本地已启动的业务进程中选择的一个业务进程。通过负载均衡可以将所有客户端的RTC连接均匀的分配到各个业务进程中,从而平衡后续各业务进程的UDP请求的业务量。
另外,所述SDP响应信息中携带业务进程生成的第一校验信息;UDP连接请求中携带第二校验信息;所述业务进程采用UDP connect方式进行UDP连接之前,包括:基于第一校验信息对第二校验信息进行校验,若校验通过则执行采用UDP connect方式进行UDP连接的处理。通过设置校验信息,以保证UDP连接的安全性和有效性。
另外,所述SDP请求信息为携带在客户端发送的HTTP请求信息中的offer信息,HTTP请求信息中还包含客户端本次发起的SDP请求的相关信息;SDP响应信息为携带在业务进程发送的HTTP响应信息中的answer信息;第一验证信息为包含在answer信息中的一个属性信息;业务进程接收SDP请求信息之后,还包括:业务进程创建各SDP请求信息对应的映射表项;所述映射表项包括:SDP请求的相关信息,以及第一校验信息。通过创建映射表项,可将SDP请求的相关信息、校验信息进行映射,方便对SDP请求信息进行校验,以及后续查询SDP请求的相关信息。
另外,基于第一校验信息对第二校验信息进行校验,包括:若已存储的映射表项中存在第二校验信息对应的映射表项,则校验成功。
另外,所述第一校验信息包括:生成第一校验信息的时间戳、业务进程标识和RTC连接序号。该生成方式可以最大限定保证校验信息的唯一性。
另外,所述SDP请求的相关信息包括:所请求流媒体的域名和流名信息。
另外,所述offer信息包括:客户端支持的音视频编码参数;所述answer信息包括:服务器反馈的音视频编码参数;其中,所述服务器反馈的音视频编码参数为,所述服务器基于所述HTTP请求信息中的域名和流名信息,从直播服务器获取的直播的音视频编码参数,并将该音视频编码参数作为所述服务器反馈的音视频编码参数。
另外,所述UDP连接请求包含基于STUN协议的绑定请求,所述第二校验信息为携带在绑定请求中的STUN鉴权信息。通过第二校验信息实现服务器对STUN协议的绑定请求进行校验。
另外,所述采用UDP connect方式进行UDP连接的处理,包括:创建本次连接的唯一文件描述符,将所述文件描述符与所述业务进程所对应的端口进行绑定,并通过反向链接对端的地址,将本次连接对应的五元组信息进行关联;基于所述文件描述符将本次连接对应的五元组信息以及业务进程进行关联,完成UDP连接。通过将文件描述符与五元组信息进行绑定,可以借助文件描述符对不同客户端的UDP连接进行区分,同时保证业务进程reload后,已连接的UDP数据包可以正常收发,所属同一个请求的多个UDP包不会混乱。
另外,所述基于文件描述符将本次连接对应的五元组信息以及业务进程进行关联,完成UDP连接,包括:将所述文件描述符设置为所述业务进程监听的读写事件,并设置所述文件描述符的读写事件回调函数,以通过该读写事件回调函数接收处理后续与该文件描述符对应的UDP请求。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是根据本发明第一实施方式的实时通信RTC连接方法的具体流程图;
图2是根据本发明第二实施方式的一种实时通信RTC连接方法的具体流程图;
图3是根据本发明第二实施方式的另一种实时通信RTC连接方法的具体流程图;
图4是根据本发明第三实施方式的服务器的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。
RTC与其他协议请求不同,会涉及两种协议请求的交互过程。第一个是交换描述会话协议(Session Description Protocol,SDP)的过程,即信令交换。该信令交换过程通常采用HTTP协议进行(或者websocket等其他协议)。而HTTP协议基于传输控制协议(Transmission Control Protocol,TCP),需要通过设备上的TCP端口进行信息传输。第二个协议请求交互过程,则是用户数据报协议(User Datagram Protocol,UDP)的连接过程。该过程主要包括STUN(Simple Traversal of UDP over NATs,NAT的UDP简单穿越)、DTLS(Datagram Transport Layer Security,数据包传输层安全性协议)及RTP/RTCP(实时传输协议/实时传输控制协议)请求的处理。故需要保证HTTP与后续的UDP请求可以输送到同一个进程,或者到不同进程时需要可以读取到之前信令交互的相关信息,包括流名等。
RTC整个交互过程如下:
首先基于TCP协议进行SDP信令交互,由客户端发起sdp offer请求,服务器反馈sdp answer响应,以为后续创建UDP连接的相关的信息进行资源协商。
然后基于RTC协议进行UDP请求的处理,首先是STUN请求,然后是DTLS握手,最后就是音视频数据RTC包的传输。而UDP是无连接的,每个数据包都是独立的,没有连接的概念,所以传统的做法是通过UDP建立不同的端口来区分不同的客户端,这样后续从某个端口收到数据包即可知道对应是哪个客户端的请求,从而可以在服务器上服务多个不同的客户端。但当并发量比较大时,在服务器上就需同时开辟非常多的端口来对应不同的客户,在运维和安全上都存在风险。
为解决这一问题,本发明实施例提出采用一个进程对应一个端口的方式实现RTC连接。这种方式下每个进程独立,无需进程间通信。请求到同一个进程的所有客户端使用同一个端口,不同进程使用不同端口。这种方式下服务器上最多开辟与进程个数相同的端口,而由于进程数一般不会很多,所以这种方式也可称为有限端口,即不会像传统方式中每个客户对应一个端口而需要开辟那么多端口。
在基于HTTP进行信令交互时,每个进程分配的端口号通过SDP消息通知给客户端,后续客户端的UDP请求通过STUN、DTLS、RTP/RTCP都会发送到该端口,即将同一客户端的所有请求传输到相同进程,在同一个进程空间内即可获取到之前信令交互保存的流名等信息,无需在通过进程间通信(Inter Process Communication,IPC)方式进行交互获取。
本发明的第一实施方式涉及一种实时通信RTC连接方法,应用于服务器,该服务器被配置为针对服务器上启动的业务进程分配UDP端口进行绑定,使业务进程与UDP端口一一对应。其中,业务进程为实际处理业务请求的进程,而非用于传输业务请求的主进程或者负责负载均衡的调度进程。
具体地,在业务进程启动时服务器通过预先配置的端口范围,为业务进程分配一个UDP端口并将业务进程绑定到该UDP端口,一个业务进程对应一个UDP端口,这样使UDP端口在可控制范围内。比如预先配置的UDP端口范围是16000-16030,现有30个UDP端口,供7个业务进程使用,则每个进程可使用的UDP端口数是30/7≈4。在每次启动业务进程时只使用一个UDP端口,主要是避免绑定第一个UDP端口失败时可以继续绑定第二个UDP端口,例如,第一个业务进程对应16000端口,第二个业务进程对应16004端口,第三个业务进程对应16008端口。如果不想申请放开太多端口,也可以只申请进程个数的端口即可,如7个业务进程,则只需申请7个UDP端口。同时需要设置reuseport,这样多进程可以通过reload方式新旧进程共存,也不影响数据的交互。
如图1所示,本发明实施方式的实时通信RTC连接方法包括如下步骤。
步骤101:基于从服务器的TCP端口接收的一个或多个客户端发送的用于资源协商的SDP请求信息,向各客户端分别发送SDP响应信息,SDP响应信息中携带处理SDP请求的业务进程对应的UDP端口信息。
具体地,服务器上设置有TCP端口,用于接收客户端发送的HTTP的请求信息。客户端通过HTTP协议发起SDP请求信息与服务器进行资源协商的信令交互过程。该信令交互过程的目的是为后续创建UDP连接的相关的信息进行资源协商。此外,服务器会利用资源协商过程指示客户端发送UDP连接请求的端口,即UDP端口。服务器将指示的UDP端口信息携带在SDP响应信息中反馈给客户端。
其中,服务器在接收到SDP请求信息后,根据当前服务器上所有业务进程的负载情况,从中选择出一个业务进程来接收和处理当前客户端发送的SDP请求。即:处理SDP请求的业务进程为服务器基于负载均衡原则从本地已启动的业务进程中选择的一个业务进程。而被选择的业务进程会将本业务进程对应的UDP端口携带在SDP响应信息中反馈给客户端,以指示客户端通过该UDP端口向服务器发送UDP请求,从而使后续的UDP请求仍能被传输到本业务进程上进行处理。
步骤102:业务进程从对应的UDP端口接收客户端发送的UDP连接请求。
客户端接收到服务器的业务进程反馈的SDP响应信息后,基于资源协商结果构建UDP请求信息,并通过SDP响应信息中携带的UDP端口将UDP请求信息发送给服务器,以开始进行UDP连接。
步骤103:业务进程采用UDP connect方式进行UDP连接。
由于UDP是无连接的,每个数据包都是独立的,没有连接的概念,因此本方案中采用UDP connect方式进行UDP连接,可以在创建一个新的连接时,对该连接的相关数据进行记录(比如该连接对应的五元组信息),当再次接收到UDP请求时就可以查询记录的数据获取之前的状态,从而为无状态的UDP连接提供有状态的连接的效果。。
与相关技术比较,本发明实施方式中服务器被配置为业务进程与UDP端口一一对应绑定,在基于从服务器的TCP端口接收的一个或多个客户端发送的用于资源协商的SDP请求信息后,业务进程向各客户端分别发送SDP响应信息,该SDP响应信息中携带处理SDP请求的业务进程对应的UDP端口信息;业务进程从对应的UDP端口接收客户端发送的UDP连接请求,并采用UDP connect方式进行UDP连接,从而实现RTC连接。由于本方案中,预先配置业务进程与UDP端口一一对应,从而使同一UDP端口接收的所有客户端的所有UDP请求都可以被输送到同一业务进程,实现在有限端口下服务多个用户端,从而解决因开辟大量端口所带来的安全性差、运营维护难度大等问题。
并且,由于业务进程与UDP端口一一对应,避免同一客户端的UDP请求被输送到不同业务进程时而导致业务进程因无法从其他进程获取相关数据而不能执行业务处理。
并且,由于处于SDP请求的业务进程在SDP响应信息中携带的是与本业务进程对应的UDP端口,故可以将同一客户端的SDP请求和UDP请求传输到同一业务进程中,避免当这两个类型的请求路由到不同业务进程时而导致业务进程因无法从其他进程获取相关数据而不能执行业务处理。
并且,由于采用UDP connect方式进行UDP连接,可以对同一客户端的不同UDP请求实现有状态连接。
本发明的第二实施方式涉及一种实时通信RTC连接方法,第二实施方式是对第一实施方式进行的改进,改进之处在于:在执行UDP连接之前,利用服务器在资源协商阶段生成校验信息对UDP连接请求进行校验。即在服务器反馈的SDP响应信息中携带业务进程生成的第一校验信息(步骤101’);相应地,UDP连接请求中携带第二校验信息(步骤102’)。该第二校验信息为服务器反馈给客户端的校验信息。为了加以区分,将SDP响应信息中的校验信息记为第一校验信息,将UDP连接请求中携带校验信息记为第二校验信息。
如图2所示,上述方法实施例中在步骤103之前,还包括如下步骤。
步骤104:基于第一校验信息对第二校验信息进行校验。若校验通过则执行步骤103,采用UDP connect方式进行UDP连接的处理。本实施例中对第一校验信息的内容不做限定。
在一个例子中,上述SDP请求信息可为携带在客户端发送的HTTP请求信息中的offer信息,HTTP请求信息中还包含客户端本次发起的SDP请求的相关信息,例如该相关信息可以包括客户端所请求的流媒体的域名和流名信息。SDP响应信息可为携带在业务进程发送的HTTP响应信息中的answer信息;第一验证信息为包含在answer信息中的一个属性信息。本实施例中,可通过构建各SDP请求信息对应的映射表项,实现对同一客户端后续发送的UDP连接请求的验证。如图3所述,本实施例的实时通信RTC连接方法包括如下步骤。
步骤201:基于从服务器的TCP端口接收的一个或多个客户端发送的HTTP请求信息,该HTTP请求信息中包含用于资源协商的SDP请求信息。
其中,所述offer信息包括:客户端支持的音视频编码参数,如视频采用H264,音频采用opus。此外,在HTTP请求信息中还包括:客户端本次发起的SDP请求的相关信息,例如包括客户端所请求的流媒体的域名和流名信息。
步骤202:向各客户端分别发送HTTP响应信息,所述HTTP响应信息中包含携带资源协商结果的SDP响应信息。上述第一验证信息为包含在answer信息(SDP响应信息)中的一个属性信息。
所述answer信息包括:服务器反馈的音视频编码参数。
其中,服务器反馈的音视频编码参数为,服务器基于HTTP请求信息中的域名和流名信息,从直播服务器获取的直播的音视频编码参数,并将该音视频编码参数作为服务器反馈的音视频编码参数。
具体地,服务器在构建answer信息,即SDP响应信息时,为了得到客户端所请求的流媒体的真实的音视频信息,本实施例采用同步回源的方式,即同步向直播服务器发起后端的推拉流请求,待得到后端直播服务器的响应后,构造对应的音视频编码参数携带在answer信息中响应给客户端。
关于构建第一验证信息的过程:服务器接收包含offer信息的HTTP请求信息,其中offer信息中会携带一属性信息ice-ufrag,该属性信息用于对客户端进行识别。同样,服务器在返回给客户端的HTTP响应信息中的answer信息中也会携带一属性信息ice-ufrag,该属性信息用于对服务器进行识别。服务器以该属性信息作为第一校验信息,在构建该属性信息时,为了对不同客户的RTC连接进行区分,该属性信息可包括如下字段:当前时间戳_进程PID_RTC_序号。
其中,“当前时间戳”为生成该属性信息(第一校验信息)的时间戳、“进程PID”为当前业务进程标识、“RTC_序号”为当前RTC连接的序号。当序号达到最大值时重新从0开始,以确保当前时刻每个业务进程反馈给每个客户端的ice_ufrag都是唯一的。
步骤203:业务进程创建各SDP请求信息对应的映射表项;映射表项包括:SDP请求的相关信息,以及第一校验信息。
具体地,服务器生成ice-ufrag后,以ice-ufrag做为key,SDP请求的相关信息(域名、流名信息)做为value,生成一个映射表项(ice-ufrag,SDP请求的相关信息),添加到预先构建的映射表中。
步骤204:业务进程从对应的UDP端口接收客户端发送的UDP连接请求。该UDP连接请求中包括第二校验信息;
客户端接收到服务器的业务进程反馈的SDP响应信息后,基于资源协商结果构建UDP请求信息,并通过SDP响应信息中携带的UDP端口将UDP请求信息发送给服务器,以开始进行UDP连接。
具体地,客户端收到SDP响应信息后,从中提取ice_ufrag等相关参数,同时也会拿到ice candidate中的ip地址和端口信息(服务器的IP地址和UDP端口的信息)。然后向服务器发起UDP连接。其中首先发起的是STUN协议的绑定请求(STUN的binding request请求),同时该绑定请求中携带username属性,该属性格式是server_ice_ufrag:client_ice_ufrag,其中的server_ice_ufrag就是上述服务器发送的UDP响应信息中的ice_ufrag。由于该信息携带在UDP请求信息中,即为第二校验信息。该第二校验信息作为所述绑定请求中的STUN鉴权信息,以供服务器对该请求进行校验。客户端将绑定请求发送至服务器的指定IP地址和端口(UDP响应信息中ice candidate中的ip地址和端口)。
步骤205:判断已存储的映射表项中是否存在第二校验信息对应的映射表项。如果存在,则校验成功,执行步骤206。
具体地,服务器收到客户端发送的stun binding request请求后,解析该请求,得到对应的username属性,然后取出冒号左边的内容做为key,在上述映射表中查找是否存在以server_ice_ufrag为key的映射表项,如果存在,则校验成功,执行下一步骤,否则校验失败,结束请求。
步骤206:业务进程采用UDP connect方式进行UDP连接
在一个例子中,业务进程可先创建本次连接的唯一文件描述符,将文件描述符与业务进程所对应的端口进行绑定,并通过反向链接对端的地址,将本次连接对应的五元组信息进行关联;基于文件描述符将本次连接对应的五元组信息以及业务进程进行关联,完成UDP连接。
具体地,业务进程针对本次的binding request请求,创建一个文件描述符fd,然后将fd绑定到本业务进程对应的UDP端口,接着connect对端(客户端)的IP地址,将本次连接对应的五元组信息进行关联,伪代码如下:
socket fd;
bind(fd,local_sockaddr,local_socklen);
connect(fd,remote_sockaddr,remote_socklen);
之后,基于文件描述符将本次连接对应的五元组信息以及业务进程进行关联,完成UDP连接。
在一个例子中,可将文件描述符设置为业务进程监听的读写事件,并设置文件描述符的读写事件回调函数,以通过该读写事件回调函数接收处理后续与该文件描述符对应的UDP请求。
具体地,可将fd加入该业务进程的epoll监听对应的读写事件,此处需要添加该fd的读事件回调函数,该函数是RTC对应UDP请求的统一入口函数,在该函数接中收处理所有RTC的UDP请求,并根据具体标识走对应的分支,如STUN、DTLS、SRTP\SRTCP。
之后,构造stun binding response响应给客户端。
后续所有的UDP请求都是通过与UDP端口绑定的fd注册的读写事件进行操作,实现多个不同客户端的UDP请求的有状态连接。
与相关技术相比,本发明实施方式通过设置校验信息,以保证UDP连接的安全性和有效性;通过创建映射表项,可将SDP请求的相关信息、校验信息进行映射,方便对SDP请求信息进行校验,以及后续查询SDP请求的相关信息;通过设置文件描述符将RTC连接涉及的5元组信息进行绑定,实现UDP的有状态连接。
本发明第三实施方式涉及一种服务器,如图4所示,包括至少一个处理器302;以及,与至少一个处理器302通信连接的存储器;其中,存储器301存储有可被至少一个处理器302执行的指令,指令被至少一个处理器302执行,以使至少一个处理器302能够执行上述任一方法实施例。
其中,存储器301和处理器302采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器302和存储器301的各种电路连接在一起。总线还可以将诸如***设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器302处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器302。
处理器302负责管理总线和通常的处理,还可以提供各种功能,包括定时,***接口,电压调节、电源管理以及其他控制功能。而存储器301可以被用于存储处理器302在执行操作时所使用的数据。
本发明第四实施方式涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述任一方法实施例。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。

Claims (12)

1.一种实时通信RTC连接方法,其特征在于,应用于服务器,所述服务器被配置为针对所述服务器上启动的业务进程分配UDP端口进行绑定,使业务进程与UDP端口一一对应,所述方法包括:
基于从所述服务器的TCP端口接收的一个或多个客户端发送的用于资源协商的SDP请求信息,向各客户端分别发送SDP响应信息,所述SDP响应信息中携带处理所述SDP请求的业务进程对应的UDP端口信息;所述处理所述SDP请求的业务进程为所述服务器基于负载均衡原则从本地已启动的业务进程中选择的一个业务进程;由被选择的业务进程将自身对应的UDP端口信息携带在所述SDP响应消息中反馈给客户端;
所述业务进程从对应的UDP端口接收所述客户端发送的UDP连接请求,并采用UDPconnect方式进行UDP连接。
2.根据权利要求1所述的方法,其特征在于,所述SDP响应信息中携带所述业务进程生成的第一校验信息;所述UDP连接请求中携带第二校验信息;
所述业务进程采用UDP connect方式进行UDP连接之前,包括:
基于所述第一校验信息对所述第二校验信息进行校验,若校验通过则执行采用UDPconnect方式进行UDP连接的处理。
3.根据权利要求2所述的方法,其特征在于,所述SDP请求信息为携带在所述客户端发送的HTTP请求信息中的offer信息,所述HTTP请求信息中还包含所述客户端本次发起的SDP请求的相关信息;所述SDP响应信息为携带在所述业务进程发送的HTTP响应信息中的answer信息;所述第一校验信息为包含在所述answer信息中的一个属性信息;
所述业务进程接收所述SDP请求信息之后,还包括:
所述业务进程创建各所述SDP请求信息对应的映射表项;所述映射表项包括:所述SDP请求的相关信息,以及所述第一校验信息。
4.根据权利要求3所述的方法,其特征在于,基于所述第一校验信息对所述第二校验信息进行校验,包括:
若已存储的映射表项中存在所述第二校验信息对应的映射表项,则校验成功。
5.根据权利要求3所述的方法,其特征在于,所述第一校验信息包括:生成所述第一校验信息的时间戳、业务进程标识和RTC连接序号。
6.根据权利要求3所述的方法,其特征在于,所述SDP请求的相关信息包括:所请求流媒体的域名和流名信息。
7.根据权利要求6所述的方法,其特征在于,所述offer信息包括:客户端支持的音视频编码参数;所述answer信息包括:服务器反馈的音视频编码参数;
其中,所述服务器反馈的音视频编码参数为,所述服务器基于所述HTTP请求信息中的域名和流名信息,从直播服务器获取的直播的音视频编码参数,并将该音视频编码参数作为所述服务器反馈的音视频编码参数。
8.根据权利要求3所述的方法,其特征在于,所述UDP连接请求包含基于STUN协议的绑定请求,所述第二校验信息为携带在所述绑定请求中的STUN鉴权信息。
9.根据权利要求8所述的方法,其特征在于,所述采用UDP connect方式进行UDP连接的处理,包括:
创建本次连接的唯一文件描述符,将所述文件描述符与所述业务进程所对应的端口进行绑定,并通过反向链接对端的地址,将本次连接对应的五元组信息进行关联;
基于所述文件描述符将本次连接对应的五元组信息以及业务进程进行关联,完成UDP连接。
10.根据权利要求9所述的方法,其特征在于,所述基于所述文件描述符将本次连接对应的五元组信息以及业务进程进行关联,完成UDP连接,包括:
将所述文件描述符设置为所述业务进程监听的读写事件,并设置所述文件描述符的读写事件回调函数,以通过该读写事件回调函数接收并处理后续与该文件描述符对应的UDP请求。
11.一种服务器,其特征在于,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1至10中任一项所述的实时通信RTC连接方法。
12.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至10中任一项所述的实时通信RTC连接方法。
CN202110735839.XA 2021-06-30 2021-06-30 实时通信rtc连接方法、服务器及存储介质 Active CN113630439B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN202110735839.XA CN113630439B (zh) 2021-06-30 2021-06-30 实时通信rtc连接方法、服务器及存储介质
EP21926053.6A EP4135296B1 (en) 2021-06-30 2021-08-04 Real-time communication (rtc) connection method, server, and storage medium
PCT/CN2021/110611 WO2023272874A1 (zh) 2021-06-30 2021-08-04 实时通信rtc连接方法、服务器及存储介质
US17/895,428 US20230012322A1 (en) 2021-06-30 2022-08-25 Method for real-time communication connection, server and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110735839.XA CN113630439B (zh) 2021-06-30 2021-06-30 实时通信rtc连接方法、服务器及存储介质

Publications (2)

Publication Number Publication Date
CN113630439A CN113630439A (zh) 2021-11-09
CN113630439B true CN113630439B (zh) 2023-05-05

Family

ID=78378654

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110735839.XA Active CN113630439B (zh) 2021-06-30 2021-06-30 实时通信rtc连接方法、服务器及存储介质

Country Status (4)

Country Link
US (1) US20230012322A1 (zh)
EP (1) EP4135296B1 (zh)
CN (1) CN113630439B (zh)
WO (1) WO2023272874A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114866421B (zh) * 2022-05-13 2024-05-14 西安广和通无线通信有限公司 一种端口管理方法、装置、设备及计算机可读存储介质
CN115118791B (zh) * 2022-05-20 2023-09-22 网宿科技股份有限公司 Udp报文的分发方法、设备及可读存储介质
CN117640594A (zh) * 2022-08-09 2024-03-01 腾讯科技(深圳)有限公司 数据传输方法、装置、设备、存储介质和计算机程序产品
CN115361364B (zh) * 2022-10-08 2022-12-20 成都华栖云科技有限公司 一种基于WebRTC的通信协议的数据传输方法
CN117354287A (zh) * 2023-10-09 2024-01-05 广东元能星泰孪生科技创新有限公司 一种基于多路流复用技术的云渲染通信代理优化方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112770072A (zh) * 2020-12-30 2021-05-07 北京北信源软件股份有限公司 一种数据传输方法、装置及存储介质

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2026528B1 (en) * 2007-07-23 2015-03-25 Samsung Electronics Co., Ltd. Integrated internet telephony system and signaling method thereof
US7788383B2 (en) * 2007-10-30 2010-08-31 Cisco Technology, Inc. Communicating a selection of a potential configuration
EP2692095B1 (en) * 2011-03-28 2019-06-05 Telefonaktiebolaget LM Ericsson (publ) Method, apparatus and computer program product for updating load balancer configuration data
US9628542B2 (en) * 2012-08-24 2017-04-18 Akamai Technologies, Inc. Hybrid HTTP and UDP content delivery
DE102014015443B4 (de) * 2014-10-21 2016-05-04 Unify Gmbh & Co. Kg Telekommunikationsanordnung und Verfahren zum Traversieren einer Application-Layer-Gateway-Firewall beim Aufbau einer RTC-Kommunikationsverbindung zwischen einem RTC-Client und einem RTC-Server
US9444792B2 (en) * 2014-10-21 2016-09-13 Oracle International Corporation Dynamic tunnel for real time data communication
US9813385B2 (en) * 2015-02-10 2017-11-07 DeNA Co., Ltd. Method and system for load balancing
WO2016163774A1 (en) * 2015-04-07 2016-10-13 Samsung Electronics Co., Ltd. Method and apparatus for flexible broadcast service over mbms
US10602562B2 (en) * 2017-07-06 2020-03-24 T-Mobile Usa, Inc. Establishing communication sessions by downgrading
CN109309866B (zh) * 2017-07-27 2022-03-08 腾讯科技(深圳)有限公司 图像处理方法及装置、存储介质
US11514460B1 (en) * 2017-08-31 2022-11-29 United Services Automobile Association (Usaa) Systems and methods for cross-channel communication management
CN107948215A (zh) * 2018-01-17 2018-04-20 广州汇智通信技术有限公司 一种基于udp通信的远程调用方法和装置
US10880120B2 (en) * 2018-07-19 2020-12-29 Avaya Inc. System and methods for tunneling media through secure channel
CN112073378B (zh) * 2020-08-12 2022-07-08 福建升腾资讯有限公司 一种基于WebRTC的流媒体端口复用方法、设备及介质
US11621986B2 (en) * 2021-06-29 2023-04-04 Western Digital Technologies, Inc. Peer-to-peer media streaming from an edge data storage device to a browser

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112770072A (zh) * 2020-12-30 2021-05-07 北京北信源软件股份有限公司 一种数据传输方法、装置及存储介质

Also Published As

Publication number Publication date
CN113630439A (zh) 2021-11-09
US20230012322A1 (en) 2023-01-12
EP4135296B1 (en) 2024-07-17
WO2023272874A1 (zh) 2023-01-05
EP4135296A4 (en) 2023-09-13
EP4135296A1 (en) 2023-02-15

Similar Documents

Publication Publication Date Title
CN113630439B (zh) 实时通信rtc连接方法、服务器及存储介质
CN114866521B (zh) 会议服务器
RU2660620C1 (ru) Устройство связи и способ обхода брандмауэра шлюза уровня приложения при установлении rtc-соединения связи между rtc-клиентом и rtc-сервером
US9131026B2 (en) Method and system for establishing media channel based on relay
CN101478493B (zh) 一种穿越nat的通信方法及设备
EP1892887B1 (en) Communication method between communication devices and communication apparatus
KR100762379B1 (ko) Ip 멀티캐스트 분배 시스템, 스트리밍 데이터 분배 시스템, 및 이들을 위한 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체
EP2449749B1 (en) Method and apparatus for relaying packets
US10819761B2 (en) Electronic device and method for controlling electronic device
US9699237B2 (en) Managed media relay selection for real-time communications
US10367893B1 (en) Method and apparatus of performing peer-to-peer communication establishment
US11528326B2 (en) Method of activating processes applied to a data session
EP4175221A1 (en) Method for accessing network, media gateway, electronic device, and storage medium
US9413590B2 (en) Method for management of a secured transfer session through an address translation device, corresponding server and computer program
US20120002665A1 (en) Telephone Exchange Apparatus and Telephone Terminal and a Control Method Used for a Telephone System
CN111343083A (zh) 即时通信方法、装置、电子设备及可读存储介质
JP6521762B2 (ja) Httpサーバとその制御方法、画像形成装置およびプログラム
CN110740300A (zh) 多媒体数据的传输方法、***、客户端及视频监控设备
US20180367620A1 (en) Session Layer Communications Using an ID-Oriented Network
CN106921624B (zh) 会话边界控制器及数据传输方法
WO2014180415A1 (zh) 媒体流报文的nat穿越方法、mdu及iptv***
CN116708381B (zh) 跨网络的数据传输方法、装置和存储介质及电子设备
KR20130085556A (ko) 메시지 인증 방법 및 그를 위한 ip-pbx 시스템
CN116346787A (zh) WebRTC连接的创建方法及网络传输数据的方法
CN116582590A (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
GR01 Patent grant
GR01 Patent grant