我使用原始套接字创建 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