源端口号通常与您的编程无关,除非您使用的路由器或防火墙对此有所限制。它仅由基础TCP基础结构用来跟踪不同的TCP连接。
从这篇文章:
TCP / IP连接由四个元素元组标识:{源IP,源端口,目标IP,目标端口}。要建立TCP /
IP连接,仅需要目标IP和端口号,操作系统会自动选择源IP和端口。
上面引用的文章介绍了Linux如何选择源端口号。
关于您的特定问题:
哪种算法节点用于为客户端分配“随机”端口?它是如何工作的,是由节点还是由操作系统决定的?
它由操作系统决定。在连接到node.js之前,源主机在TCP级别上选择了源端口号。
其他一些参考文章:
每个主机的TCP源端口是否必须唯一?
注意:我不知道出于安全原因,防火墙会限制源端口号或阻止某些源端口号。它们只是一个TCP记帐号码,与安全性或所使用的服务类型完全无关。请注意,这不同于通常与所使用的服务类型直接相关的目标端口(例如80是HTTP,25是SMTP,143是IMAP,等等…当您建立与其他主机的TCP连接时,您指定主机地址和目标端口号,而不指定源端口号。



