在syn flood攻击场景下,为了提高发送效率在服务端产生更多的syn等待队列,攻击程序在填充包头时,IP首部和TCP首部都不填充可选的字段,因此IP首部长度恰好是20字节,TCP首部也是20字节,共计40字节。
对于以太网来说,最小的包长度数据段必须达到46字节,而攻击报文只有40字节,因此网卡在发送时,会做一些处理,在TCP首部的末尾,填充6个0来满足最小包的长度要求。
这时整个数据包长度为14字节的以太头,20字节的IP头,20字节的TCP头,再加上因为最小包长度要求而填充的6哥字节的0,共计60字节。
此外在以太网在传输数据时,还有CRC校验的要求。网卡会在发送数据之前对数据包进行CRC校验,将4字节的CRC值附加到包头的最后面,这时数据包的长度不再是40字节,而变成64字节了,这就是所谓的syn小包攻击,数据包格式如下:
|14字节以太头部|20字节IP头部|20字节TCP|6字节填充|4字节校验
|目的MAC|源MAC|协议类型|IP头|TCP头|以太网填充|CRC校验