一、元素
STUN 获取内、外二元组
TURN 比如【Symmetric NAT】使用relay最终保证成功
ICE 狭理解为STUN和TURN的聚合框架
二、简易实现
1 .引用老司机
http://www.hankcs.com/program/network/actual-rfc5766-turn-server-and-ice4j-wide-area-network-communication.html
STUN地址stun.l.google.com:19302
TURN 使用aliyun安装turnserver-3.2.3.95.tar.gz(其他版本不知道与协议实现是否有差异)
2.二元组遍历就不说了
3.测试[TURN],刚好住处NAT 是Symmetric NAT
主机上两台虚拟机测试,网络地址转换模式,VirtualBox 分别网卡一、网卡二
10.0.2.15 10.0.3.15 使用不同的username + passwd 分别启动
经历测试N次,出现了一次relay成功
4.没有成功前,也不知到aliyun妹的是否支持hairpinning,于是找到了[PJSIP] ,编译蛋蛋忧伤。。。
pjturn测试aliyun turnserver OK
5.相关
libjingle
libnice
PJSIP
上面有自己的ICE实现,
预想使用PJSIP 的ICE库, 转JNI, 蛋疼。。。。。
生产如果搞【音频】+【视频】, PJSIP................很NB的样子