Quinn ist eine reine, asynchronisch-kompatible Implementierung des IETF-Quic-Transportprotokolls. Das Projekt wurde 2018 von Dirkjan Ochtman und Benjamin Saunders als Nebenprojekt gegründet und seitdem mehr als 30 Veröffentlichungen verzeichnet. Wenn Sie Quinn in einer kommerziellen Umgebung verwenden, sollten Sie das Projekt sponsern.
Beispiele
$ cargo run --example server ./
$ cargo run --example client https://localhost:4433/Cargo.toml Dadurch wird ein HTTP 0.9 -Server auf der Loopback -Adresse gestartet, in der das aktuelle Arbeitsverzeichnis dient, wobei der Client abzielt ./Cargo.toml . Standardmäßig generiert der Server ein selbstsigniertes Zertifikat und speichert es in der Festplatte, wobei der Client es automatisch findet und es vertraut.
Links
Ein Quinnendpunkt entspricht einem einzelnen UDP -Socket, unabhängig davon, wie viele Verbindungen verwendet werden. Die Behandlung hoher Aggregat -Datenraten bei einem einzigen Endpunkt kann einen größeren UDP -Puffer erfordern, als in den meisten Umgebungen standardmäßig konfiguriert wird. Wenn Sie die unregelmäßige Latenz und/oder den Durchsatz über eine stabile Netzwerkverbindung beobachten, sollten Sie die verwendeten Puffergrößen erhöhen. Sie können beispielsweise die Optionen SO_SNDBUF und SO_RCVBUF des UDP -Socket anpassen, bevor sie an Quinn weitergegeben werden. Beachten Sie, dass einige Plattformen (z. B. Linux) erhöhte Berechtigungen erfordern oder die Systemkonfiguration für einen Prozess zur Erhöhung seiner UDP -Puffergrößen verändert haben.
Standardmäßig validieren Quinn -Clients die kryptografische Identität von Servern, mit denen sie eine Verbindung herstellen. Dies verhindert, dass ein aktiver On-Path-Angreifer Nachrichten abfasst, erfordert jedoch das Vertrauen einer Zertifikatbehörde. Für viele Zwecke kann dies erreicht werden, indem Zertifikate von Let's Encrypt für Server verwendet werden und sich auf die Standardkonfiguration für Clients verlassen.
In einigen Fällen, einschließlich Peer-to-Peer, Vertrauens-zu-First-Nutzung, absichtlich unsicheren Anwendungen oder jedem Fall, in dem Server nicht durch Domain-Namen identifiziert werden, ist dies nicht praktisch. Eine beliebige Logik für die Validierungslogik für Zertifikats kann durch Aktivieren der Funktion von rustls dangerous_configuration und konstruiert und ein Quinn ClientConfig mit einem überschriebenen Zertifikatverifier von Hand erstellt werden.
Wenn Sie Ihre eigene Zertifikatautorität betreiben, kann RCGen verwendet werden, um selbstsignierte Zertifikate bei Bedarf zu generieren. Zur Unterstützung des Vertrauens-zu-First-Use sollten Server, die automatisch selbstsignierte Zertifikate generieren, ihr generiertes Zertifikat zum anhaltenden Speicher schreiben und es in zukünftigen Läufen wiederverwenden.
Alle Feedback willkommen. Fühlen Sie sich frei, Fehler, Dokumentationsanfragen und andere Feedback an den Problemverfolger zu leisten.
Die Quinn-Proto-Testsuite verwendet simuliertes IO zur Reproduzierbarkeit und um lange Schlaf-Sleeps in bestimmten timing-sensitiven Tests zu vermeiden. Wenn die Umgebungsvariable SSLKEYLOGFILE Umgebung festgelegt ist, werden die Tests UDP-Pakete zur Inspektion unter Verwendung externer Protokollanalysatoren wie Wireshark ausgehen, und NSS-kompatible Schlüsselprotokolle für die Client-Seite jeder Verbindung werden in den in der Variablen angegebenen Pfad geschrieben.
Die minimal unterstützte Rust -Version für veröffentlichte Veröffentlichungen unserer Kisten wird zum Zeitpunkt der Veröffentlichung immer mindestens 6 Monate alt.