关于 UDP NAT Traversal 的大部分信息都涉及一个中间服务器,用于将公共端点与两个客户端进行通信。如果为客户端预先配置了公共端点,是否可以快捷方式?
NAT 后面的两个客户端可以开始向对方的公共 IP:Port 发送 UDP 流量以打孔吗?除了通信公共端点之外,是否需要中间体?
关于 UDP NAT Traversal 的大部分信息都涉及一个中间服务器,用于将公共端点与两个客户端进行通信。如果为客户端预先配置了公共端点,是否可以快捷方式?
NAT 后面的两个客户端可以开始向对方的公共 IP:Port 发送 UDP 流量以打孔吗?除了通信公共端点之外,是否需要中间体?
我不能与权威交谈(或提供消息来源),但根据我在过去一个月中使用 STUN 和 TURN 协议收集到的信息:
NAT 有多种分配端口的方法(见下文)。全锥 NAT 是一对一的映射,因此一旦 NAT 映射了一个端口,任何外部主机都可以使用相同的映射向私有主机发送数据包。但是,例如,如果 NAT 类型是对称的,则发往不同外部 IP 的数据包将具有不同的端口映射。
对于某些 NAT 类型(例如全锥),可以使用 STUN 服务器来确定 NAT 端口映射。这个 STUN 服务器是你提到的中间服务器的一个流行例子。一些更具限制性的 NAT 类型(例如对称)使得无法使用 STUN 服务器,并且直接对等连接是不可能的。这是因为 STUN 服务器假定 NAT 端口映射不依赖于外部 IP,但对称 NAT 为不同的外部 IP 分配不同的端口映射。
具体的地址转换(路由器如何映射端口号)算法取决于具体的路由器(我的猜测)。一些路由器使用随机端口分配,这使得客户端无法在没有中间公共服务器做出此决定(STUN)的情况下预先建立连接。
一般来说,不,不可能删除中间服务器。除非您对 NAT 的工作原理有一些内部知识(这可能取决于路由器的特定型号),否则必须使用中间服务器。