我正在尝试制作一个原始TCP数据包,以便在Linux客户端和服务器上的原始套接字中通过以太网发送 . TCP数据包的特殊部分是我正在尝试使用TCP SYN数据包和RST数据包的原始数据字段来回发送数据(有关TCP协议未使用部分的概念证明) .
我已经从服务器上的iptables中禁用了RST数据包 .
简而言之,这是我目前的情况:
-
客户端发送SYN并将数据发送到服务器
-
服务器收到SYN数据包 without 数据
-
服务器使用带有数据的RST数据包进行响应
-
客户端收到RST数据包 without 数据
但是,使用相同的套接字,我可以成功地做到这一点:
-
SYN没有数据发送到服务器
-
服务器收到SYN数据包
-
服务器使用带有数据的SYN ACK数据包进行响应
-
客户端收到没有数据的SYN ACK数据包
-
客户端收到带有数据的PSH ACK数据包
有人可以向我解释为什么我发送的数据包似乎不像我发送它那样进入服务器吗?
为什么我成功尝试接收两个数据包(一个带有SYN ACK,一个带有PSH ACK)?
SYN和RST数据包似乎丢失了数据,但SYN ACK数据包却没有 . 这是防火墙问题吗?
如果是这样,我该如何调试拦截我的数据包?
谢谢!
1 回答
原来VMWare虚拟适配器正在修改传输中的数据包 . 当我在主机操作系统上进行数据包捕获时,传输数据没有问题 .