Quinn — это реализация транспортного протокола IETF QUIC на чистом Rust, совместимая с async.
Проект был основан Диркьяном Охтманом (Dirkjan Ochtman) и Бенджамином Сондерсом (Benjamin Saunders) в 2018 году как побочный проект и с тех пор выпустил более 30 версий. Если вы используете Quinn в коммерческих целях, рассмотрите возможность спонсирования проекта.
Примеры
$ cargo run --example server ./
$ cargo run --example client https://localhost:4433/Cargo.toml
Это запускает HTTP-сервер версии 0.9 на петлевом адресе, обслуживающий текущий рабочий каталог, при этом клиент получает файл ./Cargo.toml. По умолчанию сервер генерирует самозаверяющий сертификат и сохраняет его на диск, где клиент автоматически найдёт его и будет доверять ему.
Ссылки
Конечная точка Quinn соответствует одному UDP-сокету, независимо от того, сколько соединений используется. Обработка высоких совокупных скоростей передачи данных на одной конечной точке может потребовать большего размера буфера UDP, чем настроено по умолчанию в большинстве сред. Если вы наблюдаете нестабильную задержку и/или пропускную способность по стабильному сетевому каналу, рассмотрите увеличение используемых размеров буферов. Например, вы можете настроить параметры SO_SNDBUF и SO_RCVBUF UDP-сокета перед передачей его в Quinn. Обратите внимание, что некоторые платформы (например, Linux) требуют повышенных привилегий или изменения конфигурации системы для процесса, чтобы увеличить размеры буфера UDP.
По умолчанию клиенты Quinn проверяют криптографическую идентификацию серверов, к которым они подключаются. Это предотвращает перехват сообщений активным злоумышленником на пути, но требует доверия к некоторому центру сертификации. Для многих целей этого можно достичь, используя сертификаты Let's Encrypt для серверов и полагаясь на конфигурацию по умолчанию для клиентов.
Для некоторых случаев, включая одноранговые сети, доверие при первом использовании, преднамеренное... Небезопасные приложения или в любом случае, когда серверы не идентифицируются по доменному имени, это нецелесообразно. Можно реализовать произвольную логику проверки сертификатов, включив функцию dangerous_configuration
в rustls
и создав Quinn ClientConfig
с переопределённым верификатором сертификата вручную.
Когда использование собственного центра сертификации не имеет смысла, можно использовать [rcgen] для генерации самозаверяющих сертификатов по требованию. Чтобы поддерживать доверие при первом использовании, серверы, которые автоматически генерируют самозаверяющие сертификаты, должны записывать сгенерированный сертификат в постоянное хранилище и повторно использовать его в будущих запусках.
Мы приветствуем все отзывы. Не стесняйтесь подавать сообщения об ошибках, запросы на документацию и любые другие отзывы в систему отслеживания проблем [issues].
В тестовом наборе quinn-proto используется смоделированный ввод-вывод для воспроизводимости и чтобы избежать длительных задержек в определённых чувствительных к времени тестах. Если установлена переменная среды SSLKEYLOGFILE
, тесты будут отправлять UDP-пакеты для анализа с помощью внешних анализаторов протоколов, таких как Wireshark, а журналы ключей, совместимые с NSS, для клиентской стороны каждого соединения будут записываться в путь, указанный в переменной.
Минимальная поддерживаемая версия Rust для опубликованных выпусков наших пакетов всегда будет как минимум на 6 месяцев старше на момент выпуска.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )