Outline SDK 是根據一些基本概念建構而成,這些概念定義為可互通的介面,可讓您進行組合並輕鬆重複使用。
連線
連線可讓兩個端點透過抽象傳輸通訊。連線分為兩種類型:
transport.StreamConn
:以串流為基礎的連線,例如 TCP 和SOCK_STREAM
Posix 套接字類型。transport.PacketConn
:以資料包為基礎的連線,例如 UDP 和SOCK_DGRAM
Posix 套接字類型。我們使用「Packet」而非「Datagram」,這是 Go 標準程式庫的慣例。
您可以包裝連線,藉此透過新傳輸建立巢狀連線。舉例來說,StreamConn
可以透過 TCP、TLS 和 TCP、HTTP 和 TLS 和 TCP、QUIC 等其他選項傳輸。
撥號程式
撥號器可在封裝基礎傳輸或 Proxy 通訊協定時,根據主機:通訊埠位址建立連線。StreamDialer
和 PacketDialer
類型會分別根據地址建立 StreamConn
和 PacketConn
連線。撥號工具也可以巢狀排列。舉例來說,TLS 串流撥號器可使用 TCP 撥號器,建立由 TCP 連線支援的 StreamConn
,然後再建立由 TCP StreamConn
支援的 TLS StreamConn
。透過 TLS 撥號的 SOCKS5 撥號器可使用 TLS 撥號器,在進行 SOCKS5 連線至目標位址之前,先建立 TLS StreamConn
到 Proxy。
解析器
解析器 (dns.Resolver
) 可在封裝基礎演算法或通訊協定時,回答 DNS 問題。解析器主要用於將網域名稱對應至 IP 位址。