绑定 UDP 端口 - 绑定在 NAT 环境中持续多长时间?

Binding a UDP port - How long does the binding persist in a NAT environment?

由于 UDP 不是基于连接的,UDP 套接字绑定到的端口是否一直保持绑定状态,直到将套接字绑定到特定端口的线程或进程的生命周期为止?

此外,还有一个与上述问题不同的 NAT 绑定问题。我假设 NAT 绑定持续的时间段是基于各个 NAT 实现的。但是,通常情况下,NAT 是否有特定的(尽管不是标准化时间)NAT 绑定预计会保留。

NAT 之间差异很大。

只要流量双向流动,端口就应该保持打开状态。否则,在没有流量的情况下,NAT会在一分钟后释放端口映射。

在我开发的一个应用程序中,客户端和服务器每 45 秒定期相互执行一次 ping 以保持端口映射打开。

根据您的应用程序设计,准备好在端口失效时根据需要重新连接逻辑。

只要端口打开,套接字就会保持绑定到端口。当套接字关闭时(这在进程退出时自动发生,但如果进程执行显式关闭可能会更早发生),端口将作为关闭过程的一部分解除绑定。

与任何文件描述符一样,如果它在多个进程之间共享(通过 fork 或其他方式),则只有在所有进程关闭它时它才真正关闭——如果至少有一个进程仍然打开它,它会保持打开状态.