webrtc通过P2P打通媒体通道,确定本地和远端的IP:PORT对(socket),P2P打洞涉及STUN/TURN协议,主要在P2PTransportChannel类进行,包括收集候选地址,创建维护connections,收发包的主要功能。
参考conductor类,信令流程主要在OnSuccess,OnIceCandidate,OnMessageFromPeer函数,先使用offer/answer消息交换sdp,再交换候选,交换候选没有消息类型,OnMessageFromPeer解析对端消息可以看出不同的处理分支。
一、收集候选地址(ip:port对,socket)
1、候选地址类型分为4类
主机候选(host):从网卡中获取的本地传输地址,如果此地址位于NAT之后,则为内网地址,通过信令服务器(offer/answer,sip)传给对端
服务器反射候选项(srflx):从发送给STUN服务器的Bingding检查中获取的传输地址,如果此地址位于NAT之后,则为最外层NAT的公网地址,通过信令服务器传给对端
对端反射候选(prflx):从对端发送的Stun Binding应答获取的传输地址,一种在连接检查期间新发生的候选,即对对端的候选进行stun检查
中继候选项(relay):媒体中继服务器的传输地址,通过TURN Allocate请求获取,通过信令服务器传给对端