cha*_*rdy 12 .net udp nat nat-traversal
在谈到UDP时,我知道"连接"这个词并不合适,但......
服务器(具有已知IP的服务器)如何通过Internet将其UDP数据包发送到NAT后面的客户端?
例如:假设客户端使用TCP上的某些消息传递连接并验证服务器.此时,服务器已准备好通过UDP开始将数据流传输到客户端,但是服务器如何知道在哪里寻址UDP数据包,以便他们能够通过任何NAT路由器找到客户端?
如果客户端拳头通过UDP发送"我已准备好流媒体请"消息,NAT路由器是否会保持端口打开,以便服务器可以使用其UDP数据流进行响应?
或者我在这里偏离轨道?
通常,TCP 级别的客户端前面的 NAT 将能够确定 UDP 的连接已创建。尽管如此,客户端的 NAT 必须配置为接受来自 SRC 服务器端口的 UDP 数据包,然后将它们转发到内部目标 IP(客户端)。需要记住的重要一点是 NAT 是否是调用者和被调用者。NAT 在实施和功能方面有所不同,因此您可能想要实施一个通用的易于实施的解决方案,具体取决于您的需求。
我认为,您的假设是正确的,在您的情况下,客户端将无法接收信息中的 UDP 流。在您的情况下,您的客户端必须将其 WAN IP 发送到您的服务器才能启动 UDP 连接。查找您的客户端 WAN IP 可能很棘手,但有些网站可以通过在文本页面中返回 WAN IP 来帮助您确定您的 WAN IP。
如果服务器在 TCP 连接之后创建了 UDP 连接,通过服务器向客户端打开一个已知 UDP 端口的套接字,那么 UPnP 可能值得研究一下,它将允许您在 NAT 上自动设置端口转发,这只是如果您的 NAT 支持 UPnP,就像 DSL 路由器一样。
解决方法是客户端打开到服务器的 TCP 和 UDP 套接字。由于 NAT 后面的客户端发起了连接,因此 TCP 和 UDP 连接的状态都将添加到 NAT 的连接表中。
| 归档时间: |
|
| 查看次数: |
7005 次 |
| 最近记录: |