-1

我使用原始套接字创建 TCP 数据包,重点是序列号和 TCP 标志(SYN,ACK)

我用一台机器 S 发送一个 tcp ACK 数据包(标志 ACK 设置为 1)和另一台机器 R 接收它这两台机器在不同的子网中,都在我的学校

同时,我使用 tcpdump 来捕获数据包。

奇怪的事情发生了!在机器 S 上,捕获的数据包与预期的一样,它是一个 ACK​​ 数据包,但是在接收机器 R 上,数据包变成了一个 SYN 数据包,并且序列号发生了变化,seq no 比预期的小 1 并且 ack_seq 变为0!

潜在的问题是什么?我的猜测是路由器/防火墙将 ACK 数据包修改为 SYN 数据包,因为它从未在 ACK 之前看到 SYN SYN/ACK 交换?有可能吗?

两个捕获的数据包是:

https://docs.google.com/file/d/0B09y_TWqTtwlVnpuUlNwUmM1YUE/edit?usp=sharing https://docs.google.com/file/d/0B09y_TWqTtwlTXhjUms4ZnlkMVE/edit?usp=sharing

4

1 回答 1

0

您将遇到的最大问题是,在每种情况下,接收 TCP 堆栈都会接收数据包并可能会回复它。您正在尝试的事情确实是不可能的。

于 2013-03-17T22:58:41.983 回答