如果应用A收听应用B以前使用的同一私有端口,应用A是否会获得应用B的公共端口号?

时间:2015-04-23 22:36:29

标签: udp client-server port firewall nat

如果一个应用程序侦听该计算机上另一个应用程序以前使用过的同一个私有端口号,那么更新的应用程序是否会获得与最新应用程序相同的公共端口号?

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

另一个密切相关的问题:

想象一下,计算机A和计算机B共享住宅路由器。计算机A和计算机B都运行一个应用程序,它在公共IP 123.456.789和公共端口号12345向服务器C发送UDP数据包/数据报。服务器C通过向发送者发送数据包/数据报来响应。计算机A和计算机B使用的应用程序,除了指定它想要在端口12345上发送之外,还在端口12345上侦听应答。计算机A和计算机B获得回复数据包,但服务器C发送其回复的公共端口号可能与计算机A和计算机B正在运行的应用程序指定的号码12345不匹配(如果我是错了,请)。

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

如果是相反的情况并且计算机B杀死它用于与服务器C通信的应用程序,然后打开一个新的,不同的应用程序,内部也侦听udp端口12345。如果服务器C发送另一个UDP响应,该怎么办?计算机B杀死其旧应用程序后,计算机B的数据包是否会被这个新的,不同的应用程序获取服务器C发送的数据包,这些数据包是对计算机B运行的先前应用程序发送的数据包的回复?

答案是否会有所不同,具体取决于NAT的类型以及使用该端口完成一个应用程序与另一个应用程序开始使用其他应用程序之前使用的相同端口之间的时间量?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:1)

公共端口号属于路由器,而不属于App A或App B,如果它映射到专用端口号,则该映射也会持续超出任何特定应用程序的生命周期。