小编Sor*_*ary的帖子

如果两个本地系统在同一个端口上下载相同的资源会发生什么?

我知道 NAT 表。我只想知道如果私有局域网中的两个客户端想要在同一个端口上下载完全相同的资源会发生什么?换句话说,当一个数据包来自服务器时,路由器如何决定哪个客户端应该得到这个数据包?

如果我没记错的话,来自服务器的传入数据包具有路由器的目标 IP 地址,该地址是公共的并且两者都相同,并且目标的端口号在这种情况下也恰好相同。

路由器或服务器中是否有任何机制可以检测到这一点?或者这种行为一开始是可能的吗?

我搜索这样的问题这样,这是有道理的,错误加薪,因为端口忙,但我问两个独立的系统。


更新:从评论中我意识到我不够清楚,所以让我用一个例子再说一遍:

我只关心设备的“源”端口。假设我有两台笔记本电脑(192.168.2.10192.168.2.11),它们都从互联网上的同一台服务器下载相同的文件。它们每个都有一个操作系统,它生成一个随机端口,因此源 IP 和源端口将类似于:192.168.2.10:6321192.168.2.11:7132。我认为在 NAT 中,路由器会设置它的(公共)IP 地址以及来自笔记本电脑的端口,所以如果家用路由器的公共 IP 地址是65.82.23.32,这两个包将分别获得这些源 IP 和源端口 :65.82.23.32:632165.82.23.32:7132

现在,当响应返回时,路由器可以从端口号中找出哪个数据包用于哪个笔记本电脑,对吗?到目前为止,一切都很好。但是,如果两台笔记本电脑意外或有意地生成完全相同的源端口,会发生什么情况?例如:192.168.2.10:6000192.168.2.11:6000。现在路由器会像以前一样将它的公共 IP 地址设置为源 IP 地址,但是现在如果它尝试使用这些端口号,这些包将具有完全相同的源 IP 和源端口号,例如 :65.82.23.32:600065.82.23.32:6000

这就是我感到困惑的地方,当响应回来时,路由器如何决定哪个数据包用于哪个笔记本电脑?

在@mfinni 的回答之后,我注意到这不是 PAT 的工作方式!NAT 设备(此处为路由器)将为每台笔记本电脑分配唯一端口(私有 IP 地址),然后使用这些唯一端口(例如77777778)发送数据包。因此,当反应回来,很显然,这包是针对笔记本电脑从端口,那么路由器将这些转换65.82.23.32:777765.82.23.32:7778到- > 192.168.2.10:6000192.168.2.11:6000分别。

networking router nat port

11
推荐指数
4
解决办法
5822
查看次数

标签 统计

nat ×1

networking ×1

port ×1

router ×1