Недавно я обнаружил кое-что интересное, выполняя случайный захват пакетов. Я включил возможности ECN в своей Windows несколько лет назад, когда она была на Windows 8. Я обновил его, когда Windows 10 была доступна, поэтому я не уверен, включен ли он по умолчанию или что.
В любом случае, я полностью сторонник ECN, это хорошая функция, но я заметил кое-что странное в моем wirehark: почти весь исходящий TCP SYN помечен CE (0x03): Скриншот Windows
тот же компьютер в Linux с включенным ECN, который показывает нормальное поведение (0x01 или 0x02): скриншот linux
это ошибка или особенность, из-за которой они просто хотели быть вежливыми для всех, поэтому отметили ее сверхмедленным запуском tcp? Я уверен, что мой компьютер не перегружен ...
РЕДАКТИРОВАТЬ: некоторая формулировка
Это не ошибка, так 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-setup ECN определяется как указание на то, что отправляющий TCP поддерживает ECN, а не как указание на перегрузку или ответ на перегрузку.