Назад | Перейти на главную страницу

Значение размера окна TCP Wireshark

Я отлаживаю приложение с помощью Wireshark и наблюдаю, как значение размера окна TCP уменьшается на одной стороне связи.

Если в разделе TCP пакета отображается «Значение размера окна: 1», означает ли это, что размер окна источника равен 1 или размер окна назначения равен 1? Я знаю, что одна сторона общается быстрее, чем другая, я просто хочу убедиться, что знаю, какая именно.

1 192.168.0.1 -> 192.168.0.100, Modbus / TCP, длина: 66, значение размера окна: 1

2 192.168.0.100 -> 192.168.0.1, TCP, длина: 60, значение размера окна: 92

3 192.168.0.100 -> 192.168.0.1 TCP, длина: 310, значение размера окна: 92

4 192.168.0.1 -> 192.168.0.100 TCP, длина: 54, значение размера окна: 0

Итак, размер окна 192.168.0.1 равен 0 или он сообщает, что окно 192.168.0.100 равно 0? Спасибо.

Размер окна пакетов от A до B указывает, сколько места в буфере доступно на A для приема пакетов. Таким образом, когда B получает пакет с размером окна 1, он сообщает B, сколько байтов ему разрешено отправить в A.

Несколько деталей, которые стоит знать о размере окна:

  • Размеры окон можно масштабировать. Пакеты SYN в начале соединения указывают коэффициент масштабирования. Размер окна всего 1 байт маловероятен. Более вероятное объяснение состоит в том, что оно масштабируется с некоторым коэффициентом, например, если коэффициент масштабирования равен 2048, то 1 означает, что размер окна составляет 2048 байтов.
  • Размеры окна измеряются относительно номера ACK в этом пакете. Таким образом, если приложение не читает из приемного буфера, то последовательность пакетов ACK будет иметь увеличивающиеся номера ACK и уменьшающиеся размеры окна, так что сумма ACK number + window size * scaling factor остается (примерно) постоянным.

Поле размера окна в заголовке TCP указывает количество байтов, которое отправитель (в данном случае 192.168.0.1) желает получить.