diff --git a/README.md b/README.md index 23290a9..27c8b09 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Delicately-TUICed 0-RTT proxy protocol ## Introduction -TUIC is a proxy protocol focusing on the simplicity. It aims to minimize the additional handshake latency caused by relaying as much as possible +TUIC is a proxy protocol focusing on minimize the additional handshake latency caused by relaying as much as possible, as well as keeping the protocol itself being simple and easy to implement TUIC is originally designed to be used on top of the [QUIC](https://en.wikipedia.org/wiki/QUIC) protocol, but you can use it with any other protocol, e.g. TCP, in theory @@ -19,10 +19,12 @@ When paired with QUIC, TUIC can achieve: - `native`: Having characteristics of native UDP mechanism - `quic`: Transferring UDP packets losslessly using QUIC streams - Fully multiplexed -- All the advantages of QUIC: +- All the advantages of QUIC, including but not limited to: - Bidirectional user-space congestion control - - Connection migration - Optional 0-RTT connection handshake + - Connection migration + +Fully-detailed TUIC protocol specification can be found in [SPEC.md](https://github.com/EAimTY/tuic/blob/dev/SPEC.md) ## Overview @@ -35,4 +37,6 @@ There are 4 crates provided in this repository: ## License -GNU General Public License v3.0 +Code in this repository is licensed under [GNU General Public License v3.0](https://github.com/EAimTY/tuic/blob/dev/LICENSE) + +However, the concept of the TUIC protocol is license-free. You can implement, modify, and redistribute the protocol without any restrictions, even for commercial use diff --git a/tuic/SPEC.md b/SPEC.md similarity index 100% rename from tuic/SPEC.md rename to SPEC.md diff --git a/tuic-client/README.md b/tuic-client/README.md index b814a4e..d537c85 100644 --- a/tuic-client/README.md +++ b/tuic-client/README.md @@ -5,6 +5,12 @@ Minimalistic TUIC client implementation as a reference [![Version](https://img.shields.io/crates/v/tuic-client.svg?style=flat)](https://crates.io/crates/tuic-client) [![License](https://img.shields.io/crates/l/tuic-client.svg?style=flat)](https://github.com/EAimTY/tuic/blob/dev/LICENSE) +# Overview + +The main goal of this TUIC client implementation is not to provide a full-featured, production-ready TUIC client, but to provide a minimal reference for the TUIC protocol client implementation. + +This implementation only contains the most basic requirements of a functional TUIC protocol client. If you are looking for features like HTTP-inbound, load-balance, etc., try other implementations, or implement them yourself. + ## Usage Download the latest binary from [releases](https://github.com/EAimTY/tuic/releases). @@ -132,12 +138,6 @@ tuic-client -c PATH/TO/CONFIG } ``` -## Opinions on Advanced Features - -This TUIC client implementation is intended to be minimalistic. It is mainly used as a reference and verification of the TUIC protocol specification. - -This implementation only contains the most basic requirements of a functional TUIC protocol client. It does not includes any advanced features, such as outbound control, obfuscation, etc. If you want them, try other implementations, or implement them yourself. - ## License GNU General Public License v3.0 diff --git a/tuic-quinn/README.md b/tuic-quinn/README.md index 2f6bef6..c173d04 100644 --- a/tuic-quinn/README.md +++ b/tuic-quinn/README.md @@ -10,7 +10,7 @@ A thin layer on top of [quinn](https://github.com/quinn-rs/quinn) to provide fun This crate provides a wrapper [`Connection`](https://docs.rs/tuic-quinn/latest/tuic_quinn/struct.Connection.html) around [`quinn::Connection`](https://docs.rs/quinn/latest/quinn/struct.Connection.html). It can be used to perform TUIC operations. -Note that there is no TUIC protocol flow state machine abstraction in this crate. You need to implement it yourself. +Note that there is no state machine abstraction for the TUIC protocol flow in this crate. You need to implement it yourself. ## License diff --git a/tuic-server/README.md b/tuic-server/README.md index 49ac0df..cd3176d 100644 --- a/tuic-server/README.md +++ b/tuic-server/README.md @@ -5,6 +5,12 @@ Minimalistic TUIC server implementation as a reference [![Version](https://img.shields.io/crates/v/tuic-server.svg?style=flat)](https://crates.io/crates/tuic-server) [![License](https://img.shields.io/crates/l/tuic-server.svg?style=flat)](https://github.com/EAimTY/tuic/blob/dev/LICENSE) +# Overview + +The main goal of this TUIC server implementation is not to provide a full-featured, production-ready TUIC server, but to provide a minimal reference for the TUIC protocol server implementation. + +This implementation only contains the most basic requirements of a functional TUIC protocol server. If you are looking for features like outbound-control, DNS-caching, etc., try other implementations, or implement them yourself. + ## Usage Download the latest binary from [releases](https://github.com/EAimTY/tuic/releases). @@ -103,12 +109,6 @@ tuic-server -c PATH/TO/CONFIG } ``` -## Opinions on Advanced Features - -This TUIC server implementation is intended to be minimalistic. It is mainly used as a reference and verification of the TUIC protocol specification. - -This implementation only contains the most basic requirements of a functional TUIC protocol server. It does not includes any advanced features, such as outbound control, obfuscation, etc. If you want them, try other implementations, or implement them yourself. - ## License GNU General Public License v3.0 diff --git a/tuic/README.md b/tuic/README.md index fa121a4..7459687 100644 --- a/tuic/README.md +++ b/tuic/README.md @@ -8,22 +8,22 @@ Delicately-TUICed 0-RTT proxy protocol ## Overview -The TUIC protocol specification can be found in [SPEC.md](https://github.com/EAimTY/tuic/blob/dev/tuic/SPEC.md). This crate provides the low-level abstract of the TUIC protocol in Rust. +The TUIC protocol specification can be found in [SPEC.md](https://github.com/EAimTY/tuic/blob/dev/SPEC.md). This crate provides the low-level abstract of the TUIC protocol in Rust. Some optional features that can be enabled: -- `model` - Provides a model of the TUIC protocol, with packet fragmentation and task counter built-in. No I/O operation is involved. +- `model` - Provides a connection model abstraction of the TUIC protocol, with packet fragmentation and task counter built-in. No I/O operation is involved. - `marshal` - Provides methods for (un)marsalling the protocol in sync flavor. - `async_marshal` - Provides methods for (un)marsalling the protocol in async flavor. The root of the protocol abstraction is the [`Header`](https://docs.rs/tuic/latest/tuic/enum.Header.html). -## Semantic Versioning Syntax +## Versioning Syntax ``` 5.0.0-rc0 ^ ^ ^ ^ -| | | |- Pre-release version +| | | |- Pre-release version, considered to be unstable | | |---- Patch version, no breaking changes | |------ Major version of a specific TUIC protocol version, may have breaking changes |-------- TUIC protocol version @@ -37,4 +37,6 @@ tuic = "5.0.*" ## License -GNU General Public License v3.0 +This library is licensed under [GNU General Public License v3.0](https://github.com/EAimTY/tuic/blob/dev/LICENSE) + +However, the concept of the TUIC protocol is license-free. You can implement, modify, and redistribute the protocol without any restrictions, even for commercial use