windows 网络参数设置

本文介绍如何通过修改Windows注册表中的MaxUserPort和TcpTimedWaitDelay参数来优化网络配置,解决端口耗尽及TIME_WAIT状态占用过多的问题。

windows网络参数的设置都在注册表: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 下

要调整网络参数,修改该位置下已有键值或新增键值。


1.  MaxUserPort

键值范围:5000 - 65534 (xp, 2003下默认5000,很难想象在2003服务器系统下也是5000,鄙视)

键值作用:设定端口号范围

                    当端口号不足时,发起socket connect连接时会报错:

                       中文:"通常每个套接字地址(协议/网络地址/端口)只允许使用一次"

                       英文:Only one usage of each socket address (protocol/network address/port) is normally permitted.


2. TcpTimedWaitDelay

键值范围:30 - 240 (单位:秒,默认值:240)

键值作用:相信很多人都遇到过犯人的"TIME_WAIT"状态,在多并发程序下容易出现将端口号耗完的情况。

                    "TIME_WAIT"状态是TCP/IP协议规定的一种套接字状态

                    一个socket连接的是两个对象:client <-----> server

                    不管是client还是server,谁先关闭套接字(调用close()),谁就会进入TIME_WAIT状态

                    这是协议规定的,不可避免的,能改变的是等待时间

                    windows下默认为3分钟,linux下默认为1分钟

                    因而在windowds下特别容易出现"TIME_WAIT"占满的情况

                    更有甚者,在win2008环境下,有个严重的bug,如果开机时间长达497天后,TIME_WAIT就永远不释放啦

                    哈哈,再次鄙视微软,这还是服务器系统么,服务器可是常年不关机的啊,

                    参考微软官网:https://support.microsoft.com/zh-cn/kb/2553549?spid=11737&sid=156

                    在服务器上,建议将该值改为60(一分钟)


参考文章:

避免TCP/IP端口耗尽: https://msdn.microsoft.com/zh-cn/library/aa560610(v=bts.10).aspx 



### 如何在Windows 10中通过注册表查看DNS设置Windows 10系统中,DNS设置可以通过注册表进行查看。以下内容详细说明了如何访问和读取与DNS相关的配置信息。 #### 注册表路径 DNS配置信息存储在以下注册表路径中: ``` HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters ``` 此外,每个网络适配器的DNS设置也可以单独查看,路径如下: ``` HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\[接口GUID] ``` 其中,`[接口GUID]`是每个网络适配器的唯一标识符。 #### 查看全局DNS设置 在全局路径下,可以找到以下键值: - `DhcpNameServer`:表示通过DHCP获取的DNS服务器地址[^2]。 - `NameServer`:表示手动设置的DNS服务器地址,多个地址以空格分隔。 #### 查看特定网络适配器的DNS设置 在每个网络适配器的路径下,可以找到以下键值: - `DhcpNameServer`:同全局路径中的定义。 - `NameServer`:同全局路径中的定义。 - `Domain`:指定该适配器使用的域名。 - `SearchList`:指定该适配器使用的DNS搜索列表。 #### 示例代码 以下是一个PowerShell脚本,用于导出所有网络适配器的DNS设置: ```powershell Get-ChildItem "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\" | ForEach-Object { $interface = $_.PSChildName $dnsServers = (Get-ItemProperty -Path $_.PsPath -Name "NameServer" -ErrorAction SilentlyContinue).NameServer if ($dnsServers) { Write-Output "Interface: $interface, DNS Servers: $dnsServers" } } ``` #### 注意事项 修改注册表可能会导致系统不稳定或无法正常运行。因此,在更改任何注册表项之前,请确保备份注册表[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

duanbeibei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值