
Вэта статья Technet об ограничениях MSS в Windows Server 2008, в нем упоминается:
Проанализировав сетевой след, собранный на исходном сервере Windows 2008, мы обнаружили, что удаленная система предлагала размер TCP MSS 512 байт, а сервер Windows 2008 продолжал отправлять пакеты данных с размером MSS 536 байт.
Как это сделать, т. е. выполнить трассировку сети, а затем определить значение MSS, которое Windows должна использовать и использует в настоящее время?
решение1
Если у вас есть захват пакетов с пакетами SYN и SYN/ACK, инициирующими TCP-соединение, вы найдете максимальный размер сегмента, объявленный каждой из сторон в списке опций. Вы можете создать такой захват, используяWireshark, интересная часть может выглядеть так:
(бесстыдно украдено изhttp://caedesnotes.wordpress.com/2010/06/30/bug-hunting-browsers-fail-to-load-research-microsoft-com/)
Если, как вы видите в этом примере, MSS, объявленный 131.107.65.14, составляет 1452 байта, вы должны увидеть только длины сегментов TCP, равные или меньшие этого значения во время этого соединения. Обратите внимание, что оба хоста объявляют MSS независимо в пакетах SYN и SYN/ACK, и для всех сегментов, которыми обмениваются в течение всего времени соединения, выбирается меньший из двух.
Вы можете настроить фильтр отображения в Wireshark для быстрой проверки. tcp.len>1452 and ip.dst==131.107.65.14
отобразит любые пакеты, нарушающие ограничение MSS в 1452 байта для 131.107.65.14. Если ваш стек TCP работает правильно, вы, очевидно, не увидите никаких отображаемых пакетов после применения фильтра.