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

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

ID:8854212

大小:34.84 KB

页数:8页

时间:2018-04-09

解决连接数过多和半开攻击_第1页
解决连接数过多和半开攻击_第2页
解决连接数过多和半开攻击_第3页
解决连接数过多和半开攻击_第4页
解决连接数过多和半开攻击_第5页
资源描述:

《解决连接数过多和半开攻击》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、目录解决TCP连接数过多的问题1解决方法:4解决半开攻击的方法5解决方法:8解决TCP连接数过多的问题TCP状态迁移,CLOSE_WAIT&FIN_WAIT2的问题TCP状态迁移对netstat-a命令很熟悉,但是,你有没有注意到STATE一栏呢,基本上显示着established,time_wait,close_wait等大家很明白TCP初始化连接三次握手吧:发SYN包,然后返回SYN/ACK包,再发ACK包,连接正式建立。但是这里有点出入,当请求者收到SYS/ACK包后,就开始建立连接了,而被请求者第三次握手结束后才建立连接。但是大家明白关闭连接的工作原理吗?关闭连接要四次握

2、手:发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收到状态,然后

3、互相确认进入连接状态ESTABLISHED.8当客户端请求关闭连接时,客户端发送一个FIN包后,客户端就进入FIN_WAIT_1状态,等待对方的确认包,服务器发送一个ACK包给客户,客户端收到ACK包后结束FIN_WAIT_1状态,进入FIN_WAIT_2状态,等待服务器发过来的关闭请求,服务器发一个FIN包后,进入CLOSE_WAIT状态,当客户端收到服务器的FIN包,FIN_WAIT_2状态就结束,然后给服务器端的FIN包给以一个确认包,客户端这时进入TIME_WAIT,当服务器收到确认包后,CLOSE_WAIT状态结束了,这时候服务器端真正的关闭了连接.但是客户端还在TIM

4、E_WAIT状态下,什么时候结束呢.我在这里再讲到一个新名词:2MSL等待状态,其实TIME_WAIT就是2MSL等待状态,为什么要设置这个状态,原因是有足够的时间让ACK包到达服务器端,如果服务器端没收到ACK包,超时了,然后重新发一个FIN包,直到服务器收到ACK包.TIME_WAIT状态等待时间是在TCP重新启动后不连接任何请求的两倍.大家有没有发现一个问题:如果对方在第三次握手的时候出问题,如发FIN包的时候,不知道什么原因丢了这个包,然而这边一直处在FIN_WAIT_2状态,而且TCP/IP并没有设置这个状态的过期时间,那他一直会保留这个状态下去,越来越多的FIN_WA

5、IT_2状态会导致系统崩溃.上面我碰到的这个问题主要因为TCP的结束流程未走完,造成连接未释放。现设客户端主动断开连接,流程如下 如上图所示,Client              消息                  Server     close()------FIN------->FIN_WAIT1                            CLOSE_WAIT<-----ACK-------FIN_WAIT2 close()<------FIN------           8TIME_WAIT                           LAS

6、T_ACK                      ------ACK-------> CLOSEDCLOSED由于Server的Socket在客户端已经关闭时而没有调用关闭,造成服务器端的连接处在“挂起”状态,而客户端则处在等待应答的状态上。此问题的典型特征是:一端处于FIN_WAIT2,而另一端处于CLOSE_WAIT.不过,根本问题还是程序写的不好,有待提高-------------------------------------------------------------------------CLOSE_WAIT,TCP的癌症,TCP的朋友。CLOSE_WAIT状

7、态的生成原因首先我们知道,如果我们的服务器程序APACHE处于CLOSE_WAIT状态的话,说明套接字是被动关闭的!因为如果是CLIENT端主动断掉当前连接的话,那么双方关闭这个TCP连接共需要四个packet:Client--->FIN--->ServerClient<---ACK<---Server这时候Client端处于FIN_WAIT_2状态;而Server程序处于CLOSE_WAIT状态。Client<---FIN<---Server这时Server发送FIN给Clie

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。