如果把IP地址比作一间房子 ,
端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的
端口可以有65536(即:2^16)个之多!端口是通过
端口号来标记的,端口号只有
整数,范围是从0 到65535(2^16-1)。
在Internet上,各
主机间通过TCP/IP协议发送和接收
数据包,各个数据包根据其目的主机的ip地址来进行互联网络中的
路由选择。可见,把数据包顺利的传送到目的主机是没有问题的。问题出在哪里呢?我们知道大多数
操作系统都支持多
程序(进程)同时运行,那么目的主机应该把接收到的数据包传送给众多同时运行的进程中的哪一个呢?显然这个问题有待解决,
端口机制便由此被引入进来。
本地
操作系统会给那些有需求的进程分配协议
端口(protocol port,即我们常说的端口),每个协议端口由一个正
整数标识,如:80,139,445,等等。当目的主机接收到数据包后,将根据
报文首部的目的
端口号,把数据发送到相应端口,而与此端口相对应的那个进程将会领取数据并等待下一组数据的到来。说到这里,
端口的概念似乎仍然抽象,那么继续跟我来,别走开。
不光接受数据包的进程需要开启它自己的
端口,发送数据包的进程也需要开启端口,这样,数据包中将会标识有源端口,以便接受方能顺利地回传数据包到这个端口。
端口详解
在开始讲什么是
端口之前,我们先来聊一聊什么是 port 呢?常常在网络上听说,我的主机开了多少的 port ,会不会被入侵呀!?或者是说,开哪个 port 会比较安全?又或者说,我的服务应该对应什么 port 呀?呵呵!很神奇吧!怎么一部主机上面有这么多的奇怪的 port 呢?这个 port 有什么作用呢?
由于每种网络的服务功能都不相同,因此有必要将不同的
封包送给不同的服务来处理,所以啰,当你的主机同时开启了
FTP与
WWW服务的时候,那么别人送来的资料封包,就会依照 TCP 上面的 port 号码来给 FTP 这个服务或者是 WWW 这个服务来处理,当然就不会搞乱啰!(注:嘿嘿!有些很少接触到网络的朋友,常常会问说:咦!为什么你的
计算机同时有 FTP、WWW、
E-Mail这么多服务,但是人家传资料过来,你的计算机怎么知道如何判断?计算机真的都不会误判吗?!现在知道为什么了吗?!对啦!就是因为 port 不同嘛!你可以这样想啦,有一天,你要去银行存钱,那个银行就可以想成是主机,然后,银行当然不可能只有一种业务,里头就有相当多的窗口,那么你一进大门的时候,在门口的服务人员就会问你说:"嗨!你好呀!你要做些什么事?"你跟他说:"我要存钱呀!",服务员接着就会告诉你:喝!那么请前往三号窗口!那边的人员会帮您服务!这个时候你总该不会往其它的窗口跑吧?! ""这些窗口就可以想成是port 啰!所以啦!每一种服务都有特定的 port 在监听!您无须担心计算机会误判的问题呦! )
· 每一个 TCP 连接都必须由一端(通常为 client )发起请求,这个 port 通常是随机选择大于 1024 以上(因为0-1023一般被用作知名服务器的端口,被预定,如FTP、HTTP、SMTP等)的 port 号来进行!其 TCP
封包会将(且只将) SYN
旗标设定起来!这是整个联机的第一个封包;
· 如果另一端(通常为 Server ) 接受这个请求的话(当然啰,特殊的服务需要以特殊的 port 来进行,例如 FTP 的 port 21 ),则会向请求端送回整个联机的第二个
封包!其上除了 SYN
旗标之外同时还将 ACK 旗标也设定起来,并同时在本机端建立资源以待联机之需;
· 只有当
服务端收到请求端的确认( ACK )
封包(也就是整个联机的第三个封包)之后,两端的联机才能正式建立。这就是所谓的 TCP 联机的'
三次握手( Three-Way Handshake )'的原理。
经过三向交握之后,呵呵!你的 client 端的 port 通常是高于 1024 的随机取得的 port,至于主机端则视当时的服务是开启哪一个 port 而定,例如 WWW 选择 80 而 FTP 则以 21 为正常的联机信道!
总而言之,我们这里所说的
端口,不是计算机
硬件的
I/O端口,而是
软件形式上的概念。根据提供
服务类型的不同,
端口分为两种,一种是
TCP端口,一种是UDP端口。计算机之间相互通信的时候,分为两种方式:一种是发送信息以后,可以确认信息是否到达,也就是有应答的方式,这种方式大多采用TCP协议;一种是发送以后就不管了,不去确认信息是否到达,这种方式大多采用
UDP协议。对应这两种协议的服务提供的
端口,也就分为TCP端口和UDP端口。
那么,如果攻击者使用
软件扫描目标计算机,得到目标计算机打开的
端口,也就了解了目标计算机提供了哪些服务。我们都知道,提供服务就一定有服务
软件的漏洞,根据这些,攻击者可以达到对目标计算机的初步了解。如果计算机的
端口打开太多,而管理者不知道,那么,有两种情况:一种是提供了服务而管理者没有注意,比如安装IIS的时候,
软件就会自动增加很多服务,而
管理员可能没有注意到;一种是服务器被攻击者安装
木马,通过特殊的端口进行通信。这两种情况都是很危险的,说到底,就是管理员不了解服务器提供的服务,减小了系统安全系数。
保护端口
刚接触网络的朋友一般都对自己的
端口很敏感,总怕自己的电脑开放了过多端口,更怕其中就有
后门程序的
端口,但由于对端口不是很熟悉,所以也没有解决办法,上起网来提心吊胆。其实保护自己的
端口并不是那么难,只要做好下面几点就行了:
注意:判断时候要慎重,因为一些动态分配的
端口也容易引起你多余的怀疑,这类端口一般比较低,且连续。还有,一些狡猾的后门
软件,他们会借用80等一些常见
端口来进行通信(穿透了防火墙),令人防不胜防,因此不轻易运行陌生程序才是关键。
怎样查看
端口
1.用“netstat /an”查看
端口状态
2.用第三方
端口扫描软件
第三方
端口扫描
软件有许多,界面虽然千差万别,但是功能却是类似 的。这里以“Fport” 为例讲解。“Fport”在
命令提示符下使用,运行
结果与“netstat -an”相似,但是它不仅能够列出正在使用的
端口号及类型,还可以列出端口被哪个应用程序使用。