前言:音视频通讯的软件开发中降低服务器带宽的方式就是通过STUN服务器直接P2P,而P2P有时会失败,此文解释其原因。
(0)NAT
- 广为人知,IPV4只有32位,顶天只有40多亿的地址分配,加之有些地址不能用,就不能为每个用户分配公网IP地址了,于是就有了NAT(Network address translation)技术,通过路由器,形成公网端口与内网ip端口的一一映射。
- P2P技术就是用一个STUN服务器让两个内网的服务器知道对方的公网地址与端口号码,之后两个客户端直接通过对方的公网IP与端口通过UDP交换信息。
- 但现实残酷,很多NAT路由器为了安全推出了不同连接与接收方法。
(1)4种NAT方法
- Full Cone NAT (全锥型)
发送出去时(本地端口-路由器公网端口)一一映射,接收时不会有任何限制; - Address-Restricted Cone NAT (IP限制锥型)
发送出去时(本地端口-路由器公网端口)一一映射,接收时限制只有发送过的IP才可以发送过来; - Port-Restricted Cone NAT (端口限制锥型)
发送出去时(本地端口-路由器公网端口)一一映射,接收时限制只有发送过的IP和端口号才可以发送过来; - Symmetric NAT (对称型)
发送出去时(本地端口与公网IP与公网对应端口-路由器公网端口)一一映射,接收时非对应IP与端口拒绝转发;
(2)P2P失败的组合
Client 1 | Client 2 |
---|---|
对称型 | 对称型 |
对称型 | 端口限制锥型 |