Ни для кого не секрет, что в мире айти очень часто старый друг лучше новых двух, от которых проблем больше, чем от врагов. Сегодня я откатывал HTTP-протокол в прошлое.
Началось все с того, что привычный сайт (не скажу какой) стал долго прогружаться. В отличие от таких отсталых людей, как @Kaschenko, который только иногда включает свой VPN, я не только вэпээню постоянно, но я так же и активно сам фильтрую свой трафик, отправляя в черную дыру все, что мне не нравится.
И вот в этой-то дыре сайт стал задерживаться. И что я вижу? Новый (для меня) HTTP/3, он же QUIC от @Google, который как вы знаете работает поверх не TCP, а UDP, не обрабатывает пропажу пакетов!
Переход на UDP произошел как раз, чтобы избавиться от всего легаси TCP и перенести обработку сессий одновременно с многопоточностью на уровень выше.
Для поколения телефончиков (это те из вас, у кого в подписи Android) все замечательно.
А что на PC? А на PC вот это самое legacy позволяло регулировать через ОС кучу настроек TCP. У меня даже сетевая карта с TCP-offload, аппаратной обработкой TCP. Теперь же мы имеем черный протокольный ящик внутри продукта от @Google. И если что-то не работает, то все, что может сделать OS - это уведомить о потере UDP пакет ICMP пакетом! Который а) браузер не воспринимается б) в интернете вообще может блокироваться!
Ок, давайте отключим новинку от @Google! Но нет! Те опции, которые вы найдете в интернете работать не будут!
Мне потребовалось прошерстить 6Гб исходников (на минуточку, это больше, чем целая OS!), чтобы найти последнюю версию, как пишется эта опция!
Отключил и завелось! Developer Tools почему-то всеравно пишет, что используется h3, но таймауты ушли.
Вот, попалась картинка про усложнение HTTP: