SDK Outline được xây dựng dựa trên một số khái niệm cơ bản, được xác định là các giao diện có thể tương tác cho phép kết hợp và dễ dàng sử dụng lại.
Kết nối
Kết nối cho phép giao tiếp giữa hai điểm cuối qua một phương thức truyền tải trừu tượng. Có hai loại kết nối:
transport.StreamConn
: kết nối dựa trên luồng, như TCP và loại ổ cắm PosixSOCK_STREAM
.transport.PacketConn
: kết nối dựa trên datagram, chẳng hạn như UDP và loại ổ cắm PosixSOCK_DGRAM
. Chúng ta sử dụng "Gói" thay vì "Gói dữ liệu" vì đó là quy ước trong thư viện tiêu chuẩn Go.
Bạn có thể gói các kết nối để tạo các kết nối lồng nhau qua một phương thức truyền tải mới.
Ví dụ: StreamConn
có thể qua TCP, qua TLS qua TCP, qua HTTP qua TLS qua TCP, qua QUIC, cùng với các tuỳ chọn khác.
Trình quay số
Trình quay số cho phép tạo kết nối khi có địa chỉ máy chủ:cổng trong khi đóng gói giao thức proxy hoặc truyền tải cơ bản.
Các loại StreamDialer
và PacketDialer
tạo các kết nối StreamConn
và PacketConn
tương ứng, với một địa chỉ. Bạn cũng có thể lồng các trình quay số.
Ví dụ: Trình quay số luồng TLS có thể sử dụng trình quay số TCP để tạo StreamConn
được kết nối TCP hỗ trợ, sau đó tạo StreamConn
TLS được StreamConn
TCP hỗ trợ. Trình quay số SOCKS5 qua TLS có thể sử dụng Trình quay số TLS để tạo StreamConn
TLS cho proxy trước khi thực hiện kết nối SOCKS5 đến địa chỉ mục tiêu.
Trình phân giải
Trình phân giải (dns.Resolver
) cho phép trả lời các câu hỏi về DNS trong khi đóng gói thuật toán hoặc giao thức cơ bản.
Trình phân giải chủ yếu dùng để liên kết tên miền với địa chỉ IP.