所谓“三次握手”,是指如何跟踪协商每次发送的数据量,从而同步数据段的发送和接收,根据接收到的数据量确定数据确认的次数,以及数据发送和接收后何时取消联系,建立虚拟连接。
TCP协议建立连接时,双方需要确认对方的信息,防止连接被伪造,准确控制整个数据传输过程的完整性和有效性。因此,TCP协议使用三次握手来建立连接。
第一次握手:连接建立后,客户端向服务器,发送syn包(syn=j),进入SYN_SENT状态,等待服务器确认;SYN: SynchronizeSequenceNumbers。
第二次握手:服务器收到syn包时,必须确认客户的SYN(ack=j 1)并发送SYN包(seq=k),即SYN ACK包。此时,服务器进入SYN_RECV状态;
三次握手中的第三次:客户端接收到来自服务器的SYN ACK数据包,并向服务器发送确认数据包ACK(ack=k 1)该数据包发送后,客户端和服务器进入建立(TCP)状态,三次握手完成。
当三次握手完成后,客户端和服务器开始传输数据。在理想状态下,一旦建立了TCP连接,TCP连接将一直保持,直到任何一方主动关闭连接。
利用TCP协议的攻击原理
假设用户在向服务器,发送同步确认消息后突然崩溃或断开连接,则服务器在发送同步确认响应消息后无法从客户端接收到确认消息(三次握手无法完成)。在这种情况下,服务器通常会重试(再次向客户端发送同步确认),并在等待一段时间后丢弃未完成的连接,这称为同步超时。一般来说,这个时间是分钟的数量级(约30秒-2分钟);由于用户的异常,服务器的线程等待1分钟并不是什么大问题。但是,如果恶意攻击者大量模拟这种情况,服务器端将消耗大量资源(数万个半连接),以维护非常大的半连接列表。服务器方面也将忙于处理攻击者伪造的TCP连接请求,没有时间忽略客户的正常请求。在这种情况下,我们称之为:服务器方面受到了SYNFlood(简称Syn Flood)的攻击。
防御攻击的方法:
1.写一个加密算法,让每次发送的数据不一样,增加对方破解的成本。
2.把ip限制在攻击时间内,这样会损失一小部分正常客户,但是保证了大部分客户的正常访问。
更多信息请参考
高防服务器防御DDOS攻击和CC攻击的方法
《TCP协议的三次握手及防御手法》来自互联网同行内容,若有侵权,请联系活动:慈云数据爆款香港服务器,CTG+CN2高速带宽、快速稳定、平均延迟10+ms 速度快,免备案,每月仅需19元!! 点击查看我们删除!
还没有评论,来说两句吧...