gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 02:32:58 25 4
gpt4 key购买 nike

我使用 nodejs ( net module ) 在客户端和服务器之间创建了 tcp 连接。服务器正在监听已经预定义的端口,客户端正在连接到该端口。

据我了解,客户端端口是由 Node 动态分配的?那是对的吗?

  1. Node 使用哪种算法为客户端分配“随机”端口?这是如何工作的,这是由 Node 还是操作系统决定的?
  2. 是否可以定义客户端将要使用的静态端口?是否可以定义客户端使用的端口范围?

注意:我想我在 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?

由操作系统决定。在连接到 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 连接时,您指定主机地址和目标端口号。您不指定源端口号。

关于node.js - Nodejs TCP连接客户端端口分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30584395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com