作业里的代码,直接这里copy在这里记录一下。
在TCP/IP协议中,当客户端试着与服务器间创建TCP连接时,正常情况下客户端与服务器端进行TCP三次握手:
1. 客户端通过发送SYN同步(synchronize)信息到服务器要求创建连接。
2. 服务器通过响应客户端SYN-ACK以抄收(acknowledge)请求。
3. 客户端答应ACK,连接随之建立。
当开放了一个TCP端口后,该端口就处于Listening状态,不停地监视发到该端口的Syn报文,一 旦接收到Client发来的Syn报文,就需要为该请求分配一个TCB(Transmission Control Block),通常一个TCB至少需要280个字节,在某些操作系统中TCB甚至需要1300个字节,并返回一个SYN ACK命令,立即转为SYN-RECEIVED即半开连接状态,而某些操作系统在SOCK的实现上最多可开启512个半开连接。如果恶意的向某个服务器端口发送大量的SYN包,则可以使服务器打开大量的半开连接,分配TCB,从而消耗大量的服务器资源,同时也使得正常的连接请求无法被相应。而攻击发起方的资源消耗相比较可忽略不计。
本代码中发了一万个SYN包,源IP地址是从10.200.101.3到255(可根据需要更改)随机选取的,源端口在49512到65535范围内,目标IP为10.200.101.2,目标端口为80。
以上信息都可以根据实际需求更改。
此代码仅供交流和学习,请勿用于攻击他人和商业行为,违者后果自负。