Windows TCP/IP 临时、保留和封锁端口行为
2008-12-09 23:15
441 查看
导言
TCP 和 UDP 使用端口号来标识源和目标应用程序。对于典型的客户-服务器协议(例如那些用于 Web和电子邮件访问的协议),通信是由客户端计算机发起的。服务器应用程序通常监听众所周知的 TCP 或 UDP 端口,它们是由 Internet
号码分配机构 (IANA) 分配的。对于源端口,客户端应用程序通常查询操作系统中已不再由其他应用程序占用的动态分配的 TCP 或 UDP
端口。当应用程序请求而后绑定到一个动态分配的端口时,这就是通常所说的通配绑定。
动态分配的端口也称为临时端口。术语“临时”(短暂)并
不表示端口的生存期一定很短。例如,用于超文本传输协议的端口在数据传输完成之后会立即关闭。临时是指,与通常在整个服务器计算机运行期间都保持打开的服
务器应用程序端口相比,客户端应用程序端口的生存期相对较短(至多只在应用程序运行期间保持打开)。
客户端计算机使用临时端口而不是众所周
知的端口,以防与可能使用众所周知端口的本地服务发生冲突。例如,运行 Microsoft Windows XP 的计算机可能会使用
Internet Explorer,还可能运行 Internet 信息服务 (IIS)。当 Internet Explorer
访问网页时,它无法将 TCP 端口 80 用作源端口,因为该本地端口可能已被 IIS
占用。如果两个应用程序都设计成独占使用同一端口,则一次只有其中一个应用程序能够成功运行。
临时端口
在 Microsoft Windows XP 或 Windows Server 2003 中,由Windows 套接字分配给应用程序的临时 TCP 或 UDP 端口号的最大值是由注册表设置 MaxUserPort 控制的,该参数的默认值为
5000。临时端口从端口号 1025 开始编号。因此,默认情况下,Windows XP 或 Windows Server 2003
会为执行通配绑定的应用程序分配一个范围从 1025 到 5000 的号码。
要在运行 Windows XP 或 Windows Server 2003 的计算机上更改临时端口的最大值,请执行以下操作:
1. | 单击开始,再单击运行,键入 regedit.exe,然后单击确定。 |
2. | 找到而后单击以下注册表子项: HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters |
3. | 在编辑菜单上,指向新建,然后单击双字节值。 |
4. | 键入 MaxUserPort,然后按 ENTER。 |
5. | 双击 MaxUserPort 值,然后以十进制或十六进制键入最大值。 键入的数值必须在 5000¨C65534(十进制)之间。如果此参数设置的值超出有效范围,则使用最接近的有效值(5000 或 65534)。 |
6. | 单击确定。 |
7. | 退出注册表编辑器。 |
警告 如果错误使用注册表编辑器,可能会导致严重问题以至于需要您重新安装操作系统。Microsoft 无法保证您能够解决由于错误使用注册表编辑器而引起的问题。您必须自行承担使用注册表编辑器所带来的风险。 |
如果应用程序使用通配绑定同时打开大量连接,可能只需更改这个值,而且需确保应用程序不会用尽可用的临时端口。例如,一个使用文件传输协议 (FTP) 传输大量小文件的数据备份应用程序就可能用尽临时端口。
端口保留
通过端口保留,应用程序可以阻止一定范围内的端口在通配绑定期间被分配。然而,保留某一端口范围并不会阻止应用程序在保留的范围内执行特定的绑定(请求使用特定端口)。保留端口范围时,所选择的端口号连续范围必须是从 1025 到 MaxUserPort
设置值(默认值为 5000)或从 49152 到 65535。多个客户端应用程序可保留相同的范围。取消保留(删除保留)时,Windows
套接字会删除它找到的第一个完全包含在取消保留请求内的条目。
还可以执行以下操作,通过注册表来指定保留端口的范围:
1. | 单击开始,再单击运行,键入 regedit.exe,然后单击确定。 |
2. | 找到而后单击以下注册表子项: HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters |
3. | 在编辑菜单上,指向新建,然后单击多字符串值。 |
4. | 键入 ReservedPorts,然后按 ENTER。 |
5. | 双击 ReservedPorts 值,使用以下语法键入端口范围:x-y 要指定单个端口,请对 x 和 y 使用相同的值。例如,要指定端口 4000,请键入 4000-4000。 |
6. | 单击确定。 |
7. | 退出注册表编辑器。 |
端口封锁
通过端口封锁,应用程序可以防止其他应用程序执行对指定范围内端口的特定绑定。封锁端口范围时,应用程序所选择的连续端口号范围必须介于 MaxUserPort 设置值(默认值为 5000)+ 1 与 49151(对于未安装服务包的 Windows XP 和
Windows Server 2003)或 65535(对于 Windows Server 2003 Service Pack
1)之间。不能存在到封锁端口范围内端口的现有绑定。Windows
套接字会以句柄形式返回封锁范围内的最后一个端口号。解除封锁(取消封锁)时,Windows 套接字会解除与解除封锁请求具有相同左边界的封锁范围。
端口范围
对于运行未安装服务包的 Windows XP 或 Windows Server 2003 的计算机,下面给出了不同的端口范围:• | 众所周知的端口范围(由 IANA 保留):0 到 1023 |
• | 临时端口范围(对于通配绑定):1025 到 MaxUserPort 注册表设置值 |
• | 可用作特定端口(对于特定绑定):从 0 到 65535 的任何未封锁端口 |
• | 保留端口的可用范围:1025 到 MaxUserPort 以及 49152 到 65535 |
• | 封锁端口的可用范围:MaxUserPort + 1 到 49151(除非 MaxUserPort 的值设置为 49152 或更高,这种情况下没有可封锁端口范围) |
尽
管将众所周知的端口范围、可保留的端口范围以及可封锁的端口范围分开是很有意义的,但有时需要将 MaxUserPort 设置为高于 49152
的值并且需要封锁端口。为了给端口请求提供服务并保持向后兼容,Windows Server 2003 Service Pack 1 (SP1)
允许在保留范围内封锁端口。因此,对于 Windows Server 2003 SP1,范围如下所示:
• | 众所周知的端口范围(由 IANA 保留):0 到 1023 |
• | 临时端口范围:1025 到 MaxUserPort 注册表设置值 |
• | 可用作特定端口:从 0 到 65535 的任何未封锁端口 |
• | 保留端口的可用范围:1025 到 MaxUserPort 以及 49152 到 65535 |
• | 封锁端口的可用范围:MaxUserPort + 1 到 65535 |
相关文章推荐
- Windows TCP/IP 临时、保留和封锁端口行为
- Windows TCP/IP 临时、保留和封锁端口行为
- Windows TCP/IP 临时、保留和封锁端口行为
- [zz]临时、保留和封锁端口行为
- tcp/ip客户端临时端口
- 在系统启动时,Windows Vista 中、 在 Windows 7 中,Windows Server 2008 中和在 Windows Server 2008 R2 中的 497 天后未关闭 TIME_WAIT 状态的所有 TCP/IP 端口
- 系统出现tcpip临时端口不够用
- windows下使用netstat统计tcp、ip、端口的数量统计
- tcp/ip客户端临时端口
- SQL SERVER 2005 windows身份验证模式转为sql server验证,以及连接显示TCP/IP问题解决
- tcp/ip端口大全
- 驱动程序收到意外的登录前响应。请验证连接属性,并检查 SQL Server 的实例正在主机上运行,且在此端口接受 TCP/IP 连接。该驱动程序只能与 SQL Server 2000 或更高版本一起使
- windows 2003 server R2中 TCP/IP筛选
- 配置Hercules的TCP/IP - Windows篇
- windows下,用命令行进行系统的TCP/IP设置
- windows下带超时的telnet探测IP和端口
- SQL server开启TCP/IP登录,并且启用默认的1433端口
- 查看 目标ip udp tcp 端口
- WebService(2)——使用eclipse的TCP_IP工具监听端口
- ssm连接sqlserver时通过端口1433连接到主机的TCP/IP失败,错误“Connection refused:connect……