什么是端口
“端口”是英文port的意译,可以认为是
设备与外界通讯交流的出口
。端口可分为虚拟端口和物理端口,其中虚拟端口
指计算机内部或交换机路由器内的端口,不可见
。例如计算机中的80端口、21端口、23端口等。物理端口
又称为接口,是可见端口,计算机背板的RJ45网口,交换机路由器集线器等RJ45端口。电话使用RJ11插口也属于物理端口的范畴。下面我们主要讨论虚拟端口
。
3.动态和/或私有端口
(Dynamic and/or Private Ports):从49152到65535。理论上,不应为服务分配这些端口。实际上,机器通常从1024起分配动态端口。但也有例外:SUN的RPC端口从32768开始
端口的作用
ip能锁定一台物理机器,对应着一张网卡,外界发来的数据包网卡都会接收
。网卡给程序提供了接口,当外界发来消息,我就转发给你(程序)。这样应用程序就能收到数据了。但是问题来了,程序A和程序B都需要监听网卡接发数据,网卡说那我把接到的数据都发给你两,你们自己看着办吧。好,小A小B都接收了。但如果有很多程序都来监听网卡,网卡将包发到了所有应用程序,所有应用程序都累得不行,最终垮了。好,那网卡说我给你们加个表示吧,我们之间可以
用一个号码来作为标识
,我和小A之间就用1来标识,如果外界发给1号标识的数据我就转发给你,你监听我的时候得告诉我你监听的是1,我就转发1的数据包给你。好了其他的BCD…都自己弄一个标识号,只要不重复就行。这样大家都省事了。最后涉及到安全,
一个标识号只能被一个应用程序监听
,因为如果两个不同的程序同时监听一个标识号,若数据被两个程序都接收,数据安全性
就没办法保证了。
这些标志号就是端口。
其实网卡都是被系统层封装了,端口和进程之间的关系也是系统封装好的。我们只需要用socket就行,给定一个端口号就行了。其他的事都交给操作系统去做。
–来自知乎
端口分类
端口号的范围从0到65535(256*256)
逻辑意义上的端口有多种分类标准,下面将介绍两种常见的分类:
1. 按端口号分布划分
知名端口
(Well-Known Ports)
知名端口即众所周知的端口号,范围从
0到1023
,这些端口号一般固定分配给一些服务。比如21端口分配给FTP服务,25端口分配给SMTP(简单邮件传输协议)服务,80端口分配给HTTP服务,135端口分配给RPC(远程过程调用)服务等等。
2.动态端口
(Dynamic Ports)
动态端口的范围从1024到65535
,这些端口号一般不固定分配给某个服务,也就是说许多服务都可以使用这些端口。只要运行的程序向系统提出访问网络的申请,那么系统就可以从这些端口号中分配一个供该程序使用。比如1024端口就是分配给第一个向系统发出申请的程序。在关闭程序进程后,就会释放所占用的端口号。
不过,动态端口也常常被病毒木马程序所利用,如冰河默认连接端口是7626、WAY 2.4是8011、Netspy 3.0是7306、YAI病毒是1024等等。
2. 按协议类型划分
按协议类型划分,可以分为TCP
、UDP
、IP
和ICMP
(Internet控制消息协议)等端口。下面主要介绍TCP和UDP端口
:
-
TCP端口
TCP端口,即传输控制协议端口,需要在客户端和服务器之间建立连接,这样可以提供可靠的数据传输。常见的包括FTP服务的21端口,Telnet服务的23端口,SMTP服务的25端口,以及HTTP服务的80端口等等。
-
UDP端口
UDP端口,即用户数据包协议端口,无需在客户端和服务器之间建立连接,安全性得不到保障。常见的有DNS服务的53端口,SNMP(简单网络管理协议)服务的161端口,QQ使用的8000和4000端口等等。