TURN سرور پروٹوکول Traversal Using Relays around NAT کا ایک سرور ہے جو دو پیرز کے درمیان میڈیا ٹریفک کو ریلے کرتا ہے جب براہ راست P2P کنکشن ممکن نہ ہو۔ IETF RFC 5766, 2010 کے مطابق، TURN سرور WebRTC کے ICE عمل میں آخری فال بیک کے طور پر کام کرتا ہے، جو Symmetric NAT اور کارپوریٹ فائر والز کے باوجود بھی گارنٹیڈ کنکشن کو یقینی بناتا ہے۔
اہم نکات
TURN سرور (Traversal Using Relays around NAT) ایک نیٹ ورک سروس ہے جو RFC 5766 میں بیان کی گئی اور RFC 8656 میں اپ ڈیٹ کی گئی، جو دو کلائنٹس کے درمیان UDP اور TCP ٹریفک کو ریلے کرتی ہے جب NAT یا فائر وال کی پابندیوں کی وجہ سے براہ راست P2P کنکشن ممکن نہ ہو۔ WebRTC فن تعمیر میں، TURN سرور آخری فال بیک میکانزم کے طور پر کام کرتا ہے، کسی بھی نیٹ ورک کے حالات میں کنیکٹیویٹی کو یقینی بناتا ہے۔
STUN کے برعکس، جو صرف کلائنٹ کو اس کا بیرونی پتہ بتاتا ہے، TURN سرور ڈیٹا کی ترسیل میں فعال طور پر حصہ لیتا ہے۔ ہر پیر TURN سرور سے کنکشن قائم کرتا ہے اور اسے اپنا میڈیا ڈیٹا بھیجتا ہے۔ TURN سرور، بدلے میں، اس ڈیٹا کو دوسرے پیر کو آگے بھیجتا ہے۔ نتیجے کے طور پر، پیرز کے درمیان کوئی براہ راست کنکشن نہیں ہوتا — تمام ٹریفک ریلے سرور کے ذریعے گزرتی ہے، جو سخت ترین NAT پابندیوں کے تحت بھی ترسیل کو یقینی بناتی ہے۔
TURN STUN پروٹوکول کی ایک توسیع ہے۔ TURN پیغامات ایک ہی 20 بائٹ ہیڈر اور وصف میکانزم کا استعمال کرتے ہیں۔ کلیدی فرق یہ ہے کہ TURN نئی پیغام کی اقسام (Allocate, Refresh, Send, Data, CreatePermission, ChannelBind) اور ریلے مختص کے انتظام کے لیے ضروری صفات کی وضاحت کرتا ہے۔ کلائنٹ Allocate پیغام کے ذریعے TURN سرور پر ایک مختص بناتا ہے، ایک ریلےڈ ٹرانسپورٹ پتہ (relayed transport address) حاصل کرتا ہے اور سرور کے ذریعے ڈیٹا بھیجنے اور وصول کرنے کے لیے اسے استعمال کرتا ہے۔
TURN سرور مندرجہ ذیل اقدامات کی ترتیب کے مطابق کام کرتا ہے۔ کلائنٹ تصدیق (username, credential) کے ساتھ Allocate درخواست بھیجتا ہے۔ سرور اسناد کی تصدیق کرتا ہے اور ایک مختص بناتا ہے — کلائنٹ کے لیے ایک ریلےڈ پتے (TURN سرور پر IP:پورٹ) کا عارضی بائنڈنگ۔ سرور ایک ریلےڈ ٹرانسپورٹ پتہ کے ساتھ Allocate جواب واپس کرتا ہے — وہ پتہ جسے دوسرے پیر TURN سرور کے ذریعے اس کلائنٹ کو ڈیٹا بھیجنے کے لیے استعمال کریں گے۔
مختص بننے کے بعد، کلائنٹ Send Indication پیغامات یا چینلز (ChannelBind) کے ذریعے TURN سرور کے ذریعے ڈیٹا بھیج سکتا ہے۔ کلائنٹ سے ڈیٹا وصول کرنے پر، TURN سرور اجازتوں (مخصوص پیرز کو ڈیٹا بھیجنے کی اجازت) کی جانچ کرتا ہے اور ڈیٹا کو ہدف پیر کو ریلے کرتا ہے۔ آنے والا ڈیٹا وصول کرنے کے لیے، کلائنٹ کو پہلے اس پیر کے لیے اجازت بنانی ہوگی جس سے وہ ڈیٹا کی توقع کرتا ہے؛ بصورت دیگر TURN سرور آنے والا پیکٹ ضائع کر دے گا۔ ایک اجازت پیر کے IP پتے کی وضاحت کرتے ہوئے CreatePermission پیغام کے ذریعے بنائی جاتی ہے۔
TURN سرور پر مختص کا محدود زندگی کا دورانیہ ہوتا ہے — ڈیفالٹ طور پر 10 منٹ۔ کلائنٹ کو مختص بڑھانے کے لیے وقتاً فوقتاً Refresh درخواست بھیجنی چاہیے۔ زندگی کا دورانیہ LIFETIME وصف میں سیکنڈ میں بتایا جاتا ہے۔ اگر کوئی Refresh موصول نہیں ہوتا، تو سرور مختص کو ہٹا دیتا ہے اور ریلےڈ پتہ خالی کر دیتا ہے۔ تجویز کردہ ریفریش وقفہ — 5 منٹ (300 سیکنڈ) Refresh پیکٹ کے نقصان سے بچاؤ کے لیے۔
WebRTC میں، TURN سرور iceServers صف میں RTCPeerConnection ترتیب کے ذریعے ترتیب دیا جاتا ہے۔ TURN سرورز UDP، TCP یا TLS ٹرانسپورٹ استعمال کر سکتے ہیں۔ تصدیق عام طور پر ایپلیکیشن سرور پر محدود میعاد کے ساتھ پیدا کردہ وقت کی حد بند اسناد (TURN اسناد) استعمال کرتی ہے۔
JavaScript میں HMAC-SHA1 ٹوکن تصدیق کے ساتھ TURN سرور ترتیب کی ایک مثال پر غور کریں۔
async function createPeerConnection(turnServerUrl) {
const credentials = await fetchTurnCredentials();
const config = {
iceServers: [
{
urls: "stun:stun.l.google.com:19302"
},
{
urls: turnServerUrl,
username: credentials.username,
credential: credentials.credential
}
],
iceTransportPolicy: "all"
};
return new RTCPeerConnection(config);
}
async function fetchTurnCredentials() {
const response = await fetch("/api/turn-credentials");
return response.json();
}
const turnUrl = "turn:turn.example.com:3478";
const pc = await createPeerConnection(turnUrl);
اس مثال میں، TURN سرور ایک STUN سرور کے ساتھ ایک ہی ICE ترتیب میں بتایا گیا ہے۔ ICE عمل پہلے host امیدواروں اور STUN سے حاصل کردہ srflx امیدواروں کو استعمال کرنے کی کوشش کرتا ہے۔ اگر براہ راست کنکشن ناکام ہوتا ہے، ICE خود بخود TURN سرور سے حاصل کردہ relay امیدوار پر سوئچ کر جاتا ہے۔ پیرامیٹر iceTransportPolicy: "all" relay امیدواروں کو فعال کرتا ہے — متبادل قدر "relay" TURN کے علاوہ تمام امیدواروں کو غیر فعال کر دیتی ہے، جو جانچ کے لیے مفید ہے۔
غیر مجاز استعمال کو روکنے کے لیے، TURN سرور کو تصدیق کی ضرورت ہوتی ہے۔ معیاری طریقہ HMAC-SHA1 کا استعمال کرتے ہوئے ایپلیکیشن سرور پر وقت کی حد بند اسناد پیدا کرنا ہے۔ ایپلیکیشن سرور TURN سرور کی خفیہ کلید سے صارف نام کو انکرپٹ کرتا ہے اور صارف نام اور اسناد کلائنٹ کو واپس کرتا ہے۔ کلائنٹ انہیں RTCPeerConnection ترتیب میں دیتا ہے، اور براؤزر TURN سرور پر مختص بناتے وقت انہیں استعمال کرتا ہے۔ جب اسناد کی میعاد ختم ہوتی ہے، کلائنٹ ایپلیکیشن سرور سے نئی حاصل کرتا ہے۔
TURN اور STUN متعلقہ NAT ٹراورسل کاموں کو حل کرتے ہیں لیکن میکانزم اور لاگت میں بنیادی طور پر مختلف ہیں۔ TURN ٹریفک کو ریلے کرتا ہے، ثالث کا کردار ادا کرتا ہے، جبکہ STUN صرف براہ راست P2P کنکشن کے لیے بیرونی پتہ تعین کرنے میں مدد کرتا ہے۔ ان کے درمیان انتخاب پیرز کی NAT قسم اور کارکردگی کی ضروریات پر منحصر ہے۔
| معیار | STUN | TURN |
|---|---|---|
| میکانزم | بیرونی پتہ دریافت | ٹریفک ریلے |
| کنکشن | براہ راست P2P | ریلے سرور کے ذریعے |
| تاخیر | کم سے کم (براہ راست راستہ) | اضافی (ریلے کے ذریعے) |
| سرور بوجھ | صرف ابتدائی درخواستیں | مسلسل ٹریفک ریلے |
| لاگت | کم (چند درخواستیں) | زیادہ (سرور ٹریفک) |
| Symmetric NAT سپورٹ | نہیں | ہاں |
| بینڈوتھ | صرف P2P چینل تک محدود | سرور چینل تک محدود |
عملی طور پر، TURN سرور صرف ان کنکشنز کے لیے استعمال ہوتا ہے جہاں P2P ممکن نہ ہو۔ Google (WebRTC اعدادوشمار، 2023) کے مطابق، تقریباً 15–20% تمام WebRTC کنکشنز کو TURN ریلے کی ضرورت ہوتی ہے۔ باقی 80–85% STUN یا مقامی host امیدواروں کے ذریعے کنیکٹیویٹی قائم کرتے ہیں۔ ایپلیکیشن ڈیزائن کرتے وقت، آپ کو کل میڈیا والیوم کے 15–20% پر TURN ٹریفک کے لیے بجٹ بنانا چاہیے اگر آپ کے سامعین میں کارپوریٹ نیٹ ورکس اور سخت NAT پابندیوں والے علاقوں کے صارفین شامل ہیں۔
TURN سرور اہم وسائل استعمال کرتا ہے کیونکہ تمام میڈیا ٹریفک اس کے ذریعے گزرتی ہے۔ TURN ریلے کے ساتھ ہر فعال کال کل میڈیا ٹریفک تھرو پٹ (آنے والا + جانے والا سلسلہ) کے برابر سرور بینڈوتھ استعمال کرتی ہے۔ HD ویڈیو کال (720p) کے لیے، یہ ہر کنکشن پر ہر سمت میں 1.5–2.5 Mbps ہو سکتا ہے، جو TURN سرور کے ذریعے کل 3–5 Mbps ٹریفک بنتا ہے۔
TURN انفراسٹرکچر کی تعیناتی کے لیے کئی اختیارات ہیں۔ مفت عوامی TURN سرورز کوالٹی اور سیکیورٹی گارنٹی کی کمی کی وجہ سے پروڈکشن کے لیے تجویز نہیں کیے جاتے۔ تجارتی فراہم کنندگان (Twilio Network Traversal Service, Xirsys, Metered) فی گیگا بائٹ قیمت پر TURN بطور سروس پیش کرتے ہیں — عام لاگت $0.005–0.02 فی گیگا بائٹ ہے۔ coturn (اوپن سورس TURN سرور) کے ساتھ سیلف ہوسٹنگ کے لیے کافی بینڈوتھ صلاحیت اور مانیٹرنگ سیٹ اپ والا سرور درکار ہے۔
TURN سرور حل منتخب کرتے وقت، صارف کے جغرافیہ، ٹریفک لاگت اور سیکیورٹی ضروریات پر غور کریں۔ ہزاروں بیک وقت کالوں والی ایپلیکیشنز کے لیے، وسیع چینل (1+ Gbps) والے سرورز پر سیلف ہوسٹڈ coturn تجارتی فراہم کنندگان سے زیادہ لاگت مؤثر ہو سکتا ہے۔ درجنوں صارفین والے چھوٹے پروجیکٹس کے لیے، انتظامیہ اور مانیٹرنگ کے اخراجات نہ ہونے کی وجہ سے تجارتی TURN خدمات ترجیحی ہیں۔
اکثر پوچھے گئے سوالات
TURN سرور ایک ثالث ہے جو صارفین کے درمیان ڈیٹا ریلے کرتا ہے جب وہ براہ راست کنیکٹ نہیں ہو سکتے۔ اگر دو کمپیوٹر ایسے روٹرز کے پیچھے ہیں جو براہ راست کنکشن کی اجازت نہیں دیتے، تو TURN سرور ایک سے ڈیٹا وصول کرتا ہے اور دوسرے کو بھیجتا ہے۔
TURN سرور اس وقت درکار ہوتا ہے جب WebRTC کال کے دونوں شرکاء Symmetric NAT یا کارپوریٹ فائر والز کے پیچھے ہوں جو P2P ٹریفک کو روکتی ہیں۔ ایسے معاملات میں، STUN مدد نہیں کر سکتا، اور ICE عمل خود بخود TURN سرور سے حاصل کردہ relay امیدوار پر سوئچ کر جاتا ہے۔
STUN صرف کمپیوٹر کو براہ راست کنکشن کے لیے اس کا بیرونی پتہ دکھاتا ہے۔ TURN اپنے ذریعے ٹریفک کو فعال طور پر ریلے کرتا ہے۔ STUN کوئی سرور بوجھ نہیں بناتا، جبکہ TURN بینڈوتھ استعمال کرتا ہے۔ STUN صرف مخصوص NAT اقسام کے ساتھ کام کرتا ہے؛ TURN ہمیشہ کام کرتا ہے لیکن مہنگا ہے۔
TURN سرور کی قیمت فراہم کنندہ اور ٹریفک والیوم پر منحصر ہے۔ Twilio TURN کے ذریعے ریلے کردہ ٹریفک کے فی GB تقریباً $0.005–0.01 چارج کرتا ہے۔ Xirsys فی GB $0.007 سے چارج کرتا ہے۔ coturn کی سیلف ہوسٹنگ کے لیے کم از کم 100 Mbps بینڈوتھ والا سرور درکار ہے، جس کی قیمت ہوسٹنگ فراہم کنندہ پر منحصر ہے۔
آپ کا اپنا TURN سرور coturn (اوپن سورس) استعمال کرکے ترتیب دیا جا سکتا ہے۔ انسٹالیشن میں پورٹس، تصدیق (مشترکہ راز)، TLS سرٹیفکیٹس اور فائر وال کو ترتیب دینا شامل ہے۔ بنیادی ترتیب فائل میں listening-port، realm، user اور fingerprint کے پیرامیٹرز ہوتے ہیں۔ ترتیب کے بعد، سرور TLS کے لیے turn: یا turns: کے سابقے کے ساتھ WebRTC iceServers میں بتایا جاتا ہے۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں