一,前言
Dos(Denial of Service) 即拒绝服务攻击。在建立tcp连接过程中,有三次握手过程,假如客户端向服务器发送连接请求,服务器收到请求并准备建立连接,但客户端假如迟迟不确认连接将损耗服务器的资源。如果这样的请求多了,将严重影响服务器工作。这就是Dos 攻击的基本原理。然而由于单台客户端发送的客户端请求很有限,一般很难对处理能力强的服务器造成影响,所以Dos攻击在实际使用过程中一般采用DDos(Distribute Deny of Service ),分布式拒绝服务攻击,控制多台肉机客户端同时向服务器发送连接请求,以达到使服务器不能工作的目的。
二, 要点及原理分析
1. 由于需要用伪造的ip地址, 所以需要自定义ip头, 这需要对套接字属性进行设置:
int opt = 1;
setsockopt(sockfd, IPPROTO_IP, IP_HDRINCL, &opt, sizeof(opt));
2. 为了更方便的填充ip报文头及tcp报文头, 这里需要用到 struct ip 以及 struct tcphdr:
struct ip
struct ip
{
#if __BYTE_ORDER == __LITTLE_ENDIAN
unsigned int ip_hl:4; /* header length */
unsigned int ip_v:4;