NAT 穿透(NAT punch hole)是实现 P2P 通信的核心技术,通过 UDP 打洞(UDP hole punching)让处于 NAT 后面的两个节点能够直接建立连接,绕过中间路由器的地址转换限制。

关于 UDP 穿透的详细技术分析,可以参考 USENIX 2005 的论文:https://www.usenix.org/legacy/event/usenix05/tech/general/full_papers/ford/ford_html/

实现 NAT 穿透通常需要借助 STUN 协议(Session Traversal Utilities for NAT),用于发现客户端的公网地址和端口映射关系,从而协助两端完成打洞流程。