TCP
端口和UDP端口。由于TCP和UDP 两个协议是独立的,因此各自的端口号也相互独立,比如TCP有235端口,UDP也 可以有235端口,两者并不冲突。
1.
周知
端口
(Well Known Ports)
周知
端口是众所周知的
端口号,范围从0到1023,其中80端口分配给WWW服务,21端口分配给FTP服务等。我们在IE的地址栏里输入一个网址的时候是不必指定
端口号的,因为在默认情况下
WWW服务的端口是“80”。
网络服务是可以使用其他
端口号的,如果不是默认的端口号则应该在 地址栏上指定端口号,方法是在地址后面加上冒号“:”(
半角),再加上端口 号。比如使用“8080”作为WWW服务的
端口,则需要在
地址栏里输入“网址:8080”。
但是有些系统协议使用固定的
端口号,它是不能被改变的,比如139 端口专门用于NetBIOS与TCP/IP之间的通信,不能手动改变。
2.
动态
端口
(Dynamic Ports)
动态端口的范围是从49152到65535。之所以称为动态端口,是因为它 一般不固定分配某种服务,而是动态分配。动态分配是指当一个系统进程或应用 程序进程需要
网络通信时,它向主机申请一个端口,主机从可用的端口号中分配 一个供它使用。当这个进程关闭时,同时也就释放了所占用的端口号。
3.
注册端口
端口1024到49151,分配给用户进程或应用程序。这些进程主要是用户选择安装的一些应用程序,而不是已经分配好了公认端口的常用程序。这些端口在没有被服务器资源占用的时候,可以用用户端动态选用为源端口。
网络中可以被命名和
寻址
的通信
端口
是
操作系统
的一种可分配资源。由网络OSI(
开放系统互联
参考模型,Open System Interconnection Reference Model)七层协议可知,传输层与网络层最大的
区别
是传输层提供
进程通信
能力,
网络通信
的最终地址不仅包括
主机地址
,还包括可描述进程的某种标识。所以TCP/IP协议提出的协议
端口
,可以认为是
网络通信
进程的一种
标识符
。
应用程序(调入内存运行后一般称为:进程)通过系统调用与某端口建立连接(binding,绑定)后,传输层传给该端口的数据都被相应的进程所接收,相应进程发给传输层的数据都从该端口输出。在TCP/IP协议的实现中,端口操作类似于一般的I/O操作,进程获取一个端口,相当于获取本地唯一的I/O文件,可以用一般的读写方式访问类似于文件描述符,每个端口都拥有一个叫端口号的整数描述符,用来区别不同的端口。由于TCP/IP传输层的TCP和UDP两个协议是两个完全独立的软件模块,因此各自的端口号也相互独立。如TCP有一个255号端口,UDP也可以有一个255号端口,两者并不冲突。端口号有两种基本分配方式:第一种叫全局分配这是一种集中分配方式,由一个公认权威的中央机构根据用户需要进行统一分配,并将结果公布于众,第二种是本地分配,又称动态连接,即进程需要访问传输层服务时,向本地操作系统提出申请,操作系统返回本地唯一的端口号,进程再通过合适的系统调用,将自己和该端口连接起来(binding,绑定)。TCP/IP端口号的分配综合了以上两种方式,将端口号分为两部分,少量的作为保留端口,以全局方式分配给服务进程。每一个标准服务器都拥有一个全局公认的端口叫周知端口,即使在不同的机器上,其端口号也相同。剩余的为自由端口,以本地方式进行分配。TCP和UDP规定,小于256的端口才能作为保留端口。
系统管理员可以"重定向"端口
一种常见的技术是把一个
端口重定向到另一个地址。例如默认的HTTP
端口是80,不少人将它重定向到另一个端口,如8080。如果是这样改了。实现重定向是为了隐藏公认的默认
端口,降低受破坏率。这样如果有人要对一个公认的默认
端口进行攻击则必须先进行
端口扫描。大多数
端口重定向与原端口有相似之处,例如多数HTTP端口由80变化而来:81,88,8000,8080,8888。同样POP的
端口原来在110,也常被重定向到1100。也有不少情况是选取统计上有特别意义的数,象1234,23456,34567等。许多人有其它原因选择奇怪的数,42,69,666,31337。近来,越来越多的
远程控制木马(RemoteAccessTrojans,RATs)采用相同的默认
端口。如NetBus的默认
端口是12345。BlakeR.Swopes指出使用重定向
端口还有一个原因,在UNIX系统上,如果你想侦听1024以下的端口需要有
root权限。如果你没有root权限而又想开web服务,你就需要将其安装在较高的
端口。此外,一些ISP的
防火墙将阻挡低
端口的通讯,这样的话即使你拥有整个机器你还是得重定向端口。