在Internet上的每一台主机(Hosts)都有唯一的一个地址(IP),但同一台主机可能同时提供一种以上的服务,比如FTP服务、WWW服务等等,那么每一种服务就要占用该主机的一个端口(Port)。在互联网应用中是通过“IP地址+端口号”来区分不同的服务。
软件形式上的端口分为两种:一种是TCP端口,一种是UDP端口。计算机之间相互通信的时候,分为两种方式:一种是发送信息以后,可以确认信息是否到达,也就是有应答的方式,这种方式大多采用TCP协议;一种是发送以后就不管了,不去确认信息是否到达,这种方式大多采用UDP协议。对应这两种协议的服务提供的端口,也就分为TCP端口和UDP端口。
端口号有两种基本分配方式:第一种叫全局分配这是一种集中分配方式,由一个公认权威的*机构根据用户需要进行统一分配,并将结果公布于众。第二种是本地分配,又称动态连接,即应用程序(调入内存运行后一般称为:进程)需要访问传输层服务时,向本地操作系统提出申请,操作系统返回本地唯一的端口号,进程再通过合适的系统调用,将自己和该端口连接起来(Binding,绑定),当这个进程关闭时,同时也就释放了所占用的端口号。
按端口号可分为3大类:
1.公认端口:从0到1023 它们紧密绑定(binding)于一些服务。通常这些端口的通讯明确表明了某种服务的协议。例如:80端口实际上总是HTTP通讯。现在IANA(The Internet Assigned Numbers Authority 互联网数字分配机构)管理1~1023之间所有的端口号。
其中知名端口或常用端口号介于1~255之间。 256~1023之间的端口号通常都是由Unix系统占用,以提供一些特定的Unix服务—也就是说,提供一些只有Unix系统才有的、而其他操作系统可能不提供的服务。
2.注册端口:从1024到49151 它们松散地绑定于一些服务,这些端口号一般不固定分配给某个服务,许多服务都可以使用这些端口。
本地操作系统会给那些有需求的进程分配协议端口,大多数TCP/IP实现给临时端口号分配1024—5000之间的端口号。
3.动态或私有端口(Dynamic or Private Ports):从49152到65535 根据定义,该段端口属于“动态端口”范围,没有端口可以被正式地注册占用。理论上,不应为服务分配这些端口。实际上,机器通常从1024起分配动态端口。