【问题标题】:How to Send A UDP packet via public IP through NAT?如何通过 NAT 通过公共 IP 发送 UDP 数据包?
【发布时间】:2015-01-06 13:30:29
【问题描述】:

我有一个 UDP 服务器在我的专用网络上运行。我有一个超出 NAT 的设备,它通过公共 IP 将 UDP 数据包发送到我的服务器。我能够接收 UDP 数据包,解析它们,我可以查看有效负载、src 和 dest 端口。现在我需要向那个设备发送一个 ACK​​ 消息,所以我已经捕获了 ip 和端口号并向它发送一个 UDP 数据包。但我无法查看该设备中的任何 UDP 数据包。

我的问题是因为我的设备超出了 NAT,所以我得到的 IP 地址和端口号是 NAT 还是实际设备的?

如何通过 NAT 将 UDP 数据包发送到该设备?

【问题讨论】:

标签: java c udp nat


【解决方案1】:

我的问题是因为我的设备超出了 NAT,所以我得到的 IP 地址和端口号是 NAT 还是实际设备的?

您从数据包中识别的 IP 和端口是 NAT 为客户端创建的映射。简单来说就是设备所连接的NAT的IP和端口。

如何通过 NAT 将 UDP 数据包发送到该设备?

您需要回复服务器从客户端收到的数据包中检测到的 IP 和端口。 更清楚的是,您需要实现 UDP Holepunching

我想您应该首先了解与在 NAT 下工作的设备的连接有关的网络问题。各种 RFC 可用于 NAT TraversalUDP Punching

这里有一些来源:

http://en.wikipedia.org/wiki/Network_address_translation

http://en.wikipedia.org/wiki/UDP_hole_punching

https://www.rfc-editor.org/rfc/rfc4787

https://www.rfc-editor.org/rfc/rfc5128

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多