常天宇 彭振
国家无线电监测中心检测中心,中国·北京 100041
WebRTC 是一个跨平台的多媒体框架可以进行音视频处理和实时通讯。通过浏览器进行音视频设备访问管理、音视频采集、数据传输最终搭建实时互动的平台[1]。
信令服务器用来交换每个终端支持的媒体信息(编解码器等)和网络信息(每个终端可能支持的通路);STUN/TURN 服务器用来进行NAT 穿越和提供中继服务;NAT 穿越成功可以建立P2P 通道直连进行媒体数据的传输,否则需要中继节点进行中转[2]。
①下载并安装nodejs、express、serve-index、socket.io模块。
②新建server.js 文件中引入以上模块。
③创建http 和https 服务。
④将socket 服务和web 服务绑定。
⑤服务端侦听底层发送的connection 事件后,继续侦听客户端自定义事件并进行后续的逻辑处理。
⑥打开端口http 服务监听80,https 服务监听443。(web和socket 服务端口复用)
⑦node 运行server.js 文件开启服务。
⑧编写好的客户端html、js、css 文件放在服务端public 路径,利用本地浏览器的v8 引擎进行渲染处理后实现交互。
NAT 功能是给内网地址提供一个公网的映射地址,提高安全性并解决IPV4 地址不足。
有四种类型的NAT,即完全锥型、地址限制性NAT、端口限制性NAT、对称性NAT。安全性依次增加,给NAT穿越打洞带来挑战。对于端口受限锥形与对称性NAT、对称型NAT 与对称性NAT 之间几乎很难打洞成功[3]。虽然可以尝试IP 地址和端口猜测的方式,但对猜测算法要求很高。
如何进行NAT 类型检测有以下步骤:
①服务器2 台,需有2 个IP 地址和端口(#1 服务器双网卡)。
②客户端向服务端发送多个ECHO(UDP 报文)请求,服务端用该IP 地址和端口返回响应。……