函式庫 / SDK
quic-go/quic-go avatar
quic-go/quic-go

quic-go:純 Go 實作的 QUIC 與 HTTP/3

此專案圍繞「A production-ready QUIC implementation in pure Go. FIPS 140-3 Starting with v0.60, quic-go supports use in FIPS 140-3 environments when built with Go 1.26 or newer, using Go standard library cryptography for the QUIC code paths relevant in FIPS mode; see FIPS140.md for details.」建置,聚焦實際場景的開源實作,提供可重用的工具鏈與整合方式。

11,769 個 Star1,643 個 ForkGoMIT

秒懂

它是什麼?
一個以 Go 實作 QUIC、HTTP/3、QPACK 與 HTTP 資料包的儲存庫,並支援額外的 QUIC 擴充與 FIPS 140-3。
適合誰用?
此儲存庫界定了協定範圍,列出使用專案,設定支援最近兩個 Go 版本的發布政策,並以 MIT 授權釋出程式碼,同時將 logo 與品牌資產分開管理。 採用前請先以 quic-go-quic-go-deep-analysis 的 README 所列入口核對輸入、輸出、授權與尚未說明的限制,再決定是否納入正式流程。
可以商用嗎?
可以。MIT 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
還在維護嗎?
有在維護。儲存庫最近一次提交在 1 天前。
用什麼語言寫的?
主要是 Go(依據 GitHub 的語言統計)。

以上回答依據專案的 GitHub 資料(最近同步於 2026年9月14日)與我們的分析,不構成法律意見。

開源專案深度解析

協定範圍與 RFC

quic-go 是一個用 Go 實作的 QUIC 協定實作,以 RFC 9000、RFC 9001 與 RFC 9002 為基礎。同一個程式碼庫也提供 RFC 9114 所規範的 HTTP/3 支援,包含 RFC 9204 的 QPACK 標頭壓縮與 RFC 9297 的 HTTP 資料包。儲存庫元資料將專案描述為純 Go 的生產級 QUIC 實作。README 直接列出這些 RFC,但沒有描述內部架構,也沒有提供效能數據。

quic-go、RFC 9000、RFC 9001、RFC 9002、HTTP/3、FIPS140.md、Go 1.26 是本篇核對的專案記號。這一段的判讀要落在來源明列的介面,而不是把專案名稱當成能力保證。 本節所談的 協定範圍與 RFC 應與 quic-go、RFC 9000、RFC 9001、RFC 9002、HTTP/3、FIPS140.md、Go 1.26 一起理解:若輸入、輸出或執行條件在 README 中有明確例子,便以例子為準;若只出現在說明、版本紀錄或路線圖,就不能推導成目前預設行為。對照時可記下 quic-go-quic-go-deep-analysis、協定範圍與 RFC 與本段列出的名稱,讓後續閱讀能回到相同位置。這種逐項對照也能看出文件涵蓋了什麼,以及哪些限制仍沒有答案。

基礎 RFC 之外的擴充

在核心 QUIC 與 HTTP/3 RFC 之外,README 還列出對不可靠資料包擴充(RFC 9221)、資料包分組層路徑 MTU 探索(RFC 8899)與 QUIC 版本 2(RFC 9369)的支援。它亦追蹤兩份關於 qlog 事件記錄的草案規範,即 draft-ietf-quic-qlog-main-schema 與 draft-ietf-quic-qlog-quic-events,以及兩份關於 QUIC 串流重設與部分交付的草案修訂,即 draft-ietf-quic-reliable-stream-reset-07 與 -09。README 沒有說明這些功能是否預設啟用,也沒有說明如何設定。

quic-go、RFC 9000、RFC 9001、RFC 9002、HTTP/3、FIPS140.md、Go 1.26 是本篇核對的專案記號。從 README 的安排來看,這個元件處理的是明確的輸入與輸出關係,使用者可以沿著列出的入口逐步核對。 本節所談的 基礎 RFC 之外的擴充 應與 quic-go、RFC 9000、RFC 9001、RFC 9002、HTTP/3、FIPS140.md、Go 1.26 一起理解:若輸入、輸出或執行條件在 README 中有明確例子,便以例子為準;若只出現在說明、版本紀錄或路線圖,就不能推導成目前預設行為。對照時可記下 quic-go-quic-go-deep-analysis、基礎 RFC 之外的擴充 與本段列出的名稱,讓後續閱讀能回到相同位置。這種逐項對照也能看出文件涵蓋了什麼,以及哪些限制仍沒有答案。

WebTransport 與文件

WebTransport over HTTP/3(基於 draft-ietf-webtrans-http3)並非在此儲存庫中實作。README 指向 webtransport-go,表示該功能由這個獨立專案提供。詳細的使用文件發佈於 quic-go.net,文件路徑為 /docs/。README 中沒有安裝指令、快速入門範例或 API 使用範例,也沒有討論本儲存庫對 WebTransport 的進一步計畫。

quic-go、RFC 9000、RFC 9001、RFC 9002、HTTP/3、FIPS140.md、Go 1.26 是本篇核對的專案記號。文件沒有替讀者補上環境差異、效能承諾或支援期限,因此這些部分應保留為待確認事項。 本節所談的 WebTransport 與文件 應與 quic-go、RFC 9000、RFC 9001、RFC 9002、HTTP/3、FIPS140.md、Go 1.26 一起理解:若輸入、輸出或執行條件在 README 中有明確例子,便以例子為準;若只出現在說明、版本紀錄或路線圖,就不能推導成目前預設行為。對照時可記下 quic-go-quic-go-deep-analysis、WebTransport 與文件 與本段列出的名稱,讓後續閱讀能回到相同位置。這種逐項對照也能看出文件涵蓋了什麼,以及哪些限制仍沒有答案。

FIPS 140-3 支援

從 v0.60 版本開始,當使用 Go 1.26 或更新版本建置時,quic-go 支援在 FIPS 140-3 環境中使用。該模式下,它在與 FIPS 相關的 QUIC 程式碼路徑中使用 Go 標準函式庫的密碼學實作。README 指向 FIPS140.md 取得細節,但沒有聲稱專案本身已獲得 FIPS 認證,也沒有說明 FIPS 模式是否會改變公共 API 或需要除 Go 版本之外的特殊建置旗標。

quic-go、RFC 9000、RFC 9001、RFC 9002、HTTP/3、FIPS140.md、Go 1.26 是本篇核對的專案記號。對實際採用有影響的細節包括命令名稱、設定鍵、模型或協定名稱,以及它們在文件中的上下文。 本節所談的 FIPS 140-3 支援 應與 quic-go、RFC 9000、RFC 9001、RFC 9002、HTTP/3、FIPS140.md、Go 1.26 一起理解:若輸入、輸出或執行條件在 README 中有明確例子,便以例子為準;若只出現在說明、版本紀錄或路線圖,就不能推導成目前預設行為。對照時可記下 quic-go-quic-go-deep-analysis、FIPS 140-3 支援 與本段列出的名稱,讓後續閱讀能回到相同位置。這種逐項對照也能看出文件涵蓋了什麼,以及哪些限制仍沒有答案。

使用 quic-go 的專案

README 中有一個使用 quic-go 的專案表格,包含連結與簡短說明。列表中包括 AdGuardHome、Caddy、cloudflared、go-libp2p、Syncthing、Traefik、v2ray-core、Hysteria 與 OONI Probe 等。表格中的星號數量是各專案的 GitHub 星號,README 沒有說明這些專案具體如何使用 quic-go,只有一行描述。它還要求專案維護者透過發送拉取請求來將專案加入列表。

quic-go、RFC 9000、RFC 9001、RFC 9002、HTTP/3、FIPS140.md、Go 1.26 是本篇核對的專案記號。只要把這些記號和該專案的原始段落放在一起閱讀,就能分辨已實作的描述、路線圖內容與尚未說明的邊界。 本節所談的 使用 quic-go 的專案 應與 quic-go、RFC 9000、RFC 9001、RFC 9002、HTTP/3、FIPS140.md、Go 1.26 一起理解:若輸入、輸出或執行條件在 README 中有明確例子,便以例子為準;若只出現在說明、版本紀錄或路線圖,就不能推導成目前預設行為。對照時可記下 quic-go-quic-go-deep-analysis、使用 quic-go 的專案 與本段列出的名稱,讓後續閱讀能回到相同位置。這種逐項對照也能看出文件涵蓋了什麼,以及哪些限制仍沒有答案。

發布政策與貢獻

發布政策規定,quic-go 始終支援最新的兩個 Go 版本。貢獻部分邀請新貢獻者,並指出帶有 help wanted 標籤的問題適合首次參與,且這些問題是自包含的。README 也表示,可以透過開啟 issue 或留下評論來提問。它沒有說明具體的貢獻流程、程式碼審查方式或維護者結構。

quic-go、RFC 9000、RFC 9001、RFC 9002、HTTP/3、FIPS140.md、Go 1.26 是本篇核對的專案記號。這一段的判讀要落在來源明列的介面,而不是把專案名稱當成能力保證。 本節所談的 發布政策與貢獻 應與 quic-go、RFC 9000、RFC 9001、RFC 9002、HTTP/3、FIPS140.md、Go 1.26 一起理解:若輸入、輸出或執行條件在 README 中有明確例子,便以例子為準;若只出現在說明、版本紀錄或路線圖,就不能推導成目前預設行為。對照時可記下 quic-go-quic-go-deep-analysis、發布政策與貢獻 與本段列出的名稱,讓後續閱讀能回到相同位置。這種逐項對照也能看出文件涵蓋了什麼,以及哪些限制仍沒有答案。

授權與品牌資產

程式碼以 MIT 授權釋出。授權摘錄授予使用、複製、修改、合併、發佈、散佈、再授權與出售軟體副本的權利,條件是在所有副本或重要部分中包含上述版權聲明與授權聲明。版權行列出了 quic-go 作者與 Google, Inc.。授權也包含標準免責聲明,即軟體依現狀提供,不附帶任何擔保。README 說明 logo 與品牌資產不受 MIT 授權覆蓋,其使用政策在 assets/LICENSE.md 中另行規定。

quic-go、RFC 9000、RFC 9001、RFC 9002、HTTP/3、FIPS140.md、Go 1.26 是本篇核對的專案記號。從 README 的安排來看,這個元件處理的是明確的輸入與輸出關係,使用者可以沿著列出的入口逐步核對。 本節所談的 授權與品牌資產 應與 quic-go、RFC 9000、RFC 9001、RFC 9002、HTTP/3、FIPS140.md、Go 1.26 一起理解:若輸入、輸出或執行條件在 README 中有明確例子,便以例子為準;若只出現在說明、版本紀錄或路線圖,就不能推導成目前預設行為。對照時可記下 quic-go-quic-go-deep-analysis、授權與品牌資產 與本段列出的名稱,讓後續閱讀能回到相同位置。這種逐項對照也能看出文件涵蓋了什麼,以及哪些限制仍沒有答案。

quic-go 的 RFC 9000、RFC 9114、webtransport-go 與 FIPS140.md 各自界定不同範圍。README 明確指出 WebTransport 在獨立專案中,亦沒有把 Go 1.26 的 FIPS 140-3 使用支援寫成認證,因此閱讀時要分開記錄協定支援、建置條件與認證狀態。

編輯結論

此儲存庫界定了協定範圍,列出使用專案,設定支援最近兩個 Go 版本的發布政策,並以 MIT 授權釋出程式碼,同時將 logo 與品牌資產分開管理。 採用前請先以 quic-go-quic-go-deep-analysis 的 README 所列入口核對輸入、輸出、授權與尚未說明的限制,再決定是否納入正式流程。

官方來源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
社群筆記

社群筆記