Quinn是IETF QUIC傳輸協議的純野性,異步兼容的實現。該項目是由Dirkjan Ochtman和Benjamin Saunders在2018年作為一個附帶項目創立的,此後已有30多個發行版。如果您在商業環境中使用Quinn,請考慮贊助該項目。
例子
$ cargo run --example server ./
$ cargo run --example client https://localhost:4433/Cargo.toml這將在服務當前工作目錄的環回地址上啟動HTTP 0.9服務器,並以客戶端獲取./Cargo.toml 。默認情況下,服務器生成一個自簽名的證書並將其存儲到磁盤上,客戶端將自動找到並信任它。
鏈接
Quinn端點對應於單個UDP套接字,無論使用多少連接。處理單個端點上的高匯總數據速率可能需要比大多數環境中默認配置的更大的UDP緩衝區。如果您在穩定的網絡鏈接上觀察到不穩定的延遲和/或吞吐量,請考慮增加所使用的緩衝尺寸。例如,您可以在將其傳遞給Quinn之前調整UDP套接字的SO_SNDBUF和SO_RCVBUF選項。請注意,某些平台(例如Linux)需要提高特權或修改的系統配置,以增加其UDP緩衝區尺寸。
默認情況下,Quinn客戶端驗證其連接到的服務器的加密身份。這樣可以防止主動的,路徑攻擊者攔截消息,但需要信任某些證書授權。出於許多目的,這可以通過使用Let's Encrypt中的服務器的證書來完成,並依靠客戶端的默認配置。
在某些情況下,包括點對點,on trip-on-privt-on-pers-on trim tim discure申請,或任何未用域名識別服務器的情況,這是不實際的。可以通過啟用rustls的dangerous_configuration功能並用手工構建Quinn ClientConfig來實現任意證書驗證邏輯。
當操作自己的證書授權沒有意義時,RCGEN可用於按需生成自簽名的證書。為了支持自動生成自簽名證書的服務器,應編寫其生成的證書以持續存儲並在將來的運行中重複使用它。
所有反饋歡迎。請隨時提交錯誤,文檔請求以及對問題跟踪器的任何其他反饋。
Quinn-Proto測試套件使用模擬IO進行可重複性,並避免在某些時間敏感的測試中長時間睡眠。如果設置了SSLKEYLOGFILE環境變量,則測試將使用Wireshark(例如Wireshark)等外部協議分析儀發射UDP數據包,並將每個連接客戶端的NSS兼容的密鑰日誌寫入該變量中指定的路徑。
發行時,我們板條箱發行的最低支持的Rust版本將始終至少6個月大。