HTTP3 Explained
HTTP/3 — это новая версия протокола HTTP, работающая поверх QUIC (Quick UDP Internet Connections) вместо традиционного TCP. Основное преимущество — решение проблемы "head of line blocking", когда потеря одного пакета блокирует всю передачу данных. HTTP/3 использует UDP, что позволяет параллельно обрабатывать пакеты без ожидания восстановления связи. Протокол включает встроенную безопасность с TLS 1.3 и поддерживает 0-RTT handshakes для снижения задержки при повторных подключениях.
Книга подробно разбирает эволюцию протокола: от HTTP/2 с его ограничениями TCP до современных возможностей QUIC. HTTP/3 сохраняет такие функции HTTP/2, как мультиплексирование запросов и приоритизацию, но с улучшенной производительностью. Особое внимание уделено техническим деталям: работа с потоками, сравнение с HTTP/2, а также критика и перспективы развития. Документ доступен на нескольких языках и представляет собой исчерпывающее руководство для разработчиков, интересующихся современными веб-протоколами.
Комментарии (57)
- Обсуждение охватывает отсутствие обновлений документации HTTP/3, проблемы с потерей пакетов в HTTP/2, и то, что HTTP/3 уже поддерживается большинством браузеров и сайтов, но документация и инструменты отстают.
- Участники обсуждают, что HTTP/3 в основном использует UDP, что вызывает споры о безопасности и приватности, а также то, что TCP может быть выключен в будущем.
- Также обсуждается, что HTTP/3 уже активно используется, но не всегда очевидно, что это именно он, так как внешне это может быть незаметно.
- Участники также отмечают, что документация и инструменты для HTTP/3 развиты недостаточно, и что будущее HTTP/4 неясно.
- В конце обсуждение сдвигается к тому, что HTTP/3 уже здесь и сейчас, и мы должны начать его использовать и развивать экосистему вокруг него.
SSH3: Faster and rich secure shell using HTTP/3 🔥 Горячее 💬 Длинная дискуссия
SSH3 — это новая реализация SSH, построенная поверх HTTP/3 и QUIC вместо традиционного TCP. Она обещает значительно более низкую задержку установки соединения, многопоточность и встроенную поддержку мультиплексирования. Это позволяет ускорить интерактивные сессии, особенно в условиях нестабильных сетей.
Проект также включает улучшенные возможности, такие как передача файлов через HTTP и использование современных криптографических алгоритмов. Уже есть черновик IETF и техническая статья на arXiv, демонстрирующая производительность и совместимость. SSH3 может стать практичной альтернативой для DevOps и удалённого управления.
Комментарии (248)
- Скептицизм по поводу заявлений о скорости: некоторые участники сомневаются в значительном преимуществе SSH3, отмечая, что основная задержка часто связана не с установкой соединения, а с настройкой сессии (PAM и т.д.).
- Критика имени "SSH3" и интеграции в HTTP: многие считают название неудачным и выражают сожаление по поводу поглощения прикладных протоколов HTTP, что увеличивает сложность и потенциальные риски безопасности.
- Обеспокоенность безопасностью и аудируемостью: новая, не испытанная в боях реализация вызывает опасения; участники подчеркивают необходимость тщательного аудита перед использованием в production.
- Вопросы к практической полезности и статусу проекта: обсуждается отсутствие commits за последний год, целесообразность поддержки OAuth для входа на сервер и необходимость таких функций, как миграция соединений.
- Технические аспекты и потенциальные преимущества: отмечается возможность решения проблемы head-of-line blocking за счёт мультиплексирования в QUIC/HTTP3, а также преимущества скрытия сервера за HTTP-прокси.
Fast UDP I/O for Firefox in Rust 🔥 Горячее
Firefox переписывает свой стек UDP для QUIC на Rust, чтобы использовать современные системные вызовы и повысить производительность. Около 20% HTTP-трафика браузера уже идёт через HTTP/3 поверх QUIC/UDP, а старый код на NSPR не поддерживает многопакетные операции вроде sendmmsg или аппаратное ускорение сегментации (GSO/GRO).
Новый движок построен на основе библиотеки quinn-udp и показывает впечатляющие результаты: в CPU-нагруженных сценариях пропускная способность выросла с менее 1 Гбит/с до 4 Гбит/с. Основная сложность заключалась в поддержке старых версий ОС, включая Android 5. Проект также усиливает безопасность благодаря использованию memory-safe языка и тесной интеграции с существующей Rust-реализацией QUIC во Firefox.
Комментарии (64)
- Увеличение пропускной способности UDP до 4 Гбит/с и снижение нагрузки на CPU благодаря оптимизациям в библиотеке quinn-udp
- Критика скорости в 4 Гбит/с как недостаточной для высокоскоростных сетей и обсуждение ограничений системных вызовов и шифрования
- Вопросы о работе механизмов GSO/GRO для UDP и обработки пакетов, приходящих не по порядку
- Обсуждение поддержки проектов с открытым исходным кодом, в частности, вклад Mozilla в Quinn кодом, но не финансированием
- Дебаты о целесообразности использования самоподписанных сертификатов в HTTP/3 для LAN и соображения безопасности
Performance Improvements in .NET 10
Ускорение .NET 10
- JIT умеет инлайнить виртуальные вызовы и разворачивать цепочки интерфейсов; PGO по умолчанию.
- GC: меньше пауз, новые режимы Server & Dynamic Adaptation, утилизация памяти ↓15 %.
- BCL:
List<>,Dictionary<>,Span, RegEx, UTF8/JSON, LINQ быстрее в 1,2-3×; новые APIIndexOfAnyInRange,StringValues. - C# 14: встроенные буферы,
refполя в struct, vector-типы, zero-copy P/Invoke. - ASP.NET: 30 % RPS, 50 % latency; HTTP/3,
IHttpSysRequestTimingFeature, pooled H/3 connections. - MAUI: старты экранов в 2× быстрее, меньше аллокаций, AOT для Android/iOS.
- EF Core: компилируемые модели, pooled DB contexts, batching ↑40 %.
- Blazor WebAssembly: SIMD, AOT, сжатие IL + caching → 45 % меньше трафика.
- Серверные шаблоны: оптимизированные Docker-образы, ReadyToRun + AOT, меньше RAM.
- Инструменты: динамический профилировщик в VS,
dotnet trace --live, Perfetto, новые счётчики.
Комментарии (48)
- C# стремительно быстрее: LINQ ускорили в 300×, Native AOT догоняет Go, каждый мажор даёт –10–20 % CPU на 20 000 серверах.
- Всё это — благодаря «arena-» и escape-анализу, стековым структурам, ref’ам и другим приёмам, раньше доступным лишь в Rust/C++.
- Однако оптимизации не гарантированы: если код «не пройдёт borrow-checker», ускорения может не быть, а понять, где аллокации, всё труднее.
- Обновления .NET почти безболезненны: минуты работы и пара строк в CI, при этом старые API продолжают жить летами.
- Спорный момент — экосистема: кому-то кажется, что пакеты устаревают быстрее, чем в других языках; другие считают стабильность ASP.NET Core лучшей из виденных.