1、什么是端口号
在一台主机上运行了多个服务,主机为了区分这些服务,所以给每个服务都分配一个端口号,端口号唯一的标识这台主机上的某个服务。
IP地址唯一标识网络上的一台主机,服务器用通过端口号来区分不同的网络服务。所以IP地址+端口号就表示网络中唯一的一个服务。
客户端通常对它所使用的端口号并不关心,只要保证该端口在本主机上是唯一的就可以了。所以客户端端口号又叫做临时端口号,这是因为他们通常只是在用户运行该客户程序时临时分配的。而服务器则不同,因为服务器是要被许多客户进行访问的,所以服务器的端口号应该是众所周知的。
端口号的范围从0~65535。任何TCP/IP实现所提供的服务都使用1~1023之间的端口,大多数TCP/IP实现给临时端口分配1023~5000之间的端口号,大于5000的端口号是为其他服务器预留的。
比如:http端口号是80,ftp端口号是21,ssh是22。由于端口号数量比较多,所以要对端口号进行分类管理。
在/etc/services中保存着各种服务的端口号。
2、那么端口号是如何分类的?
2.1、公认端口号(Well Known Ports):这些端口号通常称为”常用端口”,范围是0~1023,这些端口号一般固定的分配给一些服务。例如:http服务的端口号是80,FTP服务的端口号是21。
2.2、注册端口号(Registered Ports):
注册端口号的范围是1024~49151。这些端口号一般不固定的分配给某个服务,也就是说这些端口是被临时分配的。只要运行的程序向系统提出访问网络的申请,那么系统就可以从这些端口号中分配一个供该程序使用。比如1024端口就是分配给第一个向系统发出申请的程序。在关闭程序进程后,就会释放所占用的端口号。
2.3、动态/或私有端口号(Dynamic and/or Private Ports):
动态端口号的范围从49152~65535。理论上不应该把常用服务分配在这些端口上。因为有许多木马程序就喜欢用这些端口,因为这些端口常常不被注意,容易隐蔽。
3、根据所提供的服务方式不同,端口通常又可以分为”TCP协议端口”和”UDP协议端口”。