Windows 10, исходящий TCP всегда на ECN (явное уведомление о перегрузке) CE(перегружено) кодовых точках
Недавно я нашел кое-что интересное, когда делал несколько случайных захватов пакетов. Я включил функцию ECN в Windows много лет назад, когда она была на Windows 8 в то время. Я обновил его, когда Windows 10 была доступна, поэтому я не уверен, включен ли он по умолчанию или что.
В любом случае, я все за ECN, это хорошая возможность, но я заметил кое-что странное в своем Wireshark: почти все исходящие TCP SYN отмечены знаком CE(0x03): скриншот Windows
тот же компьютер в linux с включенным ECN, который показывает нормальное поведение (0x01 или 0x02): скриншот linux
это ошибка или особенность, что они просто хотели быть приятными для всех, поэтому они пометили его как очень медленный старт tcp? Я уверен, что мой компьютер не перегружен...
РЕДАКТИРОВАТЬ: некоторые формулировки
1 ответ
Это не ошибка, вот как ECN работает между конечными точками TCP.
Хост A отправляет SYN с установленными флагами ECN и CWR, чтобы хост B знал, что он хочет использовать ECN. Если хост B поддерживает ECN, он должен выполнить SYN-ACK с установленным битом ECN.
После согласования ECN информация ECT может быть установлена в заголовке IP, который вы видите, глядя на захват (не SYN) на вашем хосте Linux.
Из RFC3168:
Прежде чем TCP-соединение сможет использовать ECN, узел A отправляет пакет SYN с настройкой ECN, а узел B отправляет пакет SYN-ACK с настройкой ECN. Для пакета SYN настройка как ECE, так и CWR в пакете SYN с настройкой ECN определяется как указание на то, что отправляющий TCP способен к ECN, а не как признак перегрузки или ответа на перегрузку.