1979年,那是一个春天,有一位老人在中国的南海边画了一个圈,神话般地崛起座座城,奇迹般地聚起座座金山。
1996年, 又是一个春天, 有一位hacker写了一个程序, 可以高速发出tcp syn包, 并且这个syn包的源ip地址被强制随机造假, 于是乎, 服务端接收到syn后, 迅速为每个syn包分配一个incomplete队列, 其中的socket都是暂时没有完成连接的syn_rcvd状态socket, 这个队列迅速满了, 消耗了服务器的资源, 但又无法正确建立tcp三次握手连接(服务端的syn/ack根据之前的syn包找到的是错误的客户端IP地址, 所以也就无法收到客户端的第三次握手ack包), 资源耗尽, 从而导致服务器无法响应正常的syn包。 典型的DOS攻击啊。
从syn flood攻击可以看出我们之前的讨论------tcp两次握手是万万不行的。 轻易相信syn包就建立连接的两次握手, 很容易让服务端因资源耗尽而无法提供服务。