如果机器在收到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对话的奇怪但有效的方法。
答案 0 :(得分:1)
我认为在FIN ACK
之后发送零窗口没有错...大概192.168.1.6
向FIN
发送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