Nodejs TCP连接客户端端口分配
我使用nodejs( networking模块 )在客户端和服务器之间创build了tcp连接。 服务器正在侦听已经预定义的端口,并且客户端正在连接到该端口。
据我了解端口为客户端dynamic分配的节点? 那是对的吗?
- 什么样的algorithm节点正在使用为客户端分配“随机”端口? 这是如何工作的,这是由节点还是由操作系统决定的?
- 是否有可能定义客户端将使用的静态端口? 是否可以定义客户端使用的端口范围?
注:我认为我发现之前stackoverflow上类似的主题讨论/问题,但我找不到它了。 我会apprecaite如果你能分享任何可靠的资源有关这个问题。
源端口号通常几乎与您的编程无关,除非您有一个路由器或防火墙,在这方面有某种限制。 它仅由底层TCP基础结构使用,以跟踪不同的TCP连接。
从这篇文章 :
TCP / IP连接由四元组元组来标识:{源IP,源端口,目标IP,目标端口}。 要build立TCP / IP连接,只需要目标IP和端口号,操作系统将自动select源IP和端口。
上面引用的文章描述了Linux如何select源端口号。
至于你的特定问题:
什么样的algorithm节点正在使用为客户端分配“随机”端口? 这是如何工作的,这是由节点还是由操作系统决定的?
这是由操作系统决定的。 该源端口号在连接到node.js之前由TCP层的始发主机select。
其他一些参考文章:
每个主机的TCP源端口是否必须是唯一的?
应用程序如何使用端口80 / HTTP而不与浏览器冲突?
注意:我没有安全的原因,我知道防火墙限制源端口号或阻止某些源端口号。 它们只是一个TCP簿记号码,根本不涉及安全性或使用的服务types。 注意,这与通常与所使用的服务types直接相关的目标端口是不同的(例如,80是HTTP,25是SMTP,143是IMAP等等)。当您build立到不同主机的TCP连接时,您指定主机地址和目标端口号,不指定源端口号。
所选答案提供了大量的信息,但不涉及潜在的问题。 节点似乎不允许https.request为客户端指定一个端口。 有localAddress和localPort选项,但它们似乎被破坏。
我在这个问题上提出了一个新的问题。 希望有人会回答“不要那样做”以外的东西。
有没有一种方法来设置节点js https请求的源端口?