В протоколах и сетях не силен. Помогите, пожалуйста, разобраться.
Предыстория.
При обращении любому к сайту firefox ведет себя следующим образом: тормозит около 7-8 секунд (пишет "Соединение с ..."), затем достаточно быстро появляется страница. Если на странице подгружаются элементы с других страниц, то повторяется то же самое.
Windows Server 2012, firefox, запрос к сайту ya.ru:
Firebug говорит, что
7-8 секунд занимает установка TCP соединения (не DNS, не передача данных с сервера). Запустил Network Monitor, вот кусочек того, что получил:
Вопрос
Флаги CE, если я правильно понял:
C — CWR: CWR not significant
E — ECE: ECN-Echo not significant
Кто такие SynReTransmit? Почему, если убрать флаги CE, то все проходит успешно? Почему система не делает так сразу?
Что еще не так при установке TCP соединения?
Здравствуйте, DOOM, Вы писали:
DOO>Насколько я вижу у тебя несколько первых SYN пакетов тупо теряется (потому и ретрансмит) в какой-то момент приходит ответ и завершается установка TCP соединения. Причин для такого может быть мильон. Если проблема только при установке соединения, а потом потерь и таймаутов нет, то тупит какое-то "интеллектуальное" промежуточное устройство типа МЭ, балансировщика нагрузки, VPN шлюза и т.п.
Спасибо! Натолкнули на мысль, удалось решить проблему.
Итак, все-таки флаги CE оказались важны:
1. Существует
Explicit Congestion Notification
2. Оно поддерживается новейшими версиями Windows и по-умолчанию выключено. Но вот почему-то в моем случае (в Windows 2012) оно оказалось включенным.
3. Оно может не поддерживаться старым оборудованием.
4. В моем случае, похоже, очень старый роутер отбрасывал неугодные ему пакеты от сверхсовременной Windows.
Вопрос решился после указания Windows'у отключить ECN:
netsh interface tcp set global ecncapability=disabled
Пакеты перестали теряться, теперь TCP соединение устаналивается быстро.