מושגים

Outline SDK מבוסס על כמה מושגים בסיסיים, שמוגדרים כממשקים עם יכולת פעולה הדדית שמאפשרים קומפוזיציה ושימוש חוזר קל.

חיבורים

Connections מאפשרים תקשורת בין שתי נקודות קצה (endpoint) באמצעות תעבורה מופשטת. יש שני סוגים של חיבורים:

  • transport.StreamConn: חיבור מבוסס-סטרימינג, כמו TCP וסוג שקע SOCK_STREAM Posix.
  • transport.PacketConn: חיבור שמבוסס על חבילות נתונים, כמו UDP וסוג היציאה SOCK_DGRAM Posix. אנחנו משתמשים ב-Packet במקום ב-Datagram כי זו המוסכמה בספרייה הרגילה של Go.

אפשר לעטוף את החיבורים כדי ליצור חיבורים בתצוגת עץ באמצעות אמצעי תעבורה חדש. לדוגמה, StreamConn יכול להיות מעל TCP, מעל TLS מעל TCP, מעל HTTP מעל TLS מעל TCP, מעל QUIC, ועוד.

חייגנים

שירותי חיוג מאפשרים ליצור חיבורים לפי כתובת מסוג host:port, תוך אנקפסולציה של פרוטוקול התעבורה או שרת ה-proxy הבסיסי. הסוגים StreamDialer ו-PacketDialer יוצרים חיבורי StreamConn ו-PacketConn בהתאמה, בהתאם לכתובת. אפשר גם להטמיע בוררים. לדוגמה, מתקשר ב-TLS Stream יכול להשתמש במתקשר ב-TCP כדי ליצור StreamConn שמגובל על ידי חיבור TCP, ואז ליצור StreamConn ב-TLS שמגובל על ידי ה-StreamConn ב-TCP. מתקשר SOCKS5-over-TLS יכול להשתמש ב-TLS Dialer כדי ליצור את ה-StreamConn של TLS לשרת proxy לפני ביצוע החיבור SOCKS5 לכתובת היעד.

פותרי סכסוכים

פותרי DNS (dns.Resolver) מאפשרים לענות על שאלות DNS תוך אנקפסולציה של האלגוריתם או הפרוטוקול הבסיסי. פותרי ה-DNS משמשים בעיקר למיפוי של שמות דומיינים לכתובות IP.