SCTP四路握手及抵抗SYN Flooding攻击的原理

摘自:http://tech.c114.net/166/a138321.html

一个SCTP关联定义为:[主机A的一组IP地址]+[主机A的端口]+ [主机B的一组IP地址]+[主机B的端口]。 因此,每一端对应组中的任何一个IP地址都可作为相应的源/目的地址来标示本次关联,通过四路握手,两端SCTP主机交换通信状态。


  SYN Flooding利用了TCP/IP的固有漏洞,面向连接的TCP三次握手是SYN Flooding存在的基础。SYN Flooding攻击的原理是:恶意的攻击者大量向服务器发送SYN报文,服务器在发出SYN+ACK应答报文后无法收到客户端的ACK报文(第三次握手无法完成),服务器端将为维护一个非常大的半连接列表而消耗非常多的CPU时间和内存资源,还要不断对这个列表中的IP进行SYN+ACK的重试。服务器端将忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求,此时从正常客户的角度看来,服务器失去响应。


  而在一次SCTP四路握手中,INIT消息的接收端不必保存任何状态信息或者分配任何资源,这样就可防范SYN Flooding等DoS攻击。它在发送INIT-ACK消息时,采用了一种机制——“状态Cookie”,该Cookie具有发送端要建立自己状态所需的全部信息。


  SCTP产生一个状态Cookie的过程如下:


  1. 使用收到的INIT和发出的INIT- ACK块中的信息创建一个关联的TCB(传输控制块)。


  2. 在TCB中,将当前日期设为创建日期,将协议参数“有效Cookie时间”设为生存期间。


  3. 根据TCB,收集重建TCB所需的最小信息子集,将该子集和密钥产生一个MAC(信息认证编码)。


  4. 结合上述最小信息子集和MAC产生状态Cookie。


  5. 在发送完INIT ACK(包含状态Cookie参数)后,发送方必须删除TCB以及任何与新关联有关的本地资源。


  INIT和INIT-ACK都必须包含建立初始状态所需的参数:一组IP地址,保证可靠传输的初始TSN,每个被接收的SCTP包中必须含有的初始标签,每一端请求发出的流数目和每一端能支持接收的流数目。交换完这些消息之后,INIT的发送端以COOKIE-ECHO消息的方式发送回状态Cookie。接收端根据所接收到的COOKIE-ECHO中的状态Cookie,完整地重建自己的状态,并回送COOKIE-
ACK来确认关联已建立。COOKIE-ECHO和COOKIE-ACK都可将用户数据消息绑定到各自的包中。


   由此可见,采用以上这种方式,即使接收再多的INIT消息, 接收端也没有任何资源的消耗:它既不分配任何系统资源,也不保存此次新关联的状态,它只是把相应重建状态所用的状态Cookie作为参数,包含在每一个回送的INIT-ACK消息中,最后该状态Cookie会被COOKIE-ECHO消息发送回来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值