Я использую IPERF для отправки некоторых пакетов с одного компьютера на другой. При тестировании MSS (максимальный размер сегмента) с IPERF наблюдались следующие вещи.
Отправка пакетов с MSS = 20 байтов:
iperf -c 192.168.1.98 -P 1 -i 5 -p 5001 -M 20 -m
Мы ожидали, что вышеприведенная команда отправит пакеты с MSS = 20 байтов и
MTU = MSS + 40 байт = 60 байт, но IPERF показывает, что MSS = 36 байт (MTU = 76 байт).
Мы видели, что IPERF всегда отправляет MSS размера, на 12 байт меньше, чем мы указываем.
Здесь я должен указать, что ПК, с которого я отправляю пакеты, является машиной Linux, а компьютер, на котором эти пакеты принимаются, - машиной Windows. Мы генерируем пакеты в Linux с помощью команды IPERF, пока на Windows выполняется обработка JPERF, где мы видим информацию о входящих пакетах.
Еще одна важная вещь: JPERF на компьютере с Windows после получения отправленных нами пакетов говорит следующее:
Размер MSS и MTU неизвестен (TCP_MAXSEG не поддерживается ОС?)
Есть идеи, как / почему MSS уменьшается?