p2p打洞
p2p网络穿透库,它的C++版本目前只支持linux,不支持win,它最新版本的穿透用的tcp,老版本支持tcp/udp:
https://libp2p.io/
P2P-udp的穿透教程:
https://edu.51cto.com/lesson/731596.html
目前打洞机制最好的库是webrtc,其次是libnice,它是轻量级的专门打洞的库。
libnice的官网和仓库 srs的webrtc用的就是libnice来实现ICE
https://libnice.freedesktop.org/
https://github.com/libnice/libnice
无法P2P的原因:
这跟NAT的原理有关,NAT设备一般是路由器,会维护一个映射表,NAT后的私有设备会映射到公网的IP和port。当这个私有设备发送给一个公网设备175.169.32.155:1234,NAT还有添加一个映射关系,把之前的IP和port和这个映射,因此当这个公网IP响应时,NAT会查看映射表是否含有这个公网IP,来确定是否接收。NAT不会接收外部设备主动发起的对其私有设备的访问,它的这套设计逻辑是单向的,只接收它发出去的信息的响应。
P2P