对于HTTP源端口是如何确定的? 是否有过在NAT的碰撞?(How is source port

2019-08-18 05:56发布

我知道,当一个HTTP请求时,数据包被从一个看似随机高编号端口(例如4575)在客户端上发送到端口80在服务器上。 然后向服务器发送的答复同样高编号端口,路由器知道到路由到客户端计算机,一切都完成了。

我的问题是: 是返回端口(4575在这个例子中)确定如何? 它是随机的? 如果是这样,在什么之内的范围? 是否有关于它的任何限制? 会发生什么,例如,如果在局域网两台计算机发送带有相同的源端口的HTTP请求到同一个网站? 如何在路由器知道哪一个路由哪台计算机? 或者,也许这种情况很少见,以至于没有人费心去防范呢?

Answer 1:

该NAT是要决定/确定一个NAT的连接/会话出站端口,通过它自己的内部装置。 这意味着,它会根据NAT的实现而不同。 这意味着任何响应返回会回来同出站端口。

至于你的问题:

会发生什么,例如,如果在局域网两台计算机发送带有相同的源端口的HTTP请求到同一个网站?

这将为每一个 不同的出站端口。 因此,它可以在它接收响应两者之间进行区分。 一个的NAT将建立/保持转换端口的映射 ,为新会话创建新的出站端口号。 因此,即使如果有两个不同的“内部”会议,从两个不同的机器,在相同的端口号,它会映射到两个不同的端口号在输出侧。 因此,当数据包回来后在各自的端口,它会知道如何将它们转换回到正确的地址/端口的内部局域网。

图:



文章来源: How is source port for HTTP determined? Is there ever collision in NAT?