所谓的端口,就好像是门牌号一样,
客户端可以通过ip地址找到对应的
服务器端,但是服务器端是有很多端口的,每个
应用程序对应一个端口号,通过类似门牌号的端口号,客户端才能真正的访问到该服务器。为了对端口进行区分,将每个端口进行了编号,这就是端口号。
简介
在
网络技术中,端口包括逻辑端口和物理端口两种类型。物理端口是用于连接物理设备之间的接口,如
ADSL Modem、
集线器、
交换机、
路由器上用于连接其他网络设备的接口,如
RJ-45端口、SC端口等等。逻辑端口是指逻辑意义上用于区分服务的端口,比如用于浏览网页服务的80端口,用于FTP服务的21端口等。如
TCP/IP协议中的服务端口,通过不同的逻辑端口来区分不同的服务。一个IP地址的端口通过16bit进行编号,最多可以有65536个端口。端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535。
作用
端口号的主要作用是表示一台计算机中的特定进程所提供的服务。网络中的计算机是通过IP地址来代表其身份的,它只能表示某台特定的计算机,但是一台计算机上可以同时提供很多个服务,如数据库服务、FTP服务、Web服务等,我们就通过端口号来区别相同计算机所提供的这些不同的服务,如常见的端口号21表示的是FTP服务,端口号23表示的是Telnet服务端口号25指的是SMTP服务等。端口号一般习惯为4位整数,在同一台计算机上端口号不能重复,否则,就会产生端口号冲突这样的例外。
使用规则
TCP与UDP段结构中
端口地址都是16比特,可以有在0---65535范围内的端口号。对于这65536个端口号有以下的使用规定:
(1)端口号小于256的定义为常用端口,服务器一般都是通过常用端口号来识别的。任何TCP/IP实现所提供的服务都用1---1023之间的端口号,是由ICANN来管理的;端口号从1024---49151是被注册的端口,也成为“用户端口”,被IANA指定为特殊服务使用;
(2)
客户端只需保证该端口号在本机上是唯一的就可以了。
客户端端口号因存在时间很短暂又称临时端口号;
(3)大多数TCP/IP实现给临时端口号分配1024---5000之间的端口号。大于5000的端口号是为其他服务器预留的。
UNIX常用端口号
UNIX操作系统因具有运行稳定、系统要求低、安全性高,而得到广泛应用。其伯克利
套接字,发展较早,具有鲜明特点,例如:UNIX系统有保留端口号的概念。只有具有超级用户特权的进程才允许给它自己分配一个保留端口号,这些端口号介于1~1023之间,一些应用程序将它作为客户与服务器之间身份认证的一部分。大多数TCP/IP实现给临时端口分配1024~5000之间的端口号。大于5000的端口与是为其他服务器预留的(Internet上并不常用的服务)。
查看端口号
当一台服务器有大量的端口在使用,有两种方式来查看端口: 一种是利用系统内置的命令,一种是利用第三方
端口扫描软件。
1.用“netstat ”查看端口状态
在Windows中,可以在
命令提示符下使用“netstat ”查 看系统端口状态,可以列出系统正在开放的端口号及其状态。
2.用第三方端口扫描软件
第三方
端口扫描软件有许多,界面虽然千差万别,但是功能却是类似的。这里以“Fport” (可到?type_t=7或下载)为例讲解。“Fport”在
命令提示符下使用,运行结果 与“netstat -an”相似,但是它不仅能够列出正在使用的端口号及类型,还可 以列出端口被哪个
应用程序使用。
3.用“netstat -n”命令,以数字格式显示地址和端口信息。
如果仔细检查这些标准的简单服务以及其他标准的TCP/IP服务(如Telnet、FTP、 SMTP等)的端口号时,我们发现它们都是奇数。这是有历史原因的,因为这些端口号都是从NCP端口号派生出来的(NCP,即
网络控制协议,是ARPANET的
运输层协议,是TCP的前身)。NCP是半双工的,不是全双工的,因此每个
应用程序需要两个连接,需预留一对奇数和偶数端口号。当TCP和UDP成为标准的
运输层协议时,每个
应用程序只需要一个端口号,因此就使用了NCP中的奇数。
基于端口号的实时数据流分类
基于端口号的分类方法只适用于使用
知名端口号的应用,而对于使用动态端口,或不固定搭载知名端口传输的协议则不适用。
基于知名端口号的数据流分类算法是最早期用于数据流分类的传统方法。它的分类原理是使用
TCP或
UDP的服务器端口号来识别底层应用,使用者只需识别出在源端口和目的端口中,哪一个是服务器端口,哪一个是客户端端口,将其与IANA(Internet Assigned Numbers Authority)颁布的知名端口号列表相比对,即可获知相应的应用。例如PoP2服务使用TCP/UDP109号端口,PoP3服务使用TCP/UDP110号端口,
NNTP服务使用TCP/UDP119号端口等。由于具有时间复杂度低、算法简单等特点,基于端口号匹配的数据流分类算法曾经一度作为数据流分类的主要算法。
然而,随着互联网应用的快速发展,端口识别的流分类方法越来越多的受到限制:
1.一部分应用协议为躲避
防火墙的拦截而使用未定义端口号;
2.在一些情况下,服务器端口被动态分配,如FTP在数据文件的过程中使用动态协议端口。
3.一些注册的端口号被多个应用协议所使用,如:
scp(securecode)与
ssh(secureshell)同时使用
TCP端口22。
4.一些应用搭载其它应用使用知名端口号,如:P2P搭载
HTTP使用80端口进行文件传输。
5.一些应用使用常用端口以外的端口,以绕过访问限制:如在非80端口上运行WWW服务器。
6.一些情况下,服务器的端口是动态分配的。
7.木马等网络攻击行为并不专属于某一单一端口号。
8.一些新的协议不再使用IANA中的注册端口,如
BitTorrent等
P2P协议。