一、什么叫端口号
端口号---具有网络功能的应用软件的标识号。注意,端口号是不固定的,即可以由用户手工可以分配(使用通用的端口号,其他用户可以方便的使用,这就是服务器为什么要使用通用端口号的原因)(当然,一般在软件编写时就已经定义)。当然,有很多应用软件有公认的默认的端口,比如FTP:20和21,HTTP:80,TELNET:23等等,这里就不一一列举了。一个软件可以拥有多个端口号,这证明这个软件拥有不止一个网络功能。 0-1023是公认端口号,即已经公认定义或为将要公认定义的软件保留的,而1024-65535是并没有公共定义的端口号,用户可以自己定义这些端口的作用。 那么端口号到底有什么作用呢?请大家继续往下看。 当一台电脑启动了一个可以让远程其他电脑访问的程序,那么它就要开启至少一个端口号来让外界访问。我们可以把没有开启端口号的电脑看作是一个密封的房间,密封的房间当然不可能接受外界的访问,所以当系统开启了一个可以让外界访问的程序后它自然需要在房间上开一个窗口来接受来自外界的访问,这个窗口就是端口。 那么为什么要给端口编号来区分它们呢,既然一个程序开了一个端口,那么不是外部信息都可以通过这个开启的端口来访问了吗?答案是不可以。为什么呢?因为数据是用端口号来通知传输层协议送给哪个软件来处理的,数据是没有智慧的,如果很多的程序共用一个端口来接受数据的话,那么当外界的一个数据包送来后传输层就不知道该送给哪一个软件来处理,这样势必将导致混乱。 上一次提到提到在一个经过OSI第四层传输层封装的数据段的第四层报头里包含两个端口号,既源端口号和目的端口号,目的端口号的作用上面已经介绍了,下面让我们了解一下原端口号吧。 源端口号一般是由系统自己动态生成的一个从1024-65535的号码,当一台计算机A通过网络访问计算机B时,如果它需要对方返回数据的话,它也会随机创建一个大于1023的端口,告诉B返回数据时把数据送到自己的哪个端口,然后软件开始侦听这个端口,等待数据返回。而B收到数据后会读取数据包的源端口号和目的端口号,然后记录下来,当软件创建了要返回的数据后就把原来数据包中的原端口号作为目的端口号,而把自己的端口号作为原端口号,也就是说把收到的数据包中的原和目的反过来,然后再送回A,A再重复这个过程如此反复直到数据传输完成。当数据全部传输完A就把源端口释放出来,所以同一个软件每次传输数据时不一定是同一个源端口号。 |
什么是端口号?
|
--作者:skygunner --发布时间:2005-12-5 21:14:31 -- 比如学校同一个食堂卖菜的管卖菜,卖饮料的管饮料 同一台电脑对外来说只有一个IP,但是一台电脑可以提供各种不同的服务,比如WEB服务,FTP服务,SMTP邮键服务。 |
二、什么是端口
在Internet上,各主机间通过TCP/TP协议发送和接收数据报,各个数据报根据其目的主机的ip地址来进行互联网络中的路由选择。可见,把数据报顺利的传送到目的主机是没有问题的。问题出在哪里呢?我们知道大多数操作系统都支持多程序(进程)同时运行,那么目的主机应该把接收到的数据报传送给众多同时运行的进程中的哪一个呢?显然这个问题有待解决,端口机制便由此被引入进来。
本地操作系统会给那些有需求的进程分配协议端口(protocal port,即我们常说的端口),每个协议端口由一个正整数标识,如:80,139,445,等等。当目的主机接收到数据报后,将根据报文首部的目的端口号,把数据发送到相应端口,而与此端口相对应的那个进程将会领取数据并等待下一组数据的到来。说到这里,端口的概念似乎仍然抽象,那么继续跟我来,别走开。
端口其实就是队,操作系统为各个进程分配了不同的队,数据报按照目的端口被推入相应的队中,等待被进程取用,在极特殊的情况下,这个队也是有可能溢出的,不过操作系统允许各进程指定和调整自己的队的大小。
不光接受数据报的进程需要开启它自己的端口,发送数据报的进程也需要开启端口,这样,数据报中将会标识有源端口,以便接受方能顺利的回传数据报到这个端口。
三 端口的分类
在Internet上,按照协议类型分类,端口被分为TCP端口和UDP端口两类,虽然他们都用正整数标识,但这并不会引起歧义,比如TCP的80端口和UDP的80端口,因为数据报在标明端口的同时,还将标明端口的类型。
从端口的分配来看,端口被分为固定端口和动态端口两大类(一些教程还将极少被用到的高端口划分为第三类:私有端口):
固定端口(0-1023):
使用集中式管理机制,即服从一个管理机构对端口的指派,这个机构负责发布这些指派。由于这些端口紧绑于一些服务,所以我们会经常扫描这些端口来判断对方是否开启了这些服务,如TCP的21(ftp),80(http),139(netbios),UDP的7(echo),69(tftp)等等一些大家熟知的端口;
动态端口(1024-49151):
这些端口并不被固定的捆绑于某一服务,操作系统将这些端口动态的分配给各个进程,同一进程两次分配有可能分配到不同的端口。不过一些应用程序并不愿意使用操作系统分配的动态端口,他们有其自己的‘商标性’端口,如oicq客户端的4000端口,木马冰河的7626端口等都是固定而出名的。
四 端口在入侵中的作用
有人曾经把服务器比作房子,而把端口比作通向不同房间(服务)的门,如果不考虑细节的话,这是一个不错的比喻。入侵者要占领这间房子,势必要破门而入(物理入侵另说),那么对于入侵者来说,了解房子开了几扇门,都是什么样的门,门后面有什么东西就显得至关重要。
入侵者通常会用扫描器对目标主机的端口进行扫描,以确定哪些端口是开放的,从开放的端口,入侵者可以知道目标主机大致提供了哪些服务,进而猜测可能存在的漏洞,因此对端口的扫描可以帮助我们更好的了解目标主机,而对于管理员,扫描本机的开放端口也是做好安全防范的第一步。
五 端口的相关工具
1 netstat -ano
的确,这并不是一个工具,但他是查看自己所开放端口的最方便方法,在cmd中输入这个命令就可以了。如下:
C:/>netstat -an
C:\Users\LFG>netstat -ano
活动连接
协议 本地地址 外部地址 状态 PID
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 4
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 920
TCP 0.0.0.0:443 0.0.0.0:0 LISTENING 3252
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING 4
TCP 0.0.0.0:902 0.0.0.0:0 LISTENING 3128
TCP 0.0.0.0:912 0.0.0.0:0 LISTENING 3128
TCP 0.0.0.0:1025 0.0.0.0:0 LISTENING 600
TCP 0.0.0.0:1026 0.0.0.0:0 LISTENING 984
TCP 0.0.0.0:1027 0.0.0.0:0 LISTENING 1116
TCP 0.0.0.0:1029 0.0.0.0:0 LISTENING 672
TCP 0.0.0.0:1031 0.0.0.0:0 LISTENING 648
TCP 0.0.0.0:1032 0.0.0.0:0 LISTENING 3616
TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING 2072
TCP 0.0.0.0:3389 0.0.0.0:0 LISTENING 1552
TCP 127.0.0.1:8307 0.0.0.0:0 LISTENING 3252
TCP 127.0.0.1:13748 0.0.0.0:0 LISTENING 4092
TCP 127.0.0.1:27018 0.0.0.0:0 LISTENING 2004
TCP 127.0.0.1:50000 0.0.0.0:0 LISTENING 3156
TCP 192.168.4.232:139 0.0.0.0:0 LISTENING 4
TCP 192.168.4.232:1038 180.149.135.176:80 CLOSE_WAIT 2824
TCP 192.168.4.232:1039 219.142.78.243:80 CLOSE_WAIT 2824
TCP 192.168.4.232:1135 58.215.106.54:80 CLOSE_WAIT 5156
TCP 192.168.4.232:1294 110.75.147.112:443 CLOSE_WAIT 2636
TCP 192.168.4.232:1342 74.125.203.125:5222 ESTABLISHED 2432
TCP 192.168.4.232:1537 220.181.75.116:80 CLOSE_WAIT 3156
TCP 192.168.4.232:1945 220.181.76.71:80 CLOSE_WAIT 2940
TCP 192.168.4.232:4149 220.181.76.36:80 CLOSE_WAIT 3156
TCP 192.168.4.232:4216 106.120.151.123:80 CLOSE_WAIT 2432
TCP 192.168.4.232:4237 180.149.156.143:80 CLOSE_WAIT 2888
TCP 192.168.4.232:4238 106.120.151.123:80 CLOSE_WAIT 4364
TCP 192.168.4.232:4305 115.231.82.101:80 CLOSE_WAIT 3156
TCP 192.168.4.232:5159 110.75.131.11:80 CLOSE_WAIT 2104
TCP 192.168.4.232:5420 220.181.76.28:80 CLOSE_WAIT 3156
TCP 192.168.4.232:6472 220.181.76.25:80 CLOSE_WAIT 3156
TCP 192.168.4.232:6473 220.181.76.25:80 CLOSE_WAIT 3156
2 fport.exe和mport.exe
这也是两个命令行下查看本地机器开放端口的小程序,其实与netstat -an这个命令大同小异,只不过它能够显示打开端口的进程,信息更多一些而已,如果你怀疑自己的奇怪端口可能是木马,那就用他们查查吧。
3 activeport.exe(也称aports.exe)
还是用来查看本地机器开放端口的东东,除了具有上面两个程序的全部功能外,他还有两个更吸引人之处:图形界面以及可以关闭端口。这对菜鸟来说是个绝对好用的东西,推荐使用喔。
4 superscan3.0
它的大名你不会没听说过吧,纯端口扫描类软件中的NO.1,速度快而且可以指定扫描的端口,不多说了,绝对必备工具。
六 保护好自己的端口
刚接触网络的朋友一般都对自己的端口很敏感,总怕自己的电脑开放了过多端口,更怕其中就有后门程序的端口,但由于对端口不是很熟悉,所以也没有解决办法,上起网来提心吊胆。其实保护自己的端口并不是那么难,只要做好下面几点就行了:
1) 查看:经常用命令或软件查看本地所开放的端口,看是否有可疑端口;
2) 判断:如果开放端口中有你不熟悉的,应该马上查找端口大全或木马常见端口等资料(网上多的很),看看里面对你那个可疑端口的作用描述,或者通过软件查看开启此端口的进程来进行判断;
3) 关闭:如果真是木马端口或者资料中没有这个端口的描述,那么应该关闭此端口,你可以用防火墙来屏蔽此端口,也可以用本地连接-TCP/IP-高级-选项-TCP/IP筛选,启用筛选机制来筛选端口;
注意:判断时候要慎重,因为一些动态分配的端口也容易引起你多余的怀疑,这类端口一般比较低,且连续。还有,一些狡猾的后门软件,他们会借用80等一些常见端口来进行通信(穿透了防火墙),令人防不胜防,因此不轻易运行陌生程序才是关键。
三、端口大全
在网络技术中,端口的英文是Port,它有有两种解释:
一是物理意义上的端口,比如,ADSL Modem、集线器、交换机、路由器用于连接其他网络设备的接口,如RJ-45端口、SC端口等等。
二是逻辑意义上的端口,一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。我们这里将要介绍的就是逻辑意义上的端口。
端口的分类
逻辑意义上的端口有多种分类标准,下面将介绍两种常见的分类:
1. 按端口号分布划分
(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端口:
(1)TCP端口
TCP端口,即传输控制协议端口,需要在客户端和服务器之间建立连接,这样可以提供可靠的数据传输。常见的包括FTP服务的21端口,Telnet服务的23端口,SMTP服务的25端口,以及HTTP服务的80端口等等。
(2)UDP端口
UDP端口,即用户数据包协议端口,无需在客户端和服务器之间建立连接,安全性得不到保障。常见的有DNS服务的53端口,SNMP(简单网络管理协议)服务的161端口,QQ使用的8000和4000端口等等
怎样去查看(找)端口呢?
提示:本人对Windows系统熟悉点,所以不阐述其它系统了!见谅!
在Windows 2000/XP/Server 2003中要查看端口,可以使用Netstat命令:
依次点击“开始→运行”,键入“cmd”并回车,打开命令提示符窗口。在命令提示符状态下键入“netstat -a -n”,按下回车键后就可以看到以数字形式显示的TCP和UDP连接的端口号及状态(如图)。
QUOTE:
Microsoft Windows [版本 5.2.3790]
(C) 版权所有 1985-2003 Microsoft Corp.
C:Documents and SettingsAdministrator>netstat -a -n
Active Connections
Proto Local Address Foreign Address State
TCP 0.0.0.0:21 0.0.0.0:0 LISTENING
TCP 0.0.0.0:25 0.0.0.0:0 LISTENING
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING
TCP 0.0.0.0:110 0.0.0.0:0 LISTENING
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING
TCP 0.0.0.0:143 0.0.0.0:0 LISTENING
TCP 0.0.0.0:366 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1025 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1026 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1027 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1040 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1045 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1863 0.0.0.0:0 LISTENING
TCP 0.0.0.0:3000 0.0.0.0:0 LISTENING
TCP 0.0.0.0:3004 0.0.0.0:0 LISTENING
TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING
TCP 0.0.0.0:3389 0.0.0.0:0 LISTENING
TCP 0.0.0.0:4449 0.0.0.0:0 LISTENING
TCP 127.0.0.1:3001 0.0.0.0:0 LISTENING
TCP 127.0.0.1:3002 0.0.0.0:0 LISTENING
TCP 127.0.0.1:3003 0.0.0.0:0 LISTENING
TCP 127.0.0.1:3009 127.0.0.1:3306 ESTABLISHED
TCP 127.0.0.1:3306 127.0.0.1:3009 ESTABLISHED
TCP 127.0.0.1:9189 0.0.0.0:0 LISTENING
TCP 127.0.0.1:23883 0.0.0.0:0 LISTENING
TCP 192.168.1.100:80 59.49.233.34:31456 ESTABLISHED
TCP 192.168.1.100:80 61.141.167.189:1177 ESTABLISHED
TCP 192.168.1.100:80 218.56.136.208:5285 ESTABLISHED
TCP 192.168.1.100:80 221.237.165.17:1213 ESTABLISHED
TCP 192.168.1.100:80 222.168.11.186:4422 ESTABLISHED
TCP 192.168.1.100:139 0.0.0.0:0 LISTENING
TCP 192.168.1.100:1038 222.47.205.27:5050 ESTABLISHED
TCP 192.168.1.100:4079 219.136.252.79:80 ESTABLISHED
TCP 192.168.1.100:4604 83.149.119.17:80 CLOSE_WAIT
TCP 192.168.1.100:4605 83.149.119.17:80 CLOSE_WAIT
TCP 192.168.1.100:4691 165.21.32.111:80 FIN_WAIT_1
TCP 192.168.1.100:4694 165.21.32.104:80 FIN_WAIT_1
UDP 0.0.0.0:161 *:*
UDP 0.0.0.0:500 *:*
UDP 0.0.0.0:1028 *:*
UDP 0.0.0.0:1044 *:*
UDP 0.0.0.0:3005 *:*
UDP 0.0.0.0:3010 *:*
UDP 0.0.0.0:3348 *:*
UDP 0.0.0.0:3581 *:*
UDP 0.0.0.0:3956 *:*
UDP 0.0.0.0:3958 *:*
UDP 0.0.0.0:4500 *:*
UDP 0.0.0.0:4714 *:*
UDP 0.0.0.0:27099 *:*
UDP 0.0.0.0:29367 *:*
UDP 0.0.0.0:29368 *:*
UDP 127.0.0.1:123 *:*
UDP 127.0.0.1:1037 *:*
UDP 127.0.0.1:3006 *:*
UDP 127.0.0.1:3363 *:*
UDP 127.0.0.1:3551 *:*
UDP 127.0.0.1:3600 *:*
UDP 127.0.0.1:4321 *:*
UDP 192.168.1.100:123 *:*
UDP 192.168.1.100:137 *:*
UDP 192.168.1.100:138 *:*
UDP 192.168.1.100:17985 *:*
UDP 192.168.1.100:17987 *:*
C:Documents and SettingsAdministrator>
这些,就是你的机器开放和正在使用的端口了!
(上面的具体参数是什么意思,我们后面再讲,这里不讲那么多,免得新手一下接受不了)
不过这个操作命令我还是要解释一下,因为我自己也经常忘记
Netstat命令
命令格式:Netstat -a -e -n -o -s
-a 表示显示所有活动的TCP连接以及计算机监听的TCP和UDP端口。
-e 表示显示以太网发送和接收的字节数、数据包数等。
-n 表示只以数字形式显示所有活动的TCP连接的地址和端口号。
-o 表示显示活动的TCP连接并包括每个连接的进程ID(PID)。
-s 表示按协议显示各种连接的统计信息,包括端口号
netstat命令详解
Displays protocol statistics and current TCP/IP network connections.
NETSTAT [-a] [-e] [-n] [-o] [-s] [-p proto] [-r] [interval]
nbsp;-a nbsp; Displays all connections and listening ports.
-e Displays Ethernet statistics. This may be combined with the -s
option.
-n Displays addresses and port numbers in numerical form.
-o Displays the owning process ID associated with each connection.
-p proto Shows connections for the protocol specified by proto; proto
may be any of: TCP, UDP, TCPv6, or UDPv6. If used with the -s
option to display per-protocol statistics, proto may be any of:
IP, IPv6, ICMP, ICMPv6, TCP, TCPv6, UDP, or UDPv6.
-r Displays the routing table.
-s Displays per-protocol statistics. By default, statistics are
shown for IP, IPv6, ICMP, ICMPv6, TCP, TCPv6, UDP, and UDPv6;
the -p option may be used to specify a subset of the default.
interval Redisplays selected statistics, pausing interval seconds
between each display. Press CTRL+C to stop redisplaying
statistics. If omitted, netstat will print the current
configuration information once.
基本是这样了。
好了,基本上,你应该有些端口的概念了!接下来,让我们再来了解,什么叫《端口映射》
1-为什么要映射:如果你是ADSL、CABLE MODEM或光纤等宽带接入用户,想在网吧或公司内部建一个游戏服务器或WEB服务器,并且能够让互联网上的用户访问你的服务器,那么你就会遇到端口映射问题。 (举个简单例子:你爸上学校找你,来到学校大门却不知道你在哪个教室,这时候值班老师就带你爸爸来到你的教室---->这个过程就如同“端口映射”)
2-怎样去映射:通常情况下,路由器都有防火墙功能,互联网用户只能访问到你的路由器WAN口(接ADSL线口),而访问不到内部服务器。要想让外面用户访问到服务器,那么你就要在路由器上做一个转发设置,也就是端口映射设置,让用户的请求到了路由器后,并能够到达游戏服务器或WEB服务器。这就是端口映射。
目前,所有的宽带路由器都有端口映射功能,只是各个路由器厂商所取功能名称不一样,有的叫虚拟服务器,有的叫NAT设置。。。
端口映射设置很简单,例如要映射一台IP地址为192.168.1.254的WEB服务器,只需把服务器的IP地址192.168.1.254和TCP端口80填入到路由器的端口映射表中就OK了,当然不同的服务有不同的端口,新手切勿乱改端口,避免造成冲突,这样的冲突故障一般情况下你是找不到原因的!
3-射完后,如何检测:举个例子:WEB服务器应该是80端口映射,这时候,先放一个名为index.htm的静态页面,然后用你的ip或者域名输入到地址栏,回车,看看是否能正常访问!