diff --git a/404.html b/404.html index fdfef6229..0a583912f 100644 --- a/404.html +++ b/404.html @@ -97,7 +97,7 @@ diff --git a/index.html b/index.html index c265d7821..b9b3bdb25 100644 --- a/index.html +++ b/index.html @@ -95,7 +95,7 @@ @@ -208,7 +208,7 @@ However, data loss of a single packet will still block all response streams beca - @@ -222,7 +222,7 @@ However, data loss of a single packet will still block all response streams beca - diff --git a/networking-introduction.html b/networking-introduction.html index 92408ecf9..dc4a52fcb 100644 --- a/networking-introduction.html +++ b/networking-introduction.html @@ -95,7 +95,7 @@ @@ -208,7 +208,7 @@ However, data loss of a single packet will still block all response streams beca - @@ -222,7 +222,7 @@ However, data loss of a single packet will still block all response streams beca - diff --git a/print.html b/print.html index 5f24d2b4d..9f828f131 100644 --- a/print.html +++ b/print.html @@ -97,7 +97,7 @@ @@ -202,6 +202,26 @@ To improve on this, HTTP 2 introduced request multiplexing within a TCP data str However, data loss of a single packet will still block all response streams because they exist within the context of a single TCP stream.

Connection Setup Duration

In the usual TCP + TLS + HTTP stack, TCP needs 6 handshake messages to set up a session between server and client. TLS performs its own, sending 4 messages for setting up an initial connection over TLS 1.3. By integrating the transport protocol and TLS handshakes, QUIC can make connection setup more efficient.

+

The QUIC protocol

+

QUIC is a general-purpose network protocol built on top of UDP. +The protocol is still under development and standardized by the IETF. +Quinn strives to implement the latest draft but may lag a bit behind. Although QUIC is still in a draft phase, +the protocol is used for all connections from Chrome web browsers to the Google servers.

+

QUIC solves a number of transport-layer and application-layer problems experienced by modern web applications. +It is very similar to TCP+TLS+HTTP2, but implemented on top of UDP. +Having QUIC as a self-contained protocol allows innovations which aren’t +possible with existing protocols as they are hampered by legacy clients and middleboxes.

+

Key advantages of QUIC over TCP+TLS+HTTP2 include:

+ +

While QUIC's intentions are originally web-oriented, it offers interesting opportunities in other areas like game networking. +One thing is for sure, QUIC has many great potentials and will serve us in the future with HTTP/3.

+

In the upcoming chapter we will be discussing various aspects of QUIC also in relation to Quinn.

Documentation Crates.io @@ -301,106 +321,7 @@ crates will always be at least 6 months old at the time of release.

  • Benjamin Saunders - Project owner & founder
  • Jean-Christophe Begue - Project collaborator, author of the HTTP/3 Implementation
  • -

    -

    Documentation -Crates.io -Build status -codecov -Chat -Chat -License: MIT -License: Apache 2.0

    -

    Pure-rust QUIC protocol implementation

    -

    Quinn is a pure-rust, future-based implementation of the QUIC transport protocol undergoing standardization by the IETF. -This library is at draft 32.

    -

    Features

    - -

    Overview

    - -

    Getting Started

    -

    Examples

    -
    $ cargo run --example server ./
    -$ cargo run --example client https://localhost:4433/Cargo.toml
    -
    -

    This launches an HTTP 0.9 server on the loopback address serving the current -working directory, with the client fetching ./Cargo.toml. By default, the -server generates a self-signed certificate and stores it to disk, where the -client will automatically find and trust it.

    -

    Links

    - -

    Usage Notes

    -
    - -Click to show the notes - -

    Buffers

    -

    A Quinn endpoint corresponds to a single UDP socket, no matter how many -connections are in use. Handling high aggregate data rates on a single endpoint -can require a larger UDP buffer than is configured by default in most -environments. If you observe erratic latency and/or throughput over a stable -network link, consider increasing the buffer sizes used. For example, you could -adjust the SO_SNDBUF and SO_RCVBUF options of the UDP socket to be used -before passing it in to Quinn. Note that some platforms (e.g. Linux) require -elevated privileges or modified system configuration for a process to increase -its UDP buffer sizes.

    -

    Certificates

    -

    By default, Quinn clients validate the cryptographic identity of servers they -connect to. This prevents an active, on-path attacker from intercepting -messages, but requires trusting some certificate authority. For many purposes, -this can be accomplished by using certificates from Let's Encrypt -for servers, and relying on the default configuration for clients.

    -

    For some cases, including peer-to-peer, trust-on-first-use, deliberately -insecure applications, or any case where servers are not identified by domain -name, this isn't practical. Arbitrary certificate validation logic can be -implemented by enabling the dangerous_configuration feature of rustls and -constructing a Quinn ClientConfig with an overridden certificate verifier by -hand.

    -

    When operating your own certificate authority doesn't make sense, rcgen -can be used to generate self-signed certificates on demand. To support -trust-on-first-use, servers that automatically generate self-signed certificates -should write their generated certificate to persistent storage and reuse it on -future runs.

    -
    -

    -

    Contribution

    -

    All feedback welcome. Feel free to file bugs, requests for documentation and -any other feedback to the issue tracker.

    -

    The quinn-proto test suite uses simulated IO for reproducibility and to avoid -long sleeps in certain timing-sensitive tests. If the SSLKEYLOGFILE -environment variable is set, the tests will emit UDP packets for inspection -using external protocol analyzers like Wireshark, and NSS-compatible key logs -for the client side of each connection will be written to the path specified in -the variable.

    -

    The minimum supported Rust version for published releases of our -crates will always be at least 6 months old at the time of release.

    -

    Authors

    - -

    Certificates

    +

    Certificates

    In this chapter, we discuss the configuration of the certificates that are required for a working Quinn connection.

    As QUIC uses TLS 1.3 for authentication of connections, the server needs to provide the client with a certificate confirming its identity, and the client must be configured to trust the certificates it receives from the server.

    Insecure Connection

    @@ -717,7 +638,7 @@ This could be useful if data arrival isn't essential or when high throughput is } } -

    The QUIC protocol

    +

    The QUIC protocol

    QUIC is a general-purpose network protocol built on top of UDP. The protocol is still under development and standardized by the IETF. Quinn strives to implement the latest draft but may lag a bit behind. Although QUIC is still in a draft phase, diff --git a/quic.html b/quic.html index 1a8d362a6..aad0bdaf8 100644 --- a/quic.html +++ b/quic.html @@ -95,7 +95,7 @@

    @@ -189,12 +189,16 @@ One thing is for sure, QUIC has many great potentials and will serve us in the f @@ -203,12 +207,16 @@ One thing is for sure, QUIC has many great potentials and will serve us in the f diff --git a/quinn.html b/quinn.html index e421e19ff..4ac0801c5 100644 --- a/quinn.html +++ b/quinn.html @@ -95,7 +95,7 @@ @@ -268,13 +268,13 @@ crates will always be at least 6 months old at the time of release.