WebRTC 学习一常见网络协议

背景

作为Web前端开发工程师学习WebRTC相关技术,以及Mediasoup 作为主要学习 SFU服务器,搭建一套多人视频会议系统

常见网络协议名称

RTP

实时传输协议(Real-time Transport Protocol ,缩写RTP)是一种网络传输协议

RTCP

实时传输控制协议(Real-time Transport Control Protocoll或RTP Control Protocol 缩写RTCP)是RTP的一个姐妹协议,一般和RTP打包传输,负责将控制包传输到每个人,主要功能就是RTP正在提供服务的质量做出反馈。

RTCP包含SenderReport 和ReceiverReport(简称SR,RR),用于发送和接受数据源的统计信息

SRTP & SRTCP

安全实时传输协议(Secure Real-time Transport Protocol,缩写SRTP),实在RTP基础上所定义的一个协议,旨在为单播和多播应用程序中的实时传输协议的数据提供加密、消息认证、完整性保证和重放保护安全实时传输协议

由于实时传输协议和可以被用来控制实时传输协议的会话的实时传输控制协议(RTP Control Protocol或RTCP)有着紧密的联系,安全实时传输协议同样也有一个伴生协议,它被称为安全实时传输控制协议(Secure RTCP或SRTCP

RTSP

实时流传输协议(Real-time Streaming Protocol,缩写RTSP)是TCP/IP协议中的一个应用层协议。该协议定义了一对多应用程序如果高效地通过IP网络传输媒体数据,RTSP在体系结构上位于RTP和RTCP之上的,使用TCP或者UDP完成数据传输。HTTP与RTSP相比,HTTP请求由客户机发出,服务器作出响应;使用RTSP时,客户机和服务器都可以发出请求,即RTSP可以是双向的

总结:RTSP发起音视频媒体,RTP负责传输,RTCP负责传输中控制,信息收集,同步等且不加密的,如果要加密的话使用 SRTP+SRTCP

RTMP

实时消息协议(Real-Time Messaging Protocol,缩写RTMP),该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。该协议是Adobe Systems公司为Flash播放器和服务器之间音频、视频和数据传输开发的开放协议(未完全公开)

总结:RTMP Adobe公司实现一套传输协议,需要 Flash Player播放器,RTMP传输基于TCP或者HTTP,RSTP传输(RTP)基于UDP的。

WebRTC

网页即时通讯(Web Real-Time Communication)是一个支持网页浏览器进行实时语音对话或视频对话的API,WebRTC是P2P的,一对一视频通话,双方既是client也是server。

  • Signal Server

自建服务器,http/websocket 均可,主要用来传输SDP信息的服务器,一般使用websocket协议socketio 库,方便对Room进行管理

  • SDP

是一种会话描述协议(Session Description Protocol),属于文本协议,也就是WebRTC中常说的信令(Signalling),交换SDP的过程就是信令协商的过程,主要用户协商双方通讯基本信息,如:会话控制信息,处理错误信息,元数据(音视频解码格式等),网络数据(IP,Port)等

Offer/Answer

基于SDP的提议/应答方式,交换SDP信息

发送方和创建方都会 new Peerconnection,分别为 pc1,pc2(只是为了区分)

发送方:
1. 发送方将自己的音视频添加到pc1中,调用pc.addTrack(track.localStream)
2. 调用pc1.createOffer方法,得到一个基于offer SDP对象
3. 调用pc1.setLocalDescription 方法将sdp信息保存
4. 将offer sdp信息 通过Signal Server发送给对方

接收方:
1. 接收方将自己的音视频添加到pc2中,调用pc.addTrack(track.localStream)
2. 接收方收到发过来的offer SDP信息,调用pc.setRemoteDescription 保存
3. 在调用Peerconnection CreateAnswer方法,得到基于answer SDP对象
4. 调用Peerconnection SetLocalDescription 方法保存本地
5. 将answer sdp信息 通过Signal Server,发送给对方

  • DTLS

数据包安全传输协议(Datagram Transport Level Security),TLS不能用来保证UDP上传输安全,一次Datagram TLS 视图在现存的TLS协议架构上提出扩展,使之支持UDP,成为TLS的一个支持数据包传输的版本。DTLS1.0基于TLS1.1,DTLS 1.2基于TLS 1.2

ICE

互动式连接建立(Interactive Connectify Establishment)属于一种框架,为了实现各种NAT穿透技术(STUN,TURN)可以实现统一,该技术可以实现客户端成功地串口远程用户与网络之间可能存在的各类防火墙。

  • STUN

STUN(Session Traversal Utilities for NAT,NAT会话穿越应用程序)是一种网络协议,它允许位于NAT(或多重NAT)后的客户找出自己的公网地址,查出自己位于那种类型的NAT之后,以及NAT为某一种本地端口所绑定的Internet端端口。这些信息被用来在两个同事处于NAT路由器之后的主机之间创建UDP通信。
 

  • TURN

TURN(Traversal Using Relays around NAT)也是一种协议,如果使用STUN仍不能对两台主机进行连接,那么他们需要连接到一个服务,这个服务器来连接并转发所有数据。TURN需要作为中继服务器要对所有数据(包括Media)记性封包转发,比较耗时,且比较再用带宽,对服务器要求较高,一般没有其他替代方案时才会是使用这个方案。 还有一种情况是有些公司对于网络要求比较严格,禁止使用UDP及端口,只能使用TCP/443端口,TURN Server 支持TCP协议的,可以采用TURN方案。

总结:

WebRTC 建立的是一对一视频连接,通过DTSL(UDP的SSL)保证数据传输安全,通过offer/answer 生成sdp信息,sdp信息中包含会话控制,音视频数据,网络信息等,分别setLocalDescription/setRemoteDescription,通过ICE相关技术,使用STUN 查找位于NAT/防火墙后的公网IP地址,是两台主机王城连接,如果不能成功,可以考虑是自建TURN Server,TURN 支持TCP协议

作者:acivan
原文 WebRTC 学习一常见网络协议

★文末名片可以免费领取音视频开发学习资料,内容包括(FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,srs)以及音视频学习路线图等等。

见下方!↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值