发送的数据包与接收的数据包不同

时间:2013-03-17 22:42:03

标签: networking tcp network-programming

我使用raw socket创建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

1 个答案:

答案 0 :(得分:0)

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