网站首页 包含标签 syn 的所有文章

  • 什么是SYN FLOOD洪水攻击,原理是什么?

    同Tear Drop泪滴攻击一样,SYN Flood也是一种拒绝服务攻击,其目标是通过发送大量伪造的TCP连接请求(SYN包)来消耗目标系统的资源,从而使得被攻击方资源耗尽而无法响应合法的连接请求的攻击方式。 SYN FLOOD攻击原理 SYN FLOOD攻击发生在OSI参考模型的传输层,它的攻击原理是利用TCP协议的三次握手过程协议缺陷来实现的。 正常情况下,客户端和服务器建立TCP连接三次握手过程是这样的:   1)建立连接时,客户端发送一个SYN同步报文给服务器端,该报文中包含了本端的初始化序列号,同时设置本段的连接状态为SYN-SENT。 2)服务器端收到SYN同步报文后,给客户端回应SYN+ACK 报文,该报文中包含本段的初始化序列号。同时设置本端连接状态为SYN-RCVD。 3)客户端收到服务器端的SYN+ACK后,向服务器端发送ACK报文进行确认,此包发送完毕,客户端和服务器进入ESTABLISHED状态。 三次握手的完成标志着一个TCP连接的成功建立。 但是,当客户端向服务器端发送SYN包后,对服务器端回应的SYN+ACK包不进行处理,会出现什么结果呢,如下图? 服务器端发送完SYN+ACK 报文后,会建立一个半连接状态的socket套接口,同时会启动一个定时器,若在超时时间内未收到客户端回应的ACK报文,服务器端将会进行超时重传SYN+ACK报文给客户端,默认重传次数为5次。 第1次重传:1秒 第2次重传:2秒 第3次重传:4秒 第4次重传:8秒 第5次重传:16秒 第5次重传后还要等待32秒,若仍收不到 ACK 报文,才会关闭连接。 这样等等待时间=(1+2+4+8+16)+32=63秒,也就是大于1分钟的时间。 这样,若客户端不停的发送SYN报文并对服务端回应的报文不回答,就会导致服务器端不停的创建半连接状态的**socket **而耗尽资源,从而服务器端无法处理正常的客户端的连接请求,造成拒绝服务攻击,即SYN FLOOD洪水攻击。 SYN FLOOD攻击的特点 攻击手段简单:SYN FLOOD攻击是一种常见的DoS攻击手段。 防不胜防:SYN FLOOD是一种难以防范的攻击方式,因为其攻击行为在某些情况下很难被察觉和区分。例如,一个SYN FLOOD攻击可能会伪造合法的IP地址,使得攻击行为看起来像是来自正常的网络流量。这使得防火墙、IDS等安全设备很难对其进行有效的检测和拦截。 攻击效果显著:SYN FLOOD攻击能够快速地使目标系统资源耗尽,导致其无法响应合法的连接请求。这使得攻击者能够成功地实施DoS攻击,使目标网站或服务完全瘫痪。 危害范围广泛:SYN FLOOD攻击不仅能够对主机进行攻击,还能够危害路由器、防火墙等网络系统。事实上,只要目标系统打开TCP服务,SYN FLOOD攻击就能够对其实施攻击。 ...

    2023-11-07 值得一看 123
  • 对线面试官 – TCP经典面试题之三次握手

    面试官:TCP三次握手和四次挥手的工作流程是什么? 不念:首先说一下TCP三次握手。 第一次握手,客户端发送链接请求报文,此时SYN=1、ACK=0、seq=x,这就是个连接请求此时客户端处于SYN_SENT状态,等待服务器响应。 第二次握手,服务端收到SYN=1的请求报文后需要返回一个确认的报文,ack=x+1,SYN=1,ACK=1,seq=y,发送给客户端,自己处于一个SYN_RECV的状态。 第三次握手,客户端接着又给服务端发送了ack=y+1,ACK=1,seq=x+1 简单总结:其实说白了三次握手就是来回来去的三次请求,每次请求携带上次一堆的TCP报文头,根据报文头是否正确从而建立连接。 面试官:为什么不是五次握手或者两次握手? 不念:假设如果是两次握手的话,第一次客户端握手过去结果卡在某个地方了,没有到达服务端。 可是客户端再次重新又发送了第一次握手过去,服务端收到了并握手返回,接着彼此就建立了连接。 意外的是,之前卡住的第一次握手又死灰复燃发送到了服务端。 服务端直接返回一个第二次握手。这个时候服务器也就开辟了一个资源等待接收客户端的数据。 可是客户端直接就忽略了该回合的第二次握手,因为之前已经通信过了。 如果要是三次握手的话,那个第二次握手发回去之后客户端发现第一次握手已经被丢弃了,就会发送个复位的报文过去,避免了资源的开销。 说白了就是两次握手可能会导致服务端资源的一个浪费。三次握手会有一个复位的报文从而避免这种情况。 不念:既然三次握手都可以保证连接,四次五次握手就有些浪费资源了。 面试官:不错,继续聊一聊为什么是四次挥手。 不念:好的。 第一次挥手,客户端发送报文,FIN=1,seq=u,此时进入FIN-WAIT-1状态。 第二次挥手,服务端就收到报文,这是便进入CLOSE_WAIT状态,返回一个报文,ACK=1,ack=u+1 seq=v。客户端收到这个报文后,直接进入到FIN-WAIT-2状态,此时客户端到服务端的连接断开了。 第三次挥手,服务端发送连接释放的报文,FIN=1,ack=u+1,seq=w服务端进入LAST-ACK状态。 第四次挥手,客户端收到连接释放的报文后,发应答报文,ACK=1,ack=w+1,seq=u+1,进入到TIME_WAIT状态,等待一会客户端进入到CLOSED状态,服务端收到报文之后就进入到CLOSED状态。 ...

    2023-08-11 142

联系我们

在线咨询:点击这里给我发消息

QQ交流群:KirinBlog

工作日:8:00-23:00,节假日休息

扫码关注