尝试发送带有数据的TCP SYN数据包和带数据的RST,但原始数据字段在传输过程中消失。为什么?

时间:2015-12-05 06:14:56

标签: linux sockets networking tcp packet

我正在尝试制作原始TCP数据包,以便在Linux客户端和服务器上的原始套接字中通过以太网发送。 TCP数据包的特殊部分是我正在尝试使用TCP SYN数据包和RST数据包的原始数据字段来回发送数据(有关TCP协议未使用部分的概念证明)。 / p>

我已经从服务器上的iptables中禁用了RST数据包。

简而言之,这是我目前的情况:

  1. 客户端发送SYN,数据发送到服务器
  2. 服务器收到SYN数据包没有数据
  3. 服务器使用带有数据的RST数据包进行响应
  4. 客户端收到RST数据包没有数据
  5. 但是,使用相同的套接字,我可以成功地做到这一点:

    1. 没有数据发送到服务器的SYN
    2. 服务器收到SYN数据包
    3. 服务器使用带有数据
    4. 的SYN ACK数据包进行响应
    5. 客户端收到没有数据的SYN ACK数据包
    6. 客户端收到带有数据的PSH ACK数据包
    7. 有人可以向我解释为什么我发送的数据包似乎不像我发送的那样进入服务器吗?

      为什么我成功尝试收到两个数据包(一个包含SYN ACK,另一个包含PSH ACK)?

      SYN和RST数据包似乎丢失了数据,但SYN ACK数据包却没有。这是防火墙问题吗?

      如果是这样,我该如何调试拦截我的数据包?

      谢谢!

1 个答案:

答案 0 :(得分:1)

原来VMWare虚拟适配器正在修改传输中的数据包。当我在主机操作系统上进行数据包捕获时,传输数据没有问题。