আউটলাইন SDK কিছু মৌলিক ধারণার উপর নির্মিত, যা আন্তঃপরিচালনাযোগ্য ইন্টারফেস হিসাবে সংজ্ঞায়িত করা হয়েছে যা রচনা এবং সহজে পুনরায় ব্যবহারের অনুমতি দেয়।
সংযোগ
সংযোগগুলি একটি বিমূর্ত পরিবহনের মাধ্যমে দুটি প্রান্তের মধ্যে যোগাযোগ সক্ষম করে। সংযোগ দুটি ধরনের আছে:
-
transport.StreamConn
: স্ট্রিম-ভিত্তিক সংযোগ, যেমন TCP এবংSOCK_STREAM
Posix সকেট প্রকার। -
transport.PacketConn
: ডেটাগ্রাম-ভিত্তিক সংযোগ, যেমন UDP এবংSOCK_DGRAM
Posix সকেট প্রকার। আমরা "ডেটাগ্রাম" এর পরিবর্তে "প্যাকেট" ব্যবহার করি কারণ এটি গো স্ট্যান্ডার্ড লাইব্রেরির কনভেনশন।
একটি নতুন পরিবহনে নেস্টেড সংযোগ তৈরি করতে সংযোগগুলি মোড়ানো যেতে পারে। উদাহরণ স্বরূপ, একটি StreamConn
TCP-এর উপরে, TCP-এর উপর TLS-এর উপরে, TCP-এর উপর TLS-এর উপরে HTTP-এর উপরে, QUIC-এর উপরে, অন্যান্য বিকল্পগুলির মধ্যে হতে পারে।
ডায়ালার
ডায়ালারগুলি অন্তর্নিহিত পরিবহন বা প্রক্সি প্রোটোকল এনক্যাপসুলেট করার সময় একটি হোস্ট:পোর্ট ঠিকানা দেওয়া সংযোগ তৈরি করতে সক্ষম করে। StreamDialer
এবং PacketDialer
প্রকারগুলি একটি ঠিকানা দেওয়া যথাক্রমে StreamConn
এবং PacketConn
সংযোগ তৈরি করে। ডায়ালারও নেস্ট করা যায়। উদাহরণ স্বরূপ, একটি TLS স্ট্রীম ডায়ালার একটি TCP ডায়ালার ব্যবহার করে একটি TCP সংযোগ দ্বারা সমর্থিত একটি StreamConn
তৈরি করতে পারে, তারপর TCP StreamConn
দ্বারা সমর্থিত একটি TLS StreamConn
তৈরি করতে পারে। একটি SOCKS5-ওভার-TLS ডায়লার লক্ষ্য ঠিকানায় SOCKS5 সংযোগ করার আগে প্রক্সিতে TLS StreamConn
তৈরি করতে TLS ডায়ালার ব্যবহার করতে পারে।
সমাধানকারী
সমাধানকারী ( dns.Resolver
) অন্তর্নিহিত অ্যালগরিদম বা প্রোটোকল এনক্যাপসুলেট করার সময় DNS প্রশ্নের উত্তর দিতে সক্ষম। সমাধানকারীরা প্রাথমিকভাবে আইপি ঠিকানায় ডোমেন নাম ম্যাপ করতে ব্যবহৃত হয়।