- 黑客攻防从入门到精通(实战秘笈版)
- 九天科技
- 1367字
- 2021-04-01 17:52:10
1.3.2 使用命令查看系统的开放端口
通过了解系统开放端口的状态变化,可以帮助我们更好地保护系统,防范黑客入侵,保证电脑安全。可以使用netstat命令查看自己系统端口的状态,了解系统当前开放了哪些端口。
使用netstat命令查看系统端口的具体操作方法如下:
01 选择“运行”命令 右击“开始”按钮,选择“运行”命令,如下图所示。
02 执行cmd命令 弹出“运行”对话框,输入cmd命令,单击“确定”按钮,如下图所示。
03 输入netstat命令 打开命令提示符窗口,输入netstat -a -n命令,并按【Enter】键确认,如下图所示。
04 查看结果 此时即可显示本地及远程的IP地址和相应的端口号,以及TCP协议连接状态,如下图所示。
TCP协议规定,对于已经建立的连接,网络双方要进行四次握手才能成功断开连接,如果缺少了其中某个步骤,将会使连接处于假死状态,连接本身占用的资源不会被释放。网络服务器程序要同时管理大量连接,所以很有必要保证无用连接完全断开,否则大量僵死的连接会浪费许多服务器资源。了解TCP协议端口的连接状态,对排除和定位网络或系统故障会有很大帮助,下面对TCP端口的连接状态进行简单介绍。
1.LISTENING
提供某种服务,首先处于侦听(LISTENING)状态。当提供的服务没有被连接时,处于LISTENING状态,端口是开放的,等待被连接。
2.SYN_SENT(客户端状态)
SYN_SENT状态表示请求连接,当要访问其他电脑的服务时首先要发个同步信号给该端口,此时状态为SYN_SENT,如果连接成功了就变为ESTABLISHED,此时SYN_SENT状态非常短暂。但如果发现SYN_SENT非常多且在向不同的机器发出,那电脑可能中了冲击波或震荡波之类的病毒了。这类病毒为了感染其他电脑,会扫描其他电脑,在扫描的过程中会对每个要扫描的电脑发出同步请求,这也是出现许多SYN_SENT的原因。
3.SYN_RCVD(服务器端状态)
在收到和发送一个连接请求后,等待服务器端对连接请求的确认,当服务器收到客户端发送的同步信号时,将标志位ACK和SYN置1发送给客户端,此时服务器端处于SYN_RCVD状态,如果连接成功了就变为ESTABLISHED,正常情况下SYN_RCVD状态非常短暂。
4.ESTABLISHED
ESTABLISHED状态是表示两台电脑正在传输数据。
5.FIN-WAIT-1
等待远程TCP连接中断请求,或先前的连接中断请求的确认,客户端应用程序调用close,TCP发出FIN请求主动关闭连接,之后进入FIN_WAIT1状态。
6.FIN-WAIT-2
从远程TCP等待连接中断请求,客户端接到ACK后,进入了FIN-WAIT-2。这时在关闭连接时,客户端和服务器两次握手之后的状态,就是半关闭的状态了。在这个状态下,应用程序可以接收数据,但无法发送数据。
7.CLOSE-WAIT
服务器端主动关闭连接或者网络异常导致连接中断,这时客户端状态会变成CLOSE_WAIT,此时客户端调用close()函数,使连接正确关闭。
8.CLOSING
等待远程TCP对连接中断的确认,此状态较少见。
9.LAST-ACK
等待原来发向远程TCP的连接中断请求的确认,被动关闭一段时间后,接收到文件结束符的应用程序将调用CLOSE关闭连接,TCP也发送一个FIN,等待对方的ACK,进入LAST-ACK。
10.TIME-WAIT
客户端调用close()函数,给服务器端发送FIN,请求关闭连接;服务器端收到FIN后给Client返回确认ACK,同时关闭读通道,此时不能再从这个连接上读取数据,read返回0。服务器端的TCP状态转化为CLOSE_WAIT状态。TCP协议规定TIME_WAIT状态会一直持续2MSL(即两倍的分段最大生存期,默认为4分钟),以此来确保旧的连接状态不会对新连接产生影响。处于TIME_WAIT状态的连接占用的资源不会被内核释放,所以作为服务器,在可能的情况下尽量不要主动断开连接,以减少TIME_WAIT状态造成的资源浪费。
11.CLOSED
服务器端接收到Client对自己的FIN的确ACK,关闭写通道,TCP连接转化为CLOSED,也就是关闭连接。如右图所示为TCP在正常情况下建立与终止连接所对应的状态。