端口号
所谓的端口,就好像是门牌号一样,客户端可以通过ip地址找到对应的服务器端,但是服务器端是有很多端口的,每个应用程序对应一个端口号,通过类似门牌号的端口号,客户端才能真正的访问到该服务器。为了对端口进行区分,将每个端口进行了编号,这就是端口号 [1] 。
目录
简介
在网络技术中,端口包括逻辑端口和物理端口两种类型。物理端口是用于连接物理设备之间的接口,如ADSL Modem、集线器、交换机、路由器上用于连接其他网络设备的接口,如RJ-45端口、SC端口等等 [2] 。逻辑端口是指逻辑意义上用于区分服务的端口,比如用于浏览网页服务的80端口,用于FTP服务的21端口等。如TCP/IP协议中的服务端口,通过不同的逻辑端口来区分不同的服务。一个IP地址的端口通过16bit进行编号,最多可以有65536个端口 [3] 。端口是通过端口号来标记的,端口号只有整数,范围是从0到65535 [4] 。
作用
端口号的主要作用是表示一台计算机中的特定进程所提供的服务。网络中的计算机是通过IP地址来代表其身份的,它只能表示某台特定的计算机,但是一台计算机上可以同时提供很多个服务,如数据库服务、FTP服务、Web服务等,我们就通过端口号来区别相同计算机所提供的这些不同的服务,如常见的端口号21表示的是FTP服务,端口号23表示的是Telnet服务端口号25指的是SMTP服务等。端口号一般习惯为4位整数,在同一台计算机上端口号不能重复,否则,就会产生端口号冲突这样的例外 [5] 。
使用规则
TCP与UDP段结构中端口地址都是16比特,可以有在0---65535范围内的端口号。对于这65536个端口号有以下的使用规定 :
(1)端口号小于256的定义为常用端口,服务器一般都是通过常用端口号来识别的。任何TCP/IP实现所提供的服务都用1---1023之间的端口号,是由ICANN来管理的;端口号从1024---49151是被注册的端口,也成为“用户端口”,被IANA指定为特殊服务使用;
(2)客户端只需保证该端口号在本机上是唯一的就可以了。客户端端口号因存在时间很短暂又称临时端口号 ;
(3)大多数TCP/IP实现给临时端口号分配1024---5000之间的端口号。大于5000的端口号是为其他服务器预留的 [6] 。
UNIX常用端口号
UNIX操作系统因具有运行稳定、系统要求低、安全性高,而得到广泛应用。其伯克利套接字,发展较早,具有鲜明特点,例如:UNIX系统有保留端口号的概念。只有具有超级用户特权的进程才允许给它自己分配一个保留端口号,这些端口号介于1~1023之间,一些应用程序将它作为客户与服务器之间身份认证的一部分。大多数TCP/IP实现给临时端口分配1024~5000之间的端口号。大于5000的端口与是为其他服务器预留的(Internet上并不常用的服务) [7] 。
查看端口号
当一台服务器有大量的端口在使用,有两种方式来查看端口: 一种是利用系统内置的命令,一种是利用第三方端口扫描软件。
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中的奇数 [8] 。
基于端口号的实时数据流分类
基于端口号的分类方法只适用于使用知名端口号的应用,而对于使用动态端口,或不固定搭载知名端口传输的协议则不适用 [9] 。
基于知名端口号的数据流分类算法是最早期用于数据流分类的传统方法。它的分类原理是使用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协议 。
视频
怎么查看自己电脑的端口号
参考文献
- ↑ 陶艳芳.浅谈以java为基础的Socket通信简介及实现(J).青春岁月,2017,(7):259. DOI:10.3969/j.issn.1007-5070.2017.07.221.
- ↑ 陈文明主编;邹志龙,高燕,张占义等副主编,计算机网络实用技术,北京交通大学出版社,2011.06,第227页
- ↑ 郭奕,赵瑜,何建编著,C#程序设计与实例分析,西安电子科技大学出版社,2016.05,第225页
- ↑ 九天科技编著,黑客攻防入门到精通:实战秘笈版,中国铁道出版社,2017.09,第13页
- ↑ 曾波,周雪玉,孟伟编著,电子商务应用系统开发实验教程,重庆大学出版社,2009.06,第4页
- ↑ ,引用日期2019-08-14
- ↑ ,引用日期2019-06-17
- ↑ 秦攀科主编,Linux C程序设计基础,北京交通大学出版社,2011.06,第353页
- ↑ 王慧谦.基于端口号、统计特征和协议特征字的实时数据流分类(D).山东:山东大学,2011. DOI:10.7666/d.y1938284.