TCP协议缺陷与SYN Flooding攻击

当服务器收到TCP 连接请求后, 就会使用一些资源来为连接提供服务, 并回复请求一个肯定答复(叫做SYN-ACK)。如果发出的SYN-ACK 没有响应,服务器会认为它发出的SYN-ACK 丢失, 并继续设法发送SYN-ACK 。一些系统都有缺省的回复次数和超时时间, 回复一定的次数, 或者超时时, 占用的资源才会释放。Windows NT 3 .5x 和4 .0 中缺省设置为可重复发送SYN-ACK 答复5 次。每次重新发送后, 等待时间翻番。第一次等待时间为3 秒钟, 到第5 次重发信号时, 机器将等待48 秒钟以求得到响应。如果还是收不到响应, 机器还要等待96 秒, 才取消分配给连接的资源。在这些资源获得释放之前, 已经过去了189 秒钟。

利用TCP 协议的这种特点, 攻击者就可以向服务器端不断地大量发送只有SYN 标志的TCP 连接请求, 当服务器接收的时候, 都认为是没有建立起来的连接请求, 于是为这些请求建立会话, 排到缓冲区队列(Backlog Queue)中。如果攻击者发送的SYN 请求超过了被攻击主机能容纳的限度, 使其缓冲区队列满, 那么服务器就不能再接收并处理新的TCP 请求了, 其他合法用户的连接都会被拒绝掉, 严重的会引起系统崩溃, 这就是TCP SYN Flooding 引起的DoS。


节选自: 《浅议TCP SYN Flooding攻击》

你可能感兴趣的:(计算机网络)