WebRTC整理

最近项目需要,大致梳理下webRTC概念,不然一些印象又忘记了。

总体印象

总体印象是在后来基本认识之后的认识。首先明白webRTC是浏览器提出的技术,它包含了其他已有的一些技术,比如STUN(STUN是2008年思科参与确定的网络协议,而webRTC于2011年确定),TURN;它的目的就是让两个浏览器进行P2P通信,我的认识就是它结合了一些已有的技术实现了浏览器间通信。webRTC没有定义signalServer(信令服务,用于交换SDP、控制会话)的通信协议。

资料收集
  1. webRTC如何工作:https://stackoverflow.com/questions/12708252/how-does-webrtc-work
  2. Mozilla文档 webRTC API:https://developer.mozilla.org/zh-CN/docs/Web/API/WebRTC_API
    通信流:WebRTC and the Ocean of Acronyms
    什么是提议/应答和信号通道?也可切换英文文档说明更清晰

Unfortunately, WebRTC can’t create connections without some sort of server in the middle. We call this the signal channel or signaling service. It’s any sort of channel of communication to exchange information before setting up a connection, whether by email, post card or a carrier pigeon… it’s up to you.

The information we need to exchange is the Offer and Answer which just contains the SDP mentioned below.

  1. 真实世界中的WebRTC:STUN, TURN and signaling(非常推荐这篇文章):https://michaelyou.github.io/2018/08/01/%E7%9C%9F%E5%AE%9E%E4%B8%96%E7%95%8C%E4%B8%AD%E7%9A%84WebRTC/
  2. SDP会话描述协议:https://zhuanlan.zhihu.com/p/75492311
  3. signalServer的offer answer是什么意思?http://blog.sina.com.cn/s/blog_6b10255301012hnb.html

IETF RFC3264定义了一个基于SDP的简单的提议/应答模型来实现这一点。

在提议/应答模型中,首先会话的一方(提议者)产生一个 SDP 消息来描述它所期望的会话,这构成了一个提议(offer)。提议中主要包括提议者想使用的媒体流和codecs集,以及提议者用于接收媒体的IP地址和端口。

提议被传送到另一方,收到这个提议后这一方可能会接受,也可能会拒绝这个提议。在前一种情况下,本方(应答者)根据收到的提议和自身的能力产生一个SDP消息来描述它所能接受的会话,这称为应答(answer),应答中针对提议中的每个媒体流有一个匹配流,指示该媒体流是否被接受,同时伴随着要使用的codecs 和应答者希望用于接收媒体的 IP 地址和端口。

在提议/应答的操作中需遵守以下原则:

  1. 在任何时候,任何一方都可能产生一个新的提议来更新会话。然而,如果它收到了一个提议还没有应答或拒绝,则不能产生新的提议。
  2. 提议/应答交换是不可分的,如果应答被拒绝,会话恢复到提议前的状态。
  3. 提议 (和应答) 必须是RFC 2327 中所定义的有效SDP消息。尽管 SDP 规范允许将多个会话描述串接在一起形成一个大的 SDP 消息,但是在提议/应答模型中使用的SDP消息必须恰好包含一个会话描述。

    在提议/应答模型中交换假定存在一个高层协议 (比如SIP),它能够完成SDP消息的交换,并能维持某种上下文关系,将一个提议及其应答,和创建和更新同一个会话的多个提议/应答对关联起来。
  1. STUN RFC5389:https://datatracker.ietf.org/doc/html/rfc5389
自问自答

在上节中已经体现

引申与拓展

NAT的分类与对等NAT:知乎-为什么大多数NAT网关都是对称型NAT而不是锥形NAT?https://www.zhihu.com/question/38729355
webRTC体验场:https://webrtc-from-chat.glitch.me/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值