It is a quic implementation in rust. It provides us with multiple independent streams over a single QUIC connection which runs on a single UDP socket. The streams are reliable(bytes are delivered reliably (lost packets are retransmitted)), ordered and congestion controlled with head-of-line blocking isolation.
The TLS 1.3 encryption is mandatory in quic. It comes with the quic handshake itself.
quinn has an endpoint(a UDP socket with config), connection and SendStream and RecvStream.
Every message that passes through the quic is encrypted by TLS 1.3. It is not optional like in TCP.
Unlike TCP where only one byte stream is supported, quic supports multiple streams over a same connection.
In TCP, if a packet is lost, whole stream is blocked. In quic, if a packet is lost, the stream carrying that packet is halted, other streams go on as usual.
It doesn’t take messages but streams, which has no information about where it starts and ends, exactly like in TCP.
In client-server architecture client and server are identified via certificate authority. But in p2p networks we can have hardware, phones as the nodes, which don’t have certificates. For that reason, we need to define our own peer identity in ed25519.
The security layer, TLS supports QUIC but not BLE, LoRa and so forth.