TCP三次握手,四次挥手,SYN泛洪攻击

目录

一.三次握手

二.SYN泛洪攻击概念

 三.四次挥手


一.三次握手

 

当客户端调用connect连接服务器时,底层会发生“三次握手”,握手成功,建立连接,connect解阻塞,继续执行。

TCP报头:

三次握手过程:

客户端发出SYN请求,处于SYN_SENT状态完成第一次握手,服务器收到客户端的SYN请求,处于SYN_RCVD状态,并发出ACK以及SYN请求,完成第二次握手,客户端收到服务的SYN和ACK,处于连接状态ESTABLISH,并发出ACK请求,完成第三次握手。

二.SYN泛洪攻击概念

攻击者客户端 伪造大量客户端ip 向服务端发出SYN请求;由于伪造ip的真实客户端并没有向服务端发出过建立连接请求,因此会直接丢弃掉服务端发送过来的SYN-ACK包,不会回复服务端;这就导致服务端处于SYN-RCVD状态;大量的伪造SYN请求就会使服务器长时间处于SYN-RECVD状态(等到客户端的ACK确认,没有受到ACK确认则忙于重新发送SYN-ACK包),服务器的半开连接队列被占满,从而阻止其他合法用户进行访问,甚至致使服务器崩溃;

 

 三.四次挥手

 当客户端调用close,激发底层发出FIN请求,完成第一次挥手。服务器收到客户端的FIN,立马发出ACK报文完成第二次挥手。服务器应用层调用close,激发底层发出FIN请求,完成第三次挥手,客户端收到服务器的FIN请求,发出ACK应答完成第四次挥手。

1.等待2MSL的意义:保证客户端最后发送的ACK能够到达服务器,帮助其正常关闭。

由于这个ACK报文段可能会丢失,使得处于LAST_ACK状态的服务器得不到对已发送FIN报文段的确认,从而会触发超时重传。服务器会重发FIN报文段,客户端能保证在2MSL时间内收到来自服务器的重传FIN报文段,从而客户端重新发送ACK应答报文段,并重置2MSL计数。

2、为什么要四次挥手?

释放 TCP 连接时之所以需要四次挥手,是因为 FIN 释放连接报文和 ACK 确认接收报文是分别在两次握手中传输的。 当主动方在数据传送结束后发出连接释放的通知,由于被动方可能还有必要的数据要处理,所以会先返回 ACK 确认收到报文。当被动方也没有数据再发送的时候,则发出连接释放通知,对方确认后才完全关闭TCP连接。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值