当前位置 : 主页 > 网页制作 > Nodejs >

node.js – Nodejs TCP连接客户端端口分配

来源:互联网 收集:自由互联 发布时间:2021-06-16
我使用nodejs( net module)在客户端和服务器之间创建了tcp连接.服务器正在侦听已预定义的端口,客户端正在连接到该端口. 据我所知,客户端的端口是由节点动态分配的?那是对的吗? 什么样
我使用nodejs( net module)在客户端和服务器之间创建了tcp连接.服务器正在侦听已预定义的端口,客户端正在连接到该端口.

据我所知,客户端的端口是由节点动态分配的?那是对的吗?

>什么样的算法节点用于为客户端分配“随机”端口?这是如何工作的,这是由节点还是由OS决定的?
>是否可以定义客户端将使用的静态端口?是否可以定义客户端使用的端口范围?

注意:我认为我之前在stackoverflow发现了类似主题的讨论/问题,但我再也找不到了.如果你能分享关于这个主题的任何可靠资源,我会建议你.

源端口号通常与您的编程无关,除非您在某种程度上限制了路由器或防火墙.它仅由底层TCP基础结构用于跟踪不同的TCP连接.

从this article开始:

A TCP/IP connection is identified by a four element tuple: {source IP,
source port, destination IP, destination port}. To establish a TCP/IP
connection only a destination IP and port number are needed, the
operating system automatically selects source IP and port.

上面引用的文章描述了Linux如何选择源端口号.

至于你的具体问题:

What kind of algorithm node is using to assign “random” port for the
client? How this works, is this determined by node or by OS?

它由OS决定.在连接到node.js之前,源端口号由TCP级别的原始主机选择.

其他一些参考文章:

Does the TCP source port have to be unique per host?

how can an application use port 80/HTTP without conflicting with browsers?

注意:没有安全原因我知道防火墙限制源端口号或阻止某些源端口号.它们仅是TCP簿记号,与安全性或所使用的服务类型完全无关.请注意,这与目标端口不同,目标端口通常与正在使用的服务类型直接相关(例如,80是HTTP,25是SMTP,143是IMAP等等…当您与其他主机建立TCP连接时,指定主机地址和目标端口号.不指定源端口号.

网友评论