QUIC Protocol Implementation 1.0
A Python implementation of the QUIC (Quick UDP Internet Connections) protocol.
|
Python implementation of the QUIC (Quick UDP Internet Connections) protocol. It includes classes and modules to handle streams, frames, packets, and connections following the QUIC protocol as described in the relevant RFCs.
This implementation simulates the core functionalities of QUIC, including the management of streams, the encoding and decoding of frames, the construction and parsing of packets, and the establishment of connections. The codebase is structured to allow easy extension and adaptation for different use cases.
constants.py
: Contains various constants used throughout the project.frame.py
: Defines the classes for different types of frames, including methods to encode and decode them.packet.py
: Handles the construction and parsing of QUIC packets, including the packet header and payload.stream.py
: Manages stream operations, including sending and receiving data, generating frames, and handling stream states.quic.py
: Manages the QUIC connection, including stream management, packet sending and receiving, and showing connection statistics.sender.py
: A script to initiate the sender-side QUIC connection.receiver.py
: A script to initiate the receiver-side QUIC connection.No additional dependencies are required as the implementation uses standard Python libraries.
To use the implementation, run the receiver.py
and sender.py
scripts in separate terminal windows or on separate machines. The sender will transmit the file, and the receiver will output the statistics of the transfer.
The receiver script listens for incoming packets and processes the received data.
The sender script initializes a QUIC connection and sends a file over one or more streams.
When running the implementation, you'll see output similar to:
You can customize the implementation by modifying the constants in constants.py
. Key configuration options include:
This project is licensed under the MIT License.