端口号

编辑 锁定
所谓的端口,就好像是门牌号一样,客户端可以通过ip地址找到对应的服务器端,但是服务器端是有很多端口的,每个应用程序对应一个端口号,通过类似门牌号的端口号,客户端才能真正的访问到该服务器。 [1]  为了对端口进行区分,将每个端口进行了编号,这就是端口号。
中文名
端口
外文名
port number
分    类
物理端口,逻辑端口
功    能
网络接入

端口号简介

编辑
网络技术中,端口包括逻辑端口和物理端口两种类型。物理端口是用于连接物理设备之间的接口,如ADSL Modem、集线器交换机路由器上用 于连接其他网络设备的接口,如RJ-45端口、SC端口等等。逻辑端口是指逻辑意义上用于区分服务的端口,比如用于浏览网页服务的80端口,用于FTP服务的21端口等。如TCP/IP协议中的服务端口,通过不同的逻辑端口来区分不同的服务。一个IP地址的端口通过16bit进行编号,最多可以有65536个端口。端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535。

端口号作用

编辑
一台拥有IP地址的主机可以提供许多服务,比如Web服务、FTP服务、SMTP服务等,这些服务完全可以通过1个IP地址来实现。因为IP 地址与网络服务的关系是一对多的关系,不能只靠IP地址来区分不同的服务。实际上是通过“IP地址+端口号”来区分不同的服务的。
到1992年为止,知名端口号介于1~255之间。256~1023之间的端口号通常都是由Unix系统占用,以提供一些特定的Unix服务—也就是说,提供一些只有Unix系统才有的、而其他操作系统可能不提供的服务,IANA管理1~1023之间所有的端口号。
服务器一般都是通过知名端口号来识别的。例如,对于每个TCP/IP实现来说,FTP服务器的TCP端口号都是21,每个Telnet服务器的TCP端口号都是23,每个TFTP(简单文件传送协议)服务器的UDP端口号都是69。任何TCP/IP实现所提供的服务都用知名的1~1023之间的端口号。这些知名端口号由Internet号分配机构(IANA)来管理。

端口号使用规则

编辑
TCP与UDP段结构中端口地址都是16比特,可以有在0---65535范围内的端口号。对于这65536个端口号有以下的使用规定:
(1)端口号小于256的定义为常用端口,服务器一般都是通过常用端口号来识别的。任何TCP/IP实现所提供的服务都用1---1023之间的端口号,是由ICANN来管理的;端口号从1024---49151是被注册的端口,也成为“用户端口”,被IANA指定为特殊服务使用 [2] 
(2)客户端只需保证该端口号在本机上是惟一的就可以了。客户端端口号因存在时间很短暂又称临时端口号;
(3)大多数TCP/IP实现给临时端口号分配1024---5000之间的端口号。大于5000的端口号是为其他服务器预留的。

端口号UNIX操作系统常用端口号

编辑
UNIX操作系统因具有运行稳定、系统要求低、安全性高,而得到广泛应用。其伯克利套接字,发展较早,具有鲜明特点,例如:UNIX系统有保留端口号的概念。只有具有超级用户特权的进程才允许给它自己分配一个保留端口号,这些端口号介于1~1023之间,一些应用程序将它作为客户与服务器之间身份认证的一部分。大多数TCP/IP实现给临时端口分配1024~5000之间的端口号。大于5000的端口与是为其他服务器预留的(Internet上并不常用的服务)。 [3] 

端口号查看端口号

编辑
当一台服务器有大量的端口在使用,有两种方式来查看端口: 一种是利用系统内置的命令,一种是利用第三方端口扫描软件
1.用“netstat ”查看端口状态
在Windows 2000/XP中,可以在命令提示符下使用“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中的奇数。

端口号基于端口号的实时数据流分类

编辑
基于端口号的分类方法只适用于使用知名端口号的应用,而对于使用动态端口,或不固定搭载知名端口传输的协议则不适用。
基于知名端口号的数据流分类算法是最早期用于数据流分类的传统方法。它的分类原理是使用TCPUDP的服务器端口号来识别底层应用,使用者只需识别出在源端口和目的端口中,哪一个是服务器端口,哪一个是客户端端口,将其与IANA(InternetAssignedNumbersAuthority)颁布的知名端口号列表相比对,即可获知相应的应用。例如PoP2服务使用TCP/UDP109号端口,PoP3服务使用TCP/UDP110号端口,NNTP服务使用TCP/UDP119号端口等。由于具有时间复杂度低、算法简单等特点,基于端口号匹配的数据流分类算法曾经一度作为数据流分类的主要算法。 [4] 
然而,随着互联网应用的快速发展,端口识别的流分类方法越来越多的受到限制:
1.一部分应用协议为躲避防火墙的拦截而使用未定义端口号;
2.在一些情况下,服务器端口被动态分配,如FTP在数据文件的过程中使用动态协议端口。
3.一些注册的端口号被多个应用协议所使用,如:scp(securecode)与ssh(secureshell)同时使用TCP端口22。
4.一些应用搭载其它应用使用知名端口号,如:P2P搭载HTTP使用80端口进行文件传输。
5.一些应用使用常用端口以外的端口,以绕过访问限制:如在非80端口上运行WWW服务器。
6.一些情况下,服务器的端口是动态分配的。
7.木马等网络攻击行为并不专属于某一单一端口号。
8.一些新的协议不再使用IANA中的注册端口,如BitTorrentP2P协议。 [4] 
参考资料
  • 1.    陶艳芳.浅谈以java为基础的Socket通信简介及实现[J].青春岁月,2017,(7):259. DOI:10.3969/j.issn.1007-5070.2017.07.221.
  • 2.    TCP/IP Port Numbers  .ITGeared.com[引用日期2019-08-14]
  • 3.    UNIX操作系统常用端口号  .万方[引用日期2019-06-17]
  • 4.    王慧谦.基于端口号、统计特征和协议特征字的实时数据流分类[D].山东:山东大学,2011. DOI:10.7666/d.y1938284.
词条标签:
科学百科信息科学分类 中国通信学会 通信技术