如果一个应用程序监听了另一个应用程序以前在该计算机上使用的相同的私有端口号,那么最近的应用程序是否会获得与较晚的应用程序相同的公共端口号?
应用程序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决定要杀死发送和接收udp数据包给计算机A和B的应用程序,并打开一个完全不同的应用程序,该应用程序将udp数据包发送到公共IP和公共端口号,以前的应用程序用于与计算机A和B通信。这个新服务器端应用程序生成的数据包会通过计算机A和B吗?或者,旧应用程序的死亡和在杀死旧应用程序和运行新应用程序之间的暂停会导致新服务器端应用程序发送的数据包被客户端阻塞或拒绝吗?数据包能通过路由器/NAT吗?
如果是相反的情况,计算机B杀死了它用来与服务器C通信的应用程序,然后打开了一个新的、不同的应用程序,在内部也侦听udp端口12345。如果服务器C在计算机B杀死旧应用程序后向计算机B发送另一个UDP响应数据包,这个新的不同的应用程序会得到服务器C发送的数据包,这些数据包是对B计算机运行的前一个应用程序发送的数据包的答复吗?
根据NAT的类型和使用端口的应用程序与开始使用另一个应用程序之前使用的相同端口的应用程序之间的时间量,答案是否不同?如果是这样的话,是怎么做的?
发布于 2015-04-23 23:24:08
公共端口号属于路由器,而不是App或App,如果将其映射到私有端口号,该映射也将持续到任何特定应用程序的生存期之后。
https://stackoverflow.com/questions/29835580
复制相似问题