P2P穿透的三大步骤
1.获取外网地址
客户端、设备端通过stun服务器获取自己的外网地址,并通过punch open / punch try 信令告知对方,此处stun服务器作用为告知对方外网地址。外网地址就是设备在路由上的Session地址映射的IP和端口,内网地址为局域网地址藏在路由后面,必须通过路由映射才能与外网通信。
2.打洞
主控、被控都拿到对端内外网地址。打洞的本质就是往对端内外网发送UDP包达到路由表上有彼此的网络映射。至于打洞能否成功决定因素为主控、被控双方的网络类型(全锥形、受限锥形、端口受限锥形,对称型)。另外每一步请求都会有1s超时重发机制,提高打洞成功率。
3.发送数据
打洞成功即告知上层发送媒体数据!
STUN服务器(stund-0.97)
通过select接收请求,并判断请求的网络类型,给予回复!
stund-0.97源码:http://download.youkuaiyun.com/download/yuanchunsi/10125680