Outline SDK dibuat berdasarkan beberapa konsep dasar, yang didefinisikan sebagai antarmuka yang dapat dioperasikan secara interoperabilitas yang memungkinkan komposisi dan penggunaan kembali yang mudah.
Koneksi
Koneksi memungkinkan komunikasi antara dua endpoint melalui transpor abstrak. Ada dua jenis koneksi:
transport.StreamConn
: koneksi berbasis streaming, seperti TCP dan jenis soketSOCK_STREAM
Posix.transport.PacketConn
: koneksi berbasis datagram, seperti UDP dan jenis soket PosixSOCK_DGRAM
. Kita menggunakan "Packet", bukan "Datagram" karena itu adalah konvensi dalam library standar Go.
Koneksi dapat digabungkan untuk membuat koneksi bertingkat melalui transpor baru.
Misalnya, StreamConn
dapat melalui TCP, melalui TLS melalui TCP, melalui HTTP melalui
TLS melalui TCP, melalui QUIC, di antara opsi lainnya.
Pemanggil
Dialer memungkinkan pembuatan koneksi dengan alamat host:port sekaligus
mengaitkan protokol transpor atau proxy yang mendasarinya.
Jenis StreamDialer
dan PacketDialer
masing-masing membuat koneksi StreamConn
dan PacketConn
dengan alamat yang diberikan. Telepon juga dapat disusun bertingkat.
Misalnya, TLS Stream Dialer dapat menggunakan dialer TCP untuk membuat StreamConn
yang didukung oleh koneksi TCP, lalu membuat StreamConn
TLS yang didukung oleh TCP
StreamConn
. Dialer SOCKS5-over-TLS dapat menggunakan Dialer TLS untuk membuat
StreamConn
TLS ke proxy sebelum melakukan koneksi SOCKS5 ke alamat
target.
Resolver
Resolver (dns.Resolver
) memungkinkan jawaban atas pertanyaan DNS sekaligus
mengaitkan algoritma atau protokol yang mendasarinya.
Resolver terutama digunakan untuk memetakan nama domain ke alamat IP.