Google 的 Chrome 浏览器实验室展示了很多基于 HTML5 和 JavaScript 的创意实验项目,里面的例子都很独特,让人惊叹。我从未想过结合 HTML 和 JavaScript 能实现这么强大的效果。其中很多实验项目使用了前沿的 WebGL 技术,为了能体验到绚丽的效果,建议在最新的 Chrome 浏览器中浏览(部分 WebGL 实验项目需要显卡支持)。
Google 的 Chrome 浏览器实验室展示了很多基于 HTML5 和 JavaScript 的创意实验项目,里面的例子都很独特,让人惊叹。我从未想过结合 HTML 和 JavaScript 能实现这么强大的效果。其中很多实验项目使用了前沿的 WebGL 技术,为了能体验到绚丽的效果,建议在最新的 Chrome 浏览器中浏览(部分 WebGL 实验项目需要显卡支持)。
Zoom的Web客户端可以在用户不下载它们App的情况下加入会议。Chris Koehncke很高兴能看到它是如何工作的。这确实有效,不必花时间下载App.并且视频质量可以接受,对此我们愉快的讨论了半小时。
打开 chrome://webrtc-internals只看到了getUserMedia被用来获取摄像头和麦克风,但是没有看到RTCPeerConnection的使用。这激起了我的兴趣,它们是如何不用WebRTC进行通话的?
在前面几篇文章中我们介绍了建立p2p通信的一般协议(簇),以及一种完整的NAT传输解决方案ICE,
但是对于多用户的通信情况,还有一些通用协议来实现标准化的管理,如之前讲过的SDP和SIP等,SIP(Session Initiation Protocol),
是属于应用层的控制协议,主要用于在一个或多个参与者之间创建,修改和中止会话(sessions).会话的类型包括IP电话,
多媒体流分发和多媒体会议等.
在P2P通信标准协议(二)中,介绍了TURN的基本交互流程,在上篇结束部分也有说到,TURN作为STUN
协议的一个拓展,保持了STUN的工具性质,而不作为完整的NAT传输解决方案,只提供穿透NAT的功能,
并且由具体的应用程序来使用.虽然TURN也可以独立工作,但其本身就是被设计为ICE/RFC5245
的一部分,本章就来介绍一下ICE协议的具体内容.
前一段时间在P2P通信原理与实现中介绍了P2P打洞的基本原理和方法,我们可以根据其原理为自己的网络程序设计一套通信规则,
当然如果这套程序只有自己在使用是没什么问题的。可是在现实生活中,我们的程序往往还需要和第三方的协议(如SDP,SIP)进行对接,因此使用标准化
的通用规则来进行P2P链接建立是很有必要的。本文就来介绍一下当前主要应用于P2P通信的几个标准协议,主要有STUN/RFC3489,STUN/RFC5389,
TURN/RFC5766以及ICE/RFC5245。
上一篇P2P通信标准协议(一)介绍了在NAT上进行端口绑定的通用规则,应用程序可以根据这个协议来设计网络以外的通信。
但是,STUN/RFC5389协议里能处理的也只有市面上大多数的Cone NAT
(关于NAT类型可以参照P2P通信原理与实现),
对于Symmetric NAT
,传统的P2P打洞方法是不适用的。因此为了保证通信能够建立,我们可以在没办法的情况下用保证成功的中继方法(Relaying),
虽然使用中继会对服务器负担加重,而且也算不上P2P,但是至少保证了最坏情况下信道的通畅,从而不至于受NAT类型的限制。TURN/RFC5766就是为此目的而进行的拓展。