概念

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 通訊協定時,根據主機:通訊埠位址建立連線。StreamDialerPacketDialer 類型會分別根據地址建立 StreamConnPacketConn 連線。撥號工具也可以巢狀排列。舉例來說,TLS 串流撥號器可使用 TCP 撥號器,建立由 TCP 連線支援的 StreamConn,然後再建立由 TCP StreamConn 支援的 TLS StreamConn。透過 TLS 撥號的 SOCKS5 撥號器可使用 TLS 撥號器,在進行 SOCKS5 連線至目標位址之前,先建立 TLS StreamConn 到 Proxy。

解析器

解析器 (dns.Resolver) 可在封裝基礎演算法或通訊協定時,回答 DNS 問題。解析器主要用於將網域名稱對應至 IP 位址。