FIN数据包后的TCP Windowsize 0

时间:2011-04-27 12:23:39

标签: networking tcp plc

如果机器在收到FIN后将TCP窗口大小设置为零可以吗?

我从连接结束的wireshark获得了以下数据包转储,我只是想知道这是否是一种有效的方式来结束连接或者是否有问题。

192.168.1.1 192.168.1.6 TCP 3450 > 102 [FIN, ACK] Seq=48 Ack=50 Win=65486 Len=0
192.168.1.6 192.168.1.1 TCP [TCP ZeroWindow] 102 > 3450 [ACK] Seq=50 Ack=49 Win=0 Len=0
192.168.1.6 192.168.1.1 TCP 102 > 3450 [FIN, PSH, ACK] Seq=50 Ack=49 Win=0 Len=0
192.168.1.1 192.168.1.6 TCP 3450 > 102 [ACK] Seq=49 Ack=51 Win=65486 Len=0

BTW:.1是常规的Windows PC,而.6是西门子PLC。 (S7-400)


经过一番调查后,它看起来像是一个结束TCP对话的奇怪但有效的方法。

1 个答案:

答案 0 :(得分:1)

我认为在FIN ACK之后发送零窗口没有错...大概192.168.1.6FIN发送192.168.1.1,因此他们现在正在关闭连接。

192.168.1.6 192.168.1.1 TCP [TCP ZeroWindow] 102 > 3450 [ACK] Seq=50 Ack=49 Win=0 Len=0

但是在PSH之后立即设置ACK标志并且没有发送数据(Len = 0),对我来说看起来很奇怪(但技术上并不错误)......

192.168.1.6 192.168.1.1 TCP 102 > 3450 [FIN, PSH, ACK] Seq=50 Ack=49 Win=0 Len=0