Konsep

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 soket SOCK_STREAM Posix.
  • transport.PacketConn: koneksi berbasis datagram, seperti UDP dan jenis soket Posix SOCK_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.