重放 wireshark 记录的 TCP 数据包无法与 TCP 侦听器建立 3 步握手

重放 wireshark 记录的 TCP 数据包无法与 TCP 侦听器建立 3 步握手

我有一个 wireshark 记录的 pcap 文件,我使用 bittwist/bittwiste (http://bittwist.sourceforge.net/doc.html) 来改变该 pcap 中的源/目标的 MAC 地址、IP、TCP 端口,测试的服务器是 ac# tcplistener,客户端是 bittwist 重放的该 pcap 文件的数据包,但 3 步握手从未成功,发生的情况如下:

客户端 >> SYN

SYN/ACK << 服务器

客户端>>RST(序列号=1,但确认号是一个巨大的数字)

而不是应该发生的情况:

客户端 >> SYN

SYN/ACK << 服务器

客户端 >> 确认

在我看来,客户端决定关闭连接,但在我的例子中,客户端是重放的数据包,它只是在前两个数据包中执行以下操作:

客户端 >> SYN

客户端 >> 确认

那么问题来了,为什么根据pcap文件来看,第三步是RST而不是ACK呢?

答案1

最有可能的是,客户端计算机上的本机 TCP 堆栈收到了服务器 SYN/ACK,并且由于它没有尝试连接到服务器,因此它发送了 RST。

仅仅因为您的应用程序以混杂模式使用接口并不会阻止本机 TCP/IP 堆栈也接收数据包。

您需要在所使用的接口上禁用 TCP/IP。具体如何操作取决于您的客户端所使用的操作系统。

或者,您需要一种方法来过滤来自服务器的数据包,使其无法到达本机 TCP 堆栈。同样,如果可能的话,这取决于操作系统。

相关内容