webrtc 网络原理

本文章来自
https://www.html5rocks.com/en/tutorials/webrtc/infrastructure/
不一一翻译,捡我认为重要的记录下来。

1.会话的发起机制,webrtc没定义,需自行定义。可参考网上的很多在线例子,房间号的形式实现。

2.信令的交换机制,webrtc没定义,也是自行定义。主要完成网络ip地址等网络信息交换,媒体信息sdp交换。整个流程遵循这个JSEP, the JavaScript Session Establishment Protocol。

3.信令交互流程大概如下:

  • offer 提供一个sdp给另外一方
  • answer 另外一方回复一个sdp
  • candidates 整个流程中双方发送自己的外网地址信息给对方,并持续进行尝试连接,看意思是发起方在offer完后就开始发送candidate给对面,由发送方尝试连接?

4.信令服务的构建可通过以下传输技术:

  • EventSource API 单向web server到client的异步传输,可通过其他手段(XHR?)构建双向信息通道。
  • WebSocket全双工完美兼容。
  • Google App Engine Channel API
    大规模的可参考:
  • XMPP
  • ZeroMQ
  • 有商业云直接用websocket

5.有一个基于node,socket-io的完整例子

6.RTCDataChannel 可在连接完成后代替信令机制以减轻服务压力

7.现成的信令服务器

  • webRTC.io
  • easyRTC
  • Signalmaster
  • 爱立信的php建的服务器

8.成熟的供应商
vLine, OpenTok and Asterisk.

9.在信令过程后,使用ice打洞

10.ice机制原理

  1. 先使用网卡本地地址
  2. 不行使用stun
  3. 再不行就turn转发
    所有turn支持stun
    ice测试页面

11.stun原理
主要是用户发送包到服务器,服务器返回你的公网地址,然后你通过信令机制发送给你要连接的对方。

12.turn原理
纯转发

13.webrtc多播
Multipoint Control Unit (MCU)
开源mcu:
licode
mantis

14.跟Voip,电话系统,视频会议系统结合

  • SIP VoIP和视频会议使用的信令协议,需要代理服务器来处理信令转换,但一旦建立后能直接通过p2p传输音视频SRTP
  • PSTN 公共电话交换网络, 代理服务器一样要
  • XMPP im系统,libJingle是webrtc的前身,就是在xmpp上的拓展,为了音视频通讯,处理手段同上

完成以上转换可用的库(某些直接在客户端使用也行吧):

  • sipML5 :一个开源的javascript sip 客户端
  • jsSIP: javascript SIP 库
  • Phono :开源javascript phone api,作为一个plugin?
  • Zingaya:一个嵌入式phone widget
  • Twilio:音频 和 信息
  • Uberconference:会议库
  • webrtc2sip : 一个网关
  • OpenBTS:是一个基于软件的GSM接入点,允许标准的GSM兼容手机作为SIP端点在IP电话(VoIP)网络中使用

你可能感兴趣的:(webrtc)