当客户端通过 hping3(非欺骗)发送 10 个 TCP SYN 数据包时,服务器响应并发送 10 个 TCP SYN+ACK 数据包。现在客户端应该通过发送 10 个 ACK 数据包来响应服务器并建立连接,但是客户端发送 10 个 RST 并终止半开连接(我猜这是因为 linux 内核响应)。
我如何每秒发送 10 个 SYN 数据包(到具有不同源端口的同一目的地)并响应 SYN+ACK,发送 ACK 并建立连接?非常感谢
hping3 发送原始数据包,而不用内核打开面向连接的套接字——因此是 RST。为了让内核建立连接,您必须在应用程序端保持一个套接字打开。这意味着应用程序必须继续运行,如果它关闭,内核将重置所有打开的套接字。
您的选项是有限的,您可以尝试 'nc' (netcat),并为您要打开的每个连接启动一个新进程。或者编写一个打开多个连接的程序,每个连接使用不同的套接字来确保每个连接的源端口不同。请记住,您可以在单个程序中以及在整个系统中打开多少个套接字是有限制的。
您可能需要使用另一个工具,例如tcpgoon来为您完成握手,在执行测试时保持打开的连接