TCP Windowsize 0 после пакета FIN - PullRequest
1 голос
/ 27 апреля 2011

Это нормально, если машина устанавливает нулевой размер окна TCP после получения FIN?

Я получил следующий дамп пакета от 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

Кстати: .1 - обычный Windows-ПК, а .6 - ПЛК Siemens. (S7-400)


После некоторого расследования это выглядит как странный, но верный способ завершить разговор по TCP.

1 Ответ

1 голос
/ 27 апреля 2011

Я не вижу ничего плохого в отправке нулевого окна после 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 и сразу после этого не отправлять данные (Len = 0) ACK, мне это кажется довольно странным (но не технически неправильным) ...

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

...