更新
事实证明,该问题与 NAT 和 UDP 打孔无关。所以我创造了一个新的Q。
我使用以下方法实现了 UDP 打孔:
位于已知端口的已知服务器(无 NAT)正在处理传入的 UDP。
NAT 后面的客户端向服务器发送数据报,之后服务器通过向该客户端发送对等点的地址来响应。
客户端现在开始通过同一个套接字使用 UDP 与对等方通信(但当然是不同的地址。)
如果一段时间后,客户端停止与对等方的通信,并再次向服务器发送另一个数据报,则该数据报不会到达(除非我通过从服务器向客户端发送 keepalive 数据报来保持通道打开。)
我的问题:为什么可以从服务器<->客户端之间的数据报切换到对等<->客户端之间的数据报,但是一旦我切换回来并且客户端再次发送到服务器,它们就没有到达?