计算机端口详解

一、摘要

计算机 "端口" 是英文 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值