文档详情

解决连接数过多和半开攻击.docx

发布:2017-06-10约5.41千字共8页下载文档
文本预览下载声明
解决TCP连接数过多的问题TCP状态迁移,CLOSE_WAIT FIN_WAIT2 的问题TCP状态迁移对netstat -a命令很熟悉,但是,你有没有注意到STATE一栏呢,基本上显示着established,time_wait,close_wait等大家很明白TCP初始化连接三次握手吧:发SYN包,然后返回SYN/ACK包,再发ACK包,连接正式建立。但是这里有点出入,当请求者收到SYS /ACK包后,就开始建立连接了,而被请求者第三次握手结束后才建立连接。但是大家明白关闭连接的工作原理吗?关闭连接要四次握手:发FIN包,ACK 包,FIN包,ACK包,四次握手!!为什么呢,因为TCP连接是全双工,我关了你的连接,并不等于你关了我的连接。客户端TCP状态迁移:CLOSED-SYN_SENT-ESTABLISHED-FIN_WAIT_1-FIN_WAIT_2-TIME_WAIT-CLOSED服务器TCP状态迁移:CLOSED-LISTEN-SYN收到 -ESTABLISHED-CLOSE_WAIT-LAST_ACK-CLOSED当客户端开始连接时,服务器还处于LISTENING,客户端发一个SYN包后,他就处于SYN_SENT状态,服务器就处于SYS收到状态,然后互相确认进入连接状态ESTABLISHED.当客户端请求关闭连接时,客户端发送一个FIN包后,客户端就进入FIN_WAIT_1状态,等待对方的确认包,服务器发送一个ACK包给客户,客户端收到ACK包后结束FIN_WAIT_1状态,进入FIN_WAIT_2状态,等待服务器发过来的关闭请求,服务器发一个FIN包后,进入CLOSE_WAIT状态,当客户端收到服务器的FIN包,FIN_WAIT_2状态就结束,然后给服务器端的FIN包给以一个确认包,客户端这时进入TIME_WAIT,当服务器收到确认包后,CLOSE_WAIT状态结束了,这时候服务器端真正的关闭了连接.但是客户端还在TIME_WAIT状态下,什么时候结束呢.我在这里再讲到一个新名词:2MSL等待状态,其实TIME_WAIT就是2MSL等待状态,为什么要设置这个状态,原因是有足够的时间让ACK包到达服务器端,如果服务器端没收到ACK包,超时了,然后重新发一个FIN包,直到服务器收到ACK 包.TIME_WAIT状态等待时间是在TCP重新启动后不连接任何请求的两倍.大家有没有发现一个问题:如果对方在第三次握手的时候出问题,如发FIN包的时候,不知道什么原因丢了这个包,然而这边一直处在FIN_WAIT_2状 态,而且TCP/IP并没有设置这个状态的过期时间,那他一直会保留这个状态下去,越来越多的FIN_WAIT_2状态会导致系统崩溃.上面我碰到的这个问题主要因为TCP的结束流程未走完,造成连接未释放。现设客户端主动断开连接,流程如下?如上图所示,Client ? ? ? ? ? ? ? ? ? ? ? ? ? ?消息 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Server? ? ? ? ?close()------ FIN -------FIN_WAIT1 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? CLOSE_WAIT----- ACK -------FIN_WAIT2?close()------ FIN ------ ? ? ? ? ? ? ? ? ? ??TIME_WAIT ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? LAST_ACK ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ------ ACK -------?CLOSEDCLOSED由于Server的Socket在客户端已经关闭时而没有调用关闭,造成服务器端的连接处在“挂起”状态,而客户端则处在等待应答的状态上。此问题的典型特征是:一端处于FIN_WAIT2 ,而另一端处于CLOSE_WAIT.不过,根本问题还是程序写的不好,有待提高-------------------------------------------------------------------------CLOSE_WAIT,TCP的癌症,TCP的朋友。CLOSE_WAIT状态的生成原因首先我们知道,如果我们的服务器程序APACHE处于CLOSE_WAIT状态的话,说明套接字是被动关闭的!因为如果是CLIENT端主动断掉当前连接的话,那么双方关闭这个TCP连接共需要四个packet:Client --- FIN --- ServerClient --- ACK --- Server
显示全部
相似文档