Outline SDK براساس برخی مفاهیم پایه ساخته شده است که بهعنوان میاناهای همکنشپذیر تعریف میشوند که اجازه میدهند بهسادگی بنویسید و دوباره استفاده کنید.
اتصالها
اتصالها ارتباط بین دو نقطه پایانی را با حملونقلی انتزاعی فعال میکنند. دو نوع اتصال وجود دارد:
-
transport.StreamConn
: اتصال مبتنی بر جاریسازی، مثل TCP و نوع پریز PosixSOCK_STREAM
-
transport.PacketConn
: اتصال مبتنی بر دادهنگار، مثل UDP و نوع پریز PosixSOCK_DGRAM
. ما بهجای «دادهنگار» از «بسته» استفاده میکنیم زیرا در کتابخانه استاندارد Go مرسوم است.
اتصالها میتوانند بستهبندی شوند تا اتصالهای تودرتویی روی حملونقل جدید ساخته شود.
برای نمونه، StreamConn
میتواند روی TCP، روی «امنیت لایه انتقال» روی TCP، روی HTTP روی
«امنیت لایه انتقال» روی TCP، روی QUIC، بین گزینههای دیگر باشد.
شمارهگیرها
شمارهگیرها ساختن اتصالهای نشانی میزبان:درگاه ارائهشده را فعال میکنند، همچنانکه
انتقال زیرین یا پروتکل پراکسی را بستهبندی میکنند.
انواع StreamDialer
و PacketDialer
باتوجهبه نشانی دادهشده بهترتیب اتصالهای StreamConn
و PacketConn
را میسازند. شمارهگیرها میتوانند لانهگیری هم شوند.
برای نمونه، «شمارهگیر جاریسازی امنیت لایه انتقال» میتواند از شمارهگیر TCP استفاده کند تا StreamConn
را بسازد
که با اتصال TCP پشتیبانی میشود، سپس «امنیت لایه انتقال» StreamConn
را بسازد که با TCP
StreamConn
پشتیبانی میشود. «شمارهگیر SOCKS5-over-TLS» میتواند برای «شمارهگیر امنیت لایه انتقال» استفاده شود تا
«امنیت لایه انتقال» StreamConn
را برای پراکسی بسازد، پیشاز اینکه اتصال SOCKS5 را در نشانی
هدف ایجاد کند.
رافعها
رافعها (dns.Resolver
) پاسخدهی به پرسشهای ساناد را فعال میکنند، همچنانکه
پروتکل یا الگوریتم زیرین را بستهبندی میکنند.
رافعها اصولاً برای تخصیص دادن نامهای دامنه به نشانیهای IP استفاده میشوند.