如何更改/查看 Windows 机器上的临时端口范围?

Posted

技术标签:

【中文标题】如何更改/查看 Windows 机器上的临时端口范围?【英文标题】:How to change/view the ephemeral port range on Windows machines? 【发布时间】:2011-10-23 19:56:37 【问题描述】:

在 Linux 中,我可以使用 /proc/sys/net/ipv4/ip_local_port_range 文件查看或更改临时端口范围。

如何查看或更改 Windows 机器上的临时端口范围?

【问题讨论】:

【参考方案1】:

http://www.ncftp.com/ncftpd/doc/misc/ephemeral_ports.html#Windows 说:

根据 Microsoft 知识库文章 929851,从 Windows Vista 和 Windows Server 2008 开始,Windows 现在默认使用较大范围 (49152-65535)。同一篇文章还展示了如何根据需要更改范围,但默认范围现在对于大多数服务器来说已经足够了。

对于较旧的 Windows 操作系统(Windows XP 和较早版本),Windows 使用传统的 BSD 范围 1024 到 4999 作为其临时端口范围。不幸的是,您似乎只能设置临时端口范围的上限。以下信息摘自 Microsoft 知识库文章196271:

启动注册表编辑器 (Regedt32.exe)。 在注册表中找到以下项: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

在编辑菜单上,单击添加值,然后添加以下注册表值:

Value Name: MaxUserPort Data Type: REG_DWORD Value: 65534 <for example>

有效范围:5000-65534(十进制)默认值:0x1388(十进制5000)

说明:此参数控制应用程序向系统请求任何可用用户端口时使用的最大端口号。通常,临时(即短期)端口分配在 1024 和 5000 之间(含)。

退出注册表编辑器。

注意:还有另一篇相关的知识库文章 (812873) 声称允许您设置排除范围,这可能意味着您可以排除端口 1024-9999(例如)以使临时端口范围为 10000 -65534。但是,我们还不能让它工作(截至 2004 年 10 月)。

【讨论】:

【参考方案2】:

版本 > Windows Server 2003 不支持 ReservedPorts。

有一个修补程序可以通过 netsh 添加缺少的功能。

http://support.microsoft.com/kb/2665809

【讨论】:

【参考方案3】:

这是一个老问题,似乎在较新的 Windows 版本中答案已经发生了变化(我不确定具体是哪一个)。

netsh int ipv4 show dynamicport tcp

在我的 Windows 10 电脑上,它显示:

Protocol tcp Dynamic Port Range
---------------------------------
Start Port      : 49152
Number of Ports : 16384

改变它,例如:

netsh int ipv4 set dynamicport tcp start=49200 num=16000

【讨论】:

以上是关于如何更改/查看 Windows 机器上的临时端口范围?的主要内容,如果未能解决你的问题,请参考以下文章

怎么更改主机名

怎么查看开放的端口

windows系统如何查看端口被占用杀进程

如何找出哪个进程正在侦听 Windows 上的 TCP 或 UDP 端口?

如何找出哪个进程正在侦听 Windows 上的 TCP 或 UDP 端口?

Windows 8 上的 XAMPP 和 Skype 端口冲突 [重复]