مفاهیم

‫Outline SDK براساس برخی مفاهیم پایه ساخته شده است که به‌عنوان میاناهای هم‌کنش‌پذیر تعریف می‌شوند که اجازه می‌دهند به‌سادگی بنویسید و دوباره استفاده کنید.

اتصال‌ها

اتصال‌ها ارتباط بین دو نقطه پایانی را با حمل‌ونقلی انتزاعی فعال می‌کنند. دو نوع اتصال وجود دارد:

  • transport.StreamConn: اتصال مبتنی بر جاری‌سازی، مثل TCP و نوع پریز Posix SOCK_STREAM
  • transport.PacketConn: اتصال مبتنی بر داده‌نگار، مثل UDP و نوع پریز Posix SOCK_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 استفاده می‌شوند.