Hello everyone, I am a fisherman. Today we are sharing the topic of Cloudflare's open source Quiche as an implementation of QUIC and HTTP/3. It provides the underlying API for processing QUIC packets and connection state management, allowing developers to integrate QUIC and HTTP/3 functions into their applications. What is QuicheQuiche is an open source project developed by Cloudflare. It is an implementation of the QUIC protocol written in Rust. QUIC is a new network transmission protocol developed by Google to improve the security and performance of network traffic. The QUIC protocol is encrypted by default to reduce latency in data transmission and provide faster connection establishment time. Features of Quiche
Who uses Quiche?
Quiche Current and FutureAlthough Quiche is a newer QUIC implementation, it is already able to interoperate with other more mature implementations and demonstrates many of the features of QUIC. Both Quiche and QUIC itself are still being improved. As QUIC is more widely deployed on the Internet, bugs will continue to be discovered and fixed, new features will be implemented, and learning and progress will be made in practice. Stay tuned. Getting StartedThe first step in establishing a QUIC connection using quiche is to create a Config object: The Config object controls important aspects of the QUIC connection, such as the QUIC version, ALPN ID, flow control, congestion control, idle timeout, and other properties or features. Config also holds the TLS configuration. This can be changed via mutators on an existing object, or by manually building a TLS context and using with_boring_ssl_ctx_builder(). Configuration objects can be shared between multiple connections. Connection SettingsOn the client side, the connect() utility function can be used to create a new connection, while accept() is used on the server side: In both cases, the application is responsible for generating a new source connection ID, which will be used to identify the new connection. The application also needs to pass the address of the remote peer of the connection: for the client, this is the address of the server it is trying to connect to, for the server, this is the address of the client initiating the connection. Processing incoming packetsUsing the recv() method of a connection, you can process incoming packets from the network belonging to that connection: Generate outgoing packetsOutgoing packets are generated using the connection's send() method. When sending packets, the application is responsible for maintaining a timer to react to time-based connection events. The timer expiration time can be obtained using the connection's timeout() method. The application is responsible for providing a timer implementation, which can be specific to the operating system or network framework being used. When the timer expires, the on_timeout() method of the connection should be called, after which additional packets may need to be sent over the network. For more usage, you can go to the official website to check the rich documentation. |
<<: What is bandwidth management?
>>: Building a digital foundation: a vast expedition to reshape future education
TCP is a connection-oriented, reliable stream pro...
A Google search for “famous members of Generation...
As all parties continue to increase their investm...
No matter which operator you apply for broadband ...
2019 is seen as the beginning of 5G, and many ope...
DediPath has launched a new promotion, offering a...
Introduction Usually HTTP messages include reques...
While cellular technology is often thought of as ...
ProfitServer recently offered a 50% discount on s...
At the 2021 China (Shenzhen) 5G Industry Summit, ...
We are well aware of the value of information exc...
5G has been commercially used in my country for a...
The 5G era is upon us, and with this new wireless...
On March 2, MWC 2023 was held in Barcelona, Spa...
In November 2017, the General Office of the CPC C...