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.