网络专家发布 转自:http://blog.163.com/abslh123@126/blog/static/792137962008628105919348/

本文介绍 Windows 套接字应用程序可用的各种类型的传输控制协议 (TCP) 和用户数据报协议 (UDP) 端口及其在 Windows XP 和 Windows Server 2003 中的范围。

 

导言

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 无法保证您能够解决由于错误使用注册表编辑器而引起的问题。您必须自行承担使用注册表编辑器所带来的风险。

 

必须重新启动计算机,方可使 MaxUserPort 注册表设置更改生效。

如果应用程序使用通配绑定同时打开大量连接,可能只需更改这个值,而且需确保应用程序不会用尽可用的临时端口。例如,一个使用文件传输协议 (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 或更高,这种情况下没有可封锁端口范围)

对于运行未安装服务包的 Windows XP 或 Windows Server 2003 的计算机,下图显示了不同的端口范围。

尽 管将众所周知的端口范围、可保留的端口范围以及可封锁的端口范围分开是很有意义的,但有时需要将 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

对于运行带 SP1 的 Windows Server 2003 的计算机,下图显示了不同的端口范围。

Windows TCP/IP 临时、保留和封锁端口行为的更多相关文章

  1. linux tcp/ip编程和windows tcp/ip编程差别以及windows socket编程详解

    最近要涉及对接现有应用visual c++开发的tcp客户端,花时间了解了下windows下tcp开发和linux的差别,从开发的角度而言,最大的差别是头文件(早期为了推广尽可能兼容,后面越来越扩展, ...

  2. TCP/IP协议的编写《转载》

    基于HHARM9-EDU的TCP/IP(UDP)协议的实现 原文网址:http://blog.csdn.net/lhj0503/article/details/3323788 摘 要:嵌入式技术的发展 ...

  3. 《TCP/IP详解 卷一》读书笔记-----广播&多播&IGMP

    1.广播和多播都只适用于UDP,因为TCP是面向连接的,需要将两台主机的两个进程绑定在一起,即IP地址和端口对 2.通常,网卡能看到网络中的每一个数据帧,但是往往它只接受目的地址与自己MAC地址相同的 ...

  4. 深入浅出TCP/IP簇

    TCP/IP是“transmission Control Protocol/Internet Protocol”的简写,中文译名为传输控制协议/互联网络协议.TCP/IP不是一个协议,而是一个协议簇的 ...

  5. <TCP/IP原理> (二) OSI模型和TCP/IP协议族

    1.OSI参考模型 1)作用 2)各层的名称和功能 2.对分层网络协议体系的理解 1)不同节点:层次组成不同,作用不同 2)横向理解:虚通信.对等实体.协议.PDU 3)纵向理解:封装与解封.服务.接 ...

  6. OSI七层模型与TCP/IP四层模型

    OSI七层模型与TCP/IP四层模型 OSI模型(Open System Interconnection Reference Model,缩写为OSI),全名“开放式系统互联通信参考模型”,是一个试图 ...

  7. 18 网络编程-TCP/IP各层介绍(5层模型讲解)

    1.TCP/IP五层协议讲解 物理层--数据链路层--网络层--传输层--应用层 我们将应用层,表示层,会话层并作应用层,从tcp/ip五层协议的角度来阐述每层的由来与功能,搞清楚了每层的主要协议 就 ...

  8. 网络编程-TCP/IP各层介绍(5层模型讲解)

    1.TCP/IP五层协议讲解 物理层--数据链路层--网络层--传输层--应用层 我们将应用层,表示层,会话层并作应用层,从tcp/ip五层协议的角度来阐述每层的由来与功能,搞清楚了每层的主要协议 就 ...

  9. SQLServer配置开启TCP/IP连接

    一 先启用SQLServer的TCP/IP协议 1.1 打开SQLServer配置管理器 1.2 启用TCP/IP 二 设置SQLServer端口 2.1 双击TCP/IP,弹出属性设置框 2.2 将 ...

随机推荐

  1. [转]MySQL事务学习-->隔离级别

    From : http://blog.csdn.net/mchdba/article/details/12837427 6 事务的隔离级别 设置的目的 在数据库操作中,为了有效保证并发读取数据的正确性 ...

  2. float,double等精度丢失问题 float,double内存表示

    问题提出:12.0f-11.9f=0.10000038,"减不尽"为什么? 来自MSDN的解释: http://msdn.microsoft.com/zh-cn/c151dt3s. ...

  3. c++流缓冲学习---rdbuf()

    我们使用STL编程的时候有时候会想到把一个流对象指向的内容用另一个流对象来输出,比如想把一个文件的内容输出到显示器上,我们可以用简单的两行代码就可以完成: ifstream infile(" ...

  4. C++11 std::shared_ptr总结与使用

    最近看代码,智能指针用的比较多,自己平时用的少,周末自己总结总结.方便后续使用. std::shared_ptr大概总结有以下几点: (1) 智能指针主要的用途就是方便资源的管理,自动释放没有指针引用 ...

  5. iOS开发-Block回调

    关于Block之前有一篇文章已经写过一篇文章Object-C-代码块Block回顾,不过写的比较浅显,不能体现出Block在实际开发中的重要性,关于Block的基础知识,可以参考之前的博客.在实际开发 ...

  6. Windows 安装配置 JIRA

    MySQL-5.5.28 JDK1.6.0_21 JIRA功能全面,界面友好,安装简单,配置灵活,权限管理以及可扩展性方面都十分出色. 一.MySQL建库和建账号 1. mysql中创建数据库jira ...

  7. 我对android davilk 虚拟机的理解

    Davilk虚拟机作为Android平台的一部分.Google公司花了大量时间思考针对低功耗手持设备的优化设计.在智能手机出现之前,与桌面设备相比,手持设备在内存和速度方面落后8-10年.它们的计算能 ...

  8. 【Spark】提交Spark任务-ClassNotFoundException-错误处理

    提交Spark任务-ClassNotFoundException-错误处理 Overview - Spark 2.2.0 Documentation Spark Streaming - Spark 2 ...

  9. Linux下简单线程池的实现

    大多数的网络服务器,包括Web服务器都具有一个特点,就是单位时间内必须处理数目巨大的连接请求,但是处理时间却是比较短的.在传统的多线程服务器模型中是这样实现的:一旦有个服务请求到达,就创建一个新的服务 ...

  10. Linux系统下对NFS服务安全加固的方法

    NFS(Network File System)是 FreeBSD 支持的一种文件系统,它允许网络中的计算机之间通过 TCP/IP 网络共享资源.不正确的配置和使用 NFS,会带来安全问题. 概述 N ...