p2p-udp [多个内网客户端, 建立连接]
NAT主要类别:
1>、 基本NAT, 这种要求NAT有多个公网IP, 这样可以将公网IP和内网设备静态绑定
2>、 NAPT (Network Address Port Translation), 更为常见的NAT, 内网设备的网络请求通过不同端口加以映射
NAPT端口的映射方式类别:
1>、 完全圆锥型NAT(Full Cone NAT), 将从一个内部IP地址和端口来的所有请求,都映射到相同的外部IP地址和端口。
并且,任何外部主机通过向映射的外部地址发送报文, 都可以实现和内部主机进行通信
2>、 地址限制圆锥型NAT(Address Restricted Cone NAT), 将从相同的内部IP地址和端口来的所有请求映射到相同的公网IP地址和端口。
但是与完全圆锥型NAT不同, 当且仅当内部主机之前已经向公网主机发送过报文, 此时公网主机才能向内网主机发送报文。
3>、 端口限制圆锥型NAT(Port Restricted Cone NAT), 端口受限圆锥型NAT增加了端口号的限制,
当前仅当内网主机之前已经向公网主机发送了报文, 公网主机才能和此内网主机通信。
4>、 对称型NAT(Symmetric NAT), 把从同一内网地址和端口到相同目的地址和端口的所有请求, 都映射到同一个公网地址和端口。
如果同一个内网主机, 用相同的内网地址和端口向另外一个目的地址发送报文, 则会用不同的映射。
1、 建立UDP服务器 S
2、 建立A、B客户端, 分别与S建立会话 => SA 与 SB
3、 S当好中介人, 将A的ip+端口通过SB告诉B, 将B的ip+端口通过SA告诉A
4、 A向B公网地址发送一个UDP包, 代表握手, 打通A-B的路径
5、 B向A公网地址发送一个UDP包, A-B的会话建立成功