如果app A监听了app B之前使用的同一个私有端口,app A会得到app B的public端口号吗?

If app A listens to the same private port previously used by app B, will app A get app B's public port number?

如果一个应用程序侦听该计算机上另一个应用程序之前使用的相同私有端口号,较新的应用程序是否会获得与较新的应用程序相同的 public 端口号?

应用程序 A 和应用程序 B 都使用非多播 UDP。他们都 运行 在没有设置端口转发的住宅路由器后面的计算机上。如果应用程序 A 侦听应用程序 B 刚刚完成侦听的同一私有端口号(在 NAT 之后),应用程序 A 是否会收到应用程序 B 在使用该端口时应用程序 B 拥有的相同 public 端口号?应用程序 A 是否会获得所有用于应用程序 B 的 UDP 数据包?

另一个密切相关的问题:

假设计算机 A 和计算机 B 共享一个家用路由器。计算机 A 和计算机 B 都是 运行 一个应用程序,该应用程序在 public IP 123.456.789 和 public 端口号 12345 向服务器 C 发送 UDP packet/datagram。服务器 C 通过发送响应a packet/datagram 返回给发件人。计算机 A 和计算机 B 使用的应用程序,除了指定要在端口 12345 上发送外,还在端口 12345 上侦听回复。计算机 A 和计算机 B 收到回复数据包,但是服务器 C 发送回复的 public 端口号可能与计算机 A 和计算机 B 的应用程序指定的端口号 12345 不匹配 运行ning(如有错误请指正)

现在,由于某种原因,服务器 C 决定它要终止向计算机 A 和 B 发送和接收 udp 数据包的应用程序,并打开一个完全不同的应用程序,它将向 public IP 和 public 以前的应用程序用来与计算机 A 和 B 通信的端口号。这个新的服务器端应用程序生成的数据包会通过计算机 A 和 B 吗?或者旧应用程序的终止以及终止旧应用程序和 运行 启用新应用程序之间的暂停是否会导致新服务器端应用程序发送的数据包被客户端阻止或拒绝?数据包会通过 router/NAT 吗?

如果反过来,计算机 B 杀死了它用来与服务器 C 通信的应用程序,然后打开一个新的、不同的应用程序,该应用程序在内部也侦听 udp 端口​​ 12345。如果服务器 C 发送另一个在计算机 B 杀死其旧应用程序后,向计算机 B 发送 UDP 响应数据包,这个新的不同应用程序是否会收到服务器 C 发送的数据包,这些数据包是对计算机 B 先前应用程序 运行 发送的数据包的回复?

答案是否因 NAT 类型以及一个应用程序结束使用该端口与另一个应用程序开始使用另一个应用程序之前使用的同一端口之间的时间长短而有所不同?如果可以,怎么做?

public 端口号属于路由器,而不属于应用程序 A 或应用程序 B,并且,如果它映射到私有端口号,该映射也会在任何特定应用程序的生命周期之后持续存在。