Сценарий, который у меня есть, таков: у меня есть петлевой сеанс TCP, и я хочу улучшить его производительность. У меня есть объекты, подобные сокетам (System.Net.Sockets в .NET Framework, если быть точным), отправляющие сообщения размером до 9 МБ, каждое из которых течет в обоих направлениях TCP-соединения. Я наблюдал типичные задержки около 20 мс для такого большого сообщения, чтобы добраться до другой стороны.
С помощью WireShark я обнаружил, что поток TCP ограничен 65535 байтами на сегмент. Я подозреваю, что это узкое место производительности скорости.В заголовках TCP включена опция масштабирования окна, и расчетный размер окна достаточно велик. Я подозреваю, что «Параметр TCP — максимальный размер сегмента» (MSS) в пакете SYN ограничивает размер каждого сегмента TCP. Пожалуйста, посмотрите изображения WireShark и укажите, если я ошибаюсь.
сегменты TCP с ограниченным размером и параметры масштабирования окна
Пакет SYN и MSS
Теперь возвращаемся к вопросу в заголовке. В Windows 7/8/10/11 есть ли способ увеличить этот предельный размер сегмента TCP? Я надеюсь найти метод, который увеличивает MSS только для петлевых соединений или только для определенных портов или что-то в этом роде.