19.浅谈DOS与DDOS攻击的原理

在了解分布式拒绝服务攻击的原理之前,先要了解以下两个关键的基础原理

1.TCP饿死:

UDP这种传输方式不会控制自己在通信通道里的流量,可理解为不讲道理的人。他们来到了一个热闹地区的KFC中,但是他们不买东西只排队将所有食物的价格都问一遍,占满所有的座位和过道。而常规的TCP服务通过自己的弹窗机制来控制流量,好比讲道理的人,座位被占满了,TCP自然会离开KFC导致正常的服务不能进行。最终的结果就是UDP将整个通道打满堵死。

 

2.TCP三次握手和四次断开连接:

文字说不清楚,见下图

TCP头格式

seq:序列号;ack:确认序列号


双方均需要确认才可断开连接

关于双方在整个过程中每个时间段的状态名称·

分析完以上的两个原理便可继续

DOS攻击:一台或多台计算机对受攻击服务器的某一个端口发送大量无关的UDP报文,导致整个通道内的正常服务无法进行。

DDOS攻击:大量的肉鸡对服务器的不同端口发送巨型流量的UDP报文,无法通关关闭端口的方式来进行隔离,破坏力极强,严重会造成服务器当机。

根据攻击的时间和方式又可分将DDOS为以下几种

1.SYN Flood

2.ACK Flood

3.Connection Flood

4.HTTP Get Flood

对TCP饿死的应对方案

1.增加带宽,堵死了再买

2.CDN,各地部署子服务器,当子服务遭受到攻击时,其他地区的服务器和主服务器不会受到影响。

3.BGP流量清洗,通过BGP将通道内的无用UDP报文清洗干净再转给服务器

 

 

 

1SYN洪水攻击
 
要理解dos攻击,首先要理解TCP连接的三次握手过程(Three-wayhandshake)
 
TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。 
 
第一次握手:建立连接时,客户端发送SYN((SYN=i)到服务器,并进入SYN SEND状态,等待服务器确认;
 
第二次握手:服务器收到SYN包,必须确认客户的SYN (ACK=i+1 ),同时自己也发送一个SYN((SYN=j)}SYN+ACK包,此时服务器进入SYN_RECV状态;[1] 
 
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ACK=j+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手,客户端与服务器开始传送数据。 
 
在上述过程中,还有一些重要的概念:[1] 
 
半连接收到SYN包而还未收到ACK包时的连接状态称为半连接,即尚未完全完成三次握手的TCP连接。
  半连接队列:    在三次握手协议中,服务器维护一个半连接队列,该队列为每个客户端的SYN(SYN=i )开设一个条目,该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包。这些条目所标识的连接在服务器处于SYN_ RECV状态,当服务器收到客户的确认包时,删除该条目,服务器进入ESTABLISHED状态。
 Backlog
参数:    表示半连接队列的最大容纳数目。 
 SYN-ACK
重传次数:    服务器发送完SYN-ACK包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传,如果重传次数超过系统规定的最大重传次数,系统将该连接信息、从半连接队列中删除。注意,每次重传等待的时间不一定相同。 
 半连接存活时间:    是指半连接队列的条目存活的最长时间,也即服务从收到SYN包到确认这个报文无效的最长时间,该时间值是所有重传请求包的最长等待时间总和。有时也称半连接存活时间为Timeout时间、SYN_RECV存活时间。 
上面三个参数对系统的TCP连接状况有很大影响。 

 SYN
洪水攻击属于DoS攻击的一种,它利用TCP协议缺陷,通过发送大量的半连接请求,耗费CPU和内存资源。SYN攻击除了能影响主机外,还可以危害路由器、防火墙等网络系统,事实上SYN攻击并不管目标是什么系统,只要这些系统打开TCP服务就可以实施。从图4-3可看到,服务器接收到连接请求(SYN=i )将此信息加入未连接队列,并发送请求包给客户端( SY

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值