简介
如果把IP地址比作一间房子,端口就是出入这间房子的门。
一个IP地址的端口有65536(即:2^16)个。
端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535(2^16-1)。
数据包在网络上通过IP地址进行发送与接收。
操作系统通过端口号将不同数据包传送给不同应用程序。
本地操作系统会给那些有需求的进程分配协议端口(protocol port,即我们常说的端口),
每个协议端口由一个正整数标识,如:80,139,445等等。
当目的主机接收到数据包后,将根据报文首部的目的端口号,把数据发送到相应端口,
而与此端口相对应的那个进程将会领取数据并等待下一组数据的到来。
端口其实就是队,操作系统为各个进程分配了不同的队,数据包按照目的端口被推入相应的队中,等待被进程取用。
在极特殊的情况下,这个队也是有可能溢出的,不过操作系统允许各进程指定和调整自己的队的大小。
端口分类
端口按端口号可以分为3大类:
a、公认端口(WellKnownPorts):
从0到1023,它们紧密绑定(binding)于一些服务。
通常这些端口的通讯明确表明了某种服务的协议。例如:80端口实际上总是HTTP通讯。
b、动态端口(Dynamic Ports):
范围从1024到65535。
之所以称为动态端口,是因为它一般不固定分配某种服务,而是动态分配。
动态分配是指当一个系统进程或应用程序进程需要网络通信时,它向主机申请一个端口,
主机从可用的端口号中分配一个供它使用。当这个进程关闭时,同时也就释放了所占用的端口号。
1、注册端口(RegisteredPorts):
从1024到49151。它们松散地绑定于一些服务。
也就是说有许多服务绑定于这些端口,这些端口同样用于许多其它目的。
例如:许多系统处理动态端口从1024左右开始。
2、动态和/或私有端口(Dynamicand/orPrivatePorts):
从49152到65535。理论上,不应为服务分配这些端口。
实际上,机器通常从1024起分配动态端口。但也有例外:SUN的RPC端口从32768开始。