一、摘要
计算机 "端口" 是英文 port ,可以认为是计算机与外界通讯交流的出口。
- 其中硬件领域的 端口 又称 接口,如:USB端口、串行端口等。
- 软件领域的 端口 一般指网络中面向连接服务和无连接服务的通信协议端口,是一种抽象的软件结构,包括一些 数据结构 和 I/O(基本输入输出)缓冲区。
面向连接 和 无连接 协议(Connection-Oriented and Connectionless Protocols)
- 面向连接服务的主要特点有:面向连接服务要经过三个阶段:数据传数前,先建立连接,连接建立后再传输数据,数据传送完后,释放连接。面向连接服务,可确保数据传送的次序和传输的可靠性。
- 无连接服务的特点是:无连接服务只有传输数据阶段。消除了除数据通信外的其它开销。只要发送实体是活跃的,无须接收实体也是活跃的。它的优点是灵活方便、迅速,特别适合于传送少量零星的报文,但无连接服务不能防止报文的丢失、重复或失序。
区分 "面向连接服务" 和 "无连接服务" 的概念很简单,形象的例子是:打电话和写信。
- 面向连接就相当于打电话:两个人如果要通电话,必须先建立连接(即拨号),等待应答后才能相互传递信息,最后还要释放连接(即挂电话)。
- 无连接服务就相当于写信:写信就没有那么复杂了,地址姓名填好以后直接往邮筒一扔,收信人就能收到。
二、什么是端口
在 Internet 上,各主机间通过 TCP/TP 协议 发送和接收 数据报,各个数据报 根据其 目的主机的 IP 地址 来进行互联网络中的路由选择,但是现在操作系统都支持 多程序(进程) 同时运行,那么目的主机应该把接收到的数据报传送给这些同时运行的进程中的哪一个呢?显然这个问题有待解决,端口机制便由此被引入进来。
本地操作系统会给那些有需求的进程分配协议端口 ( protocal port,即我们常说的端口 ),每个协议端口由一个正整数标识,如:80,139,445,等等。当目的主机接收到数据报后,将根据报文首部的目的端口号,把数据发送到相应端口,而与此端口相对应的那个进程将会领取数据并等待下一组数据的到来。
端口 是网络应用中很重要的东西,相当于 "门" 了。
接受数据报的进程需要开启它自己的端口,
发送数据报的进程也需要开启端口,
这样,数据报中将会标识有源端口,以便接受方能顺利的回传数据报到这个端口。
应用程序(调入内存运行后一般称为:进程)通过系统调用与某端口建立连接(binding,绑定)后,传输层传给该端口的数据都被相应的进程所接收,相应进程发给传输层的数据都从该端口输出。在 TCP/IP 协议的实现中,端口操作类似于一般的 I/O 操作,进程获取一个端口,相当于获取本地唯一的I/O文件,可以用一般的读写方式访问。
Linux 中类似于文件描述符,每个端口都拥有一个叫做端口号的整数描述符,用来区别不同的端口。
由于 TCP/IP 传输层的 TCP 和 UDP 两个协议是两个完全独立的软件模块,因此各自的端口号也相互独立。
如 TCP有一个 255 号端口,UDP 也可以有一个 255 号端口,两者并不冲突。
三、端口的分类
在 Internet 上,按照协议类型分类,端口 被分为 TCP端口 和 UDP端口 两类,虽然他们都用正整数标识,但这并不会引起歧义。
比如:TCP的80端口 和 UDP的80端口,因为数据报在标明端口的同时,还将标明端口的类型,所以不会发生冲突。
端口号有两种基本分配方式:
- 全局分配:这是一种集中分配方式,由一个公认权威的中央机构根据用户需要进行统一分配,并将结果公布于众,
- 本地分配:又称动态连接,即进程需要访问传输层服务时,向本地操作系统提出申请,操作系统返回本地唯一的端口号,进程再通过合适的系统调用,将自己和该端口连接起来(binding,绑定)。
TCP/IP 端口号的分配综合了以上两种方式,将端口号分为两部分,
- 少量的作为保留端口,以全局方式分配给服务进程。每一个标准服务器都拥有一个全局公认的端口叫周知口,即使在不同的机器上,其端口号也相同。
- 剩余的为自由端口,以本地方式进行分配。TCP和UDP规定,小于256的端口才能作为保留端口。
从端口的分配来看,端口被分为 固定端口 和 动态端口 两大类( 一些教程还将极少被用到的高端口划分为第三类:私有端口):
- 固定端口(0-1023):使用集中式管理机制,即服从一个管理机构对端口的指派,这个机构负责发布这些指派。通常这些端口的通讯明确表明了某种服务的协议。例如:80端口实际上总是HTTP通讯。 所以可以扫描这些端口来判断对方是否开启了这些服务,如TCP的21(ftp),80(http),139(netbios),UDP的7(echo),69(tftp)等等一些大家熟 知的端口。
- 动态端口(1024-49151):这些端口并不被固定捆绑某一服务,操作系统将这些端口动态的分配给各个进程, 同一进程两次分配有可能分配到不同的端口。不过一些应用程序并不愿意使用操作系统分配的动态端口,他们有其自己的 "商标性" 端口,比如:oicq 客户端的 4000 端口,木马冰河的7626端口等都是固定而出名的。
- 私有端口(Dynamic and/or Private Ports):从 49152 到 65535。理论上,不应为服务分配这些端口。实际上,机器通常从1024起分配动态端口。但也有例外:SUN的RPC端口从32768开始。
系统管理员可以 "重定向" 端口:
- 把一个端口重定向到另一个端口。例如:默认的 HTTP 端口是 80,可以重定向到 8080。访问 http://www.127.0.0.1:8080/ 就是访问 http://www.127.0.0.1:80/
实现重定向是为了隐藏公认的默认端口,降低受破坏率。
- 如果要对一个公认的默认端口进行攻击,则必须先进行端口扫描。大多数端口重定向与原端口有相似之处,例如:多数 HTTP端口由80变化而来:81,88,8000,8080,8888。同样 POP 的端口原来在110,也常被重定向到 1100。也有不少情况是选取统计上有特别意义的数,象1234,23456,34567等。许多人有其它原因选择奇怪的数,42,69,666,31337。近来,越来越多的远程控制木马( Remote Access Trojans, RATs )采用相同的默认端口。如NetBus的默认端口是12345。Blake R. Swopes 指出使用重定向端口还有一个原因,在 UNIX 系统上,如果你想侦听 1024 以下的端口需要有 root 权限。如果你没有 root 权限而又想开 web 服务,你就需要将其安装在较高的端口。此外,一些 ISP 的防火墙将阻挡低端口的通讯,这样的话即使你拥有整个机器你还是得重定向端口。
四、端口在入侵中的作用
如果把 服务器 比作 房子,那么 端口 可以看作是通向不同房间(服务)的 门,如果不考虑细节的话,这是一个不错的比喻。
入侵者要占领这间房子,势必要破门而入(物理入侵另说),那么对于入侵者来说,了解房子开了几扇门,都是什么样的门,门后面有什么东西就显得至关重要。
入侵者通常会用 扫描器 对目标主机的 端口 进行扫描,以确定哪些端口是开放的,从开放的端口,入侵者可以知道目标主机大致提供了哪些服务,进而猜测可能存在的漏洞。
因此对端口的扫描可以帮助我们更好的了解目标主机,而对于管理员,扫描本机的开放端口也是做好安全防范的第一步。
五、端口的相关工具
netstat -an
查看自己所开放端口的最方便方法,在 cmd 中输入这个命令就可以了。如下:
C:/>netstat -anActive ConnectionsProto Local Address Foreign Address StateTCP 0.0.0.0:135 0.0.0.0:0 LISTENINGTCP 0.0.0.0:445 0.0.0.0:0 LISTENINGTCP 0.0.0.0:1025 0.0.0.0:0 LISTENINGTCP 0.0.0.0:1026 0.0.0.0:0 LISTENINGTCP 0.0.0.0:1028 0.0.0.0:0 LISTENINGTCP 0.0.0.0:3372 0.0.0.0:0 LISTENINGUDP 0.0.0.0:135 *:*UDP 0.0.0.0:445 *:*UDP 0.0.0.0:1027 *:*UDP 127.0.0.1:1029 *:*UDP 127.0.0.1:1030 *:*这是我没上网的时候机器所开的端口,两个135和445是固定端口,其余几个都是动态端口。
fport.exe 和 mport.exe
:https://blog.csdn.net/csdnww1130/article/details/100321956
这也是两个命令行下查看本地机器开放端口的小程序,其实与 netstat -an 这个命令大同小异,只不过它能够显示打开端口的进程,信息更多一些而已,如果你怀疑自己的奇怪端口可能是木马,那就用他们查查吧。
activeport.exe(也称aports.exe)
还是用来查看本地机器开放端口的东东,除了具有上面两个程序的全部功能外,他还有两个更吸引人之处:图形界面以及可以关闭端口。这对菜鸟来说是个绝对好用的东西,推荐使用喔。
superscan
纯端口扫描类软件中的 NO.1,速度快而且可以指定扫描的端口,不多说了,绝对必备工具。
六、保护好自己的端口
刚接触网络的朋友一般都对自己的端口很敏感,总怕自己的电脑开放了过多端口,更怕其中就有后门程序的端口,但由于对端口不是很熟悉,所以也没有解决办法,上起网来提心吊胆。其实保护自己的端口并不是那么难,只要做好下面几点就行了:
- 1) 查看:经常用命令或软件查看本地所开放的端口,看是否有可疑端口;
- 2) 判断:如果开放端口中有你不熟悉的,应该马上查找端口大全或木马常见端口等资料(网上多的很),看看里面对你那个可疑端口的作用描述,或者通过软件查看开启此端口的进程来进行判断;
- 3) 关闭:如果真是木马端口或者资料中没有这个端口的描述,那么应该关闭此端口,你可以用防火墙来屏蔽此端口,也可以用本地连接-TCP/IP-高级-选项-TCP/IP筛选,启用筛选机制来筛选端口;
注意:判断时候要慎重,因为一些动态分配的端口也容易引起你多余的怀疑,这类端口一般比较低,且连续。还有,一些狡猾的后门软件,他们会借用 80 等一些常见端口来进行通信(穿透了防火墙),令人防不胜防,因此不轻易运行陌生程序才是关键。
七、常见端口表汇总
1 tcpmux TCP Port Service Multiplexer 传输控制协议端口服务多路开关选择器
2 compressnet Management Utility compressnet 管理实用程序
3 compressnet Compression Process 压缩进程
5 rje Remote Job Entry 远程作业登录
7 echo Echo 回显
9 discard Discard 丢弃
11 systat Active Users 在线用户
13 daytime Daytime 时间
17 qotd Quote of the Day 每日引用
18 msp Message Send Protocol 消息发送协议
19 chargen Character Generator 字符发生器
20 ftp-data File Transfer [Default Data] 文件传输协议(默认数据口)
21 ftp File Transfer [Control] 文件传输协议(控制)
22 ssh SSH Remote Login Protocol SSH远程登录协议
23 telnet Telnet 终端仿真协议
24 ? any private mail system 预留给个人用邮件系统
25 smtp Simple Mail Transfer 简单邮件发送协议
27 nsw-fe NSW User System FE NSW 用户系统现场工程师
29 msg-icp MSG ICP MSG ICP
31 msg-auth MSG Authentication MSG验证
33 dsp Display Support Protocol 显示支持协议
35 ? any private printer server 预留给个人打印机服务
37 time Time 时间
38 rap Route Access Protocol 路由访问协议
39 rlp Resource Location Protocol 资源定位协议
41 graphics Graphics 图形
42 nameserver WINS Host Name Server WINS 主机名服务
43 nicname Who Is "绰号" who is服务
44 mpm-flags MPM FLAGS Protocol MPM(消息处理模块)标志协议
45 mpm Message Processing Module [recv] 消息处理模块
46 mpm-snd MPM [default send] 消息处理模块(默认发送口)
47 ni-ftp NI FTP NI FTP
48 auditd Digital Audit Daemon 数码音频后台服务
49 tacacs Login Host Protocol (TACACS) TACACS登录主机协议
50 re-mail-ck Remote Mail Checking Protocol 远程邮件检查协议
51 la-maint IMP Logical Address Maintenance IMP(接口信息处理机)逻辑地址维护
52 xns-time XNS Time Protocol 施乐网络服务系统时间协议
53 domain Domain Name Server 域名服务器
54 xns-ch XNS Clearinghouse 施乐网络服务系统票据交换
55 isi-gl ISI Graphics Language ISI图形语言
56 xns-auth XNS Authentication 施乐网络服务系统验证
57 ? any private terminal access 预留个人用终端访问
58 xns-mail XNS Mail 施乐网络服务系统邮件
59 ? any private file service 预留个人文件服务
60 ? Unassigned 未定义
61 ni-mail NI MAIL NI邮件?
62 acas ACA Services 异步通讯适配器服务
63 whois+ whois+ WHOIS+
64 covia Communications Integrator (CI) 通讯接口
65 tacacs-ds TACACS-Database Service TACACS数据库服务
66 sql*net Oracle SQL*NET Oracle SQL*NET
67 bootps Bootstrap Protocol Server 引导程序协议服务端
68 bootpc Bootstrap Protocol Client 引导程序协议客户端
69 tftp Trivial File Transfer 小型文件传输协议
70 gopher Gopher 信息检索协议
71 netrjs-1 Remote Job Service 远程作业服务
72 netrjs-2 Remote Job Service 远程作业服务
73 netrjs-3 Remote Job Service 远程作业服务
74 netrjs-4 Remote Job Service 远程作业服务
75 ? any private dial out service 预留给个人拨出服务
76 deos Distributed External Object Store 分布式外部对象存储
77 ? any private RJE service 预留给个人远程作业输入服务
78 vettcp vettcp 修正TCP?
79 finger Finger FINGER(查询远程主机在线用户等信息)
80 http World Wide Web HTTP 全球信息网超文本传输协议
81 hosts2-ns HOSTS2 Name Server HOST2名称服务
82 xfer XFER Utility 传输实用程序
83 mit-ml-dev MIT ML Device 模块化智能终端ML设备
84 ctf Common Trace Facility 公用追踪设备
85 mit-ml-dev MIT ML Device 模块化智能终端ML设备
86 mfcobol Micro Focus Cobol Micro Focus Cobol编程语言
87 ? any private terminal link 预留给个人终端连接
88 kerberos Kerberos Kerberros安全认证系统
89 su-mit-tg SU/MIT Telnet Gateway SU/MIT终端仿真网关
90 dnsix DNSIX Securit Attribute Token Map DNSIX 安全属性标记图
91 mit-dov MIT Dover Spooler MIT Dover假脱机
92 npp Network Printing Protocol 网络打印协议
93 dcp Device Control Protocol 设备控制协议
94 objcall Tivoli Object Dispatcher Tivoli对象调度
95 supdup SUPDUP
96 dixie DIXIE Protocol Specification DIXIE协议规范
97 Swift-rvf Swift Remote Virtural File Protocol 快速远程虚拟文件协议
98 tacnews TAC News TAC(东京大学自动计算机?)新闻协议
99 metagram Metagram Relay
101/tcp hostname NIC Host Name Server
102/tcp iso-tsap ISO-TSAP Class 0
103/tcp gppitnp Genesis Point-to-Point Trans Net
104/tcp acr-nema ACR-NEMA Digital Imag. & Comm. 300
105/tcp cso CCSO name server protocol
105/tcp csnet-ns Mailbox Name Nameserver
106/tcp 3com-tsmux 3COM-TSMUX
107/tcp rtelnet Remote Telnet Service
108/tcp snagas SNA Gateway Access Server
109/tcp pop2 Post Office Protocol - Version 2
110/tcp pop3 Post Office Protocol - Version 3
111/tcp sunrpc SUN Remote Procedure Call
112/tcp mcidas McIDAS Data Transmission Protocol
113/tcp ident
114/tcp audionews Audio News Multicast
115/tcp sftp Simple File Transfer Protocol
116/tcp ansanotify ANSA REX Notify
117/tcp uucp-path UUCP Path Service
118/tcp sqlserv SQL Services
119/tcp nntp Network News Transfer Protocol
120/tcp cfdptkt CFDPTKT
121/tcp erpc Encore Expedited Remote Pro.Call
122/tcp smakynet SMAKYNET
123/tcp ntp Network Time Protocol
124/tcp ansatrader ANSA REX Trader
125/tcp locus-map Locus PC-Interface Net Map Ser
126/tcp unitary Unisys Unitary Login
127/tcp locus-con Locus PC-Interface Conn Server
128/tcp gss-xlicen GSS X License Verification
129/tcp pwdgen Password Generator Protocol
130/t