اگر علاقه مند به مبحث VoIP هستید یا در این حوزه مشغول به کار هستید ، بارها و بارها نام پروتکل SIP را شنیده اید و از آن استفاده نموده اید. پروتکل ها در کنار نرم افزار های voip ، لازمه برقراری ارتباط در سیستم voip هستند. پروتکل SIP نیز یکی از پروتکل های اساسی voip هست که از بخش های مختلفی تشکیل شده است.
پروتکل SIP چیست؟
پروتکل SIP یک پروتکل سیگنالینگ ارتباطی است که بهصورت گسترده برای کنترل Sessionهای ارتباطات Multimedia استفاده میشود.
از SIP در کار کنترل ارتباطاتی مانند انتقال صدا و ویدئو بر روی شبکههای IP استفاده میشود. پروتکل SIP کنترل شروع ، تغییر و پایان session را انجام میدهد.
المانهای شبکه SIP
User Agent، یک واحد منطقی برای ایجاد و دریافت message مانند http در header پیامهای دریافتی و ارسال اطلاعاتی درباره User Agent است.
Proxy Server، یک واحد منطقی که نقش میانجی یا در اصل روتر را بازی میکند زمانی که ما بخواهیم یک سری policy را روی ارتباطات وضع کنیم درواقع از پروکسی سرور استفاده میکنیم.
Registrar یک SIP endpoint است که درخواستهای REGISTER را Accept میکند در واقع زمانی که در یک endpoint رجیستر میکنیم آن endpoint اطلاعات ما را در یک دیتا بیس ذخیره میکند.
Redirect Server، یک User agent server است که یک response با کد 300 ایجاد میکند که باعث میشود یک کلاینت با یک URI ارتباط مستقیم برقرار کند. sip redirect gateway، یک اینترفیس است برای ارتباط با شبکه هایی با پروتکل های متفاوت مثل مخابرات.
Session border controller، یک دستگاهی است که در voip برای کنترل جریان تماس استفاده میشود و در واقع میتواند کیفیت و کنترل مکانیسم voip را کنترل کند.
در SIP پیامها به دو نوع تقسیم میشود:
- request
- response
مهمترین این پیامها:
پیام: INVITE یک request است و هنگامیکه یک شماره گرفته میشود و این شماره در PBX تبدیل آدرس IP شده و این پیام برای مشترک مخاطب ارسال میشود و درخواست ارتباط مینماید در صورت قبول پیشنهاد جهت برقراری تماس از طرف تماس گرفته شده تلفن زنگ میخورد.
پیام: ACK یک response است که این پیام در صحت رسیدن بستههای SIP با استفاده از پروتکل TCP به ما اطلاعرسانی میکند.
پیام: BYE یک request است و این پیام پس از گذاشتن یکی از گوشیهای طرفین از طرف همان مخاطب برای مخاطب دیگر ارسال میشود که حاوی اطلاعاتی مبنی بر عدم حضور طرف مقابل برای مکالمه هست.
پیام: CANCEL این پیام تنها پیامی است که توسط پروکسی سرور صادر میشود و در آن بیان میشود که تماسی که در حالت معلق است قطع شود سپس نیز پیام BYE صادر میشود که هردو این پیامها REQUEST هست.
پیام: OPTIONS این پیام یعنی که از (U.A)که مخفف(USER AGENT) یا (P.S) که مخفف (PROXY SERVER) است، خواسته باشیم که تواناییهاییهای خود را بیان کنند و یک REQUEST هست.
پیام: REGISTER یک request است و این پیام حاوی اطلاعاتی است که از سمت کلاینت به سرور جهت معرفی خود به آن صادر میگردد. در این پیام اطلاعاتی ازجمله IP ,PORT ,OPTION و… را مورد پیشنهاد قرار میدهد.
البته این پیام ها گوشه ای از پیام های SIP استو بهعنوان مثال بیان شد.
اجزای شبکهی SIP
از نقطه نظر معماری، اجزای فیزیکی یک شبکه SIP میتوانند در دو مجموعه طبقهبندی شوند:
Client ها و server ها، که به آنها ( UAC) User Agent Client و User Agent Server (UAS) نیز گفته میشود. یک end-point SIP قادر است هر دو نقش UAC و UAS را ایفا کند، اما در هر انتقال فقط باید یک نقش داشته باشد. اینکه یک نقطه انتهایی بهعنوان UAS یا UAC عمل کند وابسته به UAC ی است که تقاضا را شروع کرده است.
SIP Client
یک client که به آن User Agent Client نیز گفته میشود یک برنامه کاربردی است که درخواست sip را میفرستد.
SIP Client شامل موارد زیر است :
تلفنها: تلفنها میتوانند بهعنوان یک UAC یا UAS عمل کنند.
Soft phoneها: به PC هایی که قابلیت نصب phone را دارند و میتوانند درخواست SIP را آغاز کنند و به آن پاسخ دهند.
Gatewayها: گیت وی ها کنترل call را فراهم میکند و رایجترین آنها عملیات ترجمه بین end-point SIPها و انواع ترمینالهای دیگر در یک گفتگو است. این عمل شامل ترجمه فرمتهای انتقال و پردازههای ارتباط است.
SIP Server ها :
چهار نوع مختلف server وجود دارد:
PROXY Server:
یک وسیله واسط است که درخواستهای SIP را از یک مشتری دریافت میکند و سپس یا آنها را خودش مدیریت میکند و یا، احتمالاً بعد از مهیاکردن برخی ترجمهها ، به یک server دیگر ارسال میکند. proxy که درخواستها را دریافت کرده و آنها را میفرستد، درواقع هر دو نقش client و server را ایفا میکند. Proxy server ها میتوانند اعمالی نظیر تصدیق، اجازه کنترل و دسترسی به شبکه، مسیریابی، ارسال مجدد درخواست بهصورت معتبر و امنیت را میسر کنند.
redirect server:
یکredirect server ، سروری است که درخواستهای SIP را میپذیرد، آدرس مقصد را به آدرس جدید تبدیل میکند، و آن را به درخواستکننده ارسال میکند. سپس، درخواستکننده درخواست را به آدرس بازگردانده شده از redirect server میفرستد. یک redirect server هیچ درخواست SIP را خودش شروع نمیکند.
User agent server:
Serverی است که درخواستهای SIP را دریافت کرده و با کاربر ارتباط برقرار میکند. درواقع یک وسیله SIP (مثل یک تلفن با قابلیت SIP) که همه بهعنوان یک UAC و هم بهعنوان یک UAS عمل خواهد کرد. درصورتیکه بتواند درخواستهای SIP را آغاز کند. بهعنوان یک UAC عمل میکند و درصورتیکه بتواند درخواستها را دریافت کرده و به آنها پاسخ دهد، بهعنوان یک UAS عمل میکند.
Registrar server:
serverی است که درخواستهای SIP Register را میپذیرد. همچون SIP مفهومی به نام ثبت کاربر دارد به این معنی که یک کاربر تعیین میکند که در شبکه در یک آدرس خاص در دسترس است . این ثبت از طریق انتشار یک درخواست R از طرف کاربر به register server انجام میشود. یک register server میتواند با یک Proxy server یا redirect server ترکیب شود .
سیگنالینگ پروتکل SIP برای برقراری تماس
شکل بالا نحوه برقراری تماس بین دو کاربر که در یک دامنه قرار دارند را نشان میدهد.
مراحل انجام این تماس به شرح زیر است:
۱. درخواست کاربر A که از یک تلفن IP استفاده میکند برای برقراری ارتباط با کاربر B به سرور پروکسی SIP هدایت میشود. آدرس سرور پروکسی SIP را میتوان هنگام کنترل دسترسی کاربر به شبکه انتقال و انجام تنظیمات IP آن به کاربر اعلام کرد.
۲ و۳. سرور پروکسی با ارتباط با ثبتکننده SIP اطلاعات کاربر B مانند آدرس IP آن را درخواست و دریافت میکند.
۴. سرور پروکسی از جانب کاربر A با کاربر B تماس میگیرد و درخواست برقراری ارتباط میکند.
۵. کاربر B قبول درخواست را به سرور پروکسی اعلام میکند. معمولاً قبل از اعلام درخواست قبول یک بوق به سرور پروکسی برگردانده میشود تا بهسوی کاربر A هدایت شود. پس از برداشتن گوشی توسط کاربر B پیام قبول به سمت کاربر A ارسال میشود.
۶. قبول درخواست به کاربر A اعلام میشود.
سیگنالینگ پروتکل
SIP در تماس بین دو دامنه
مراحل برقراری تماس با پروتکل SIP در این شکل نشان دادهشده است.
سیگنالینگ تماس بهصورت زیر است:
۱. کاربر A درخواست برقراری تماس با کاربر B میکند.
۲. سرور پروکسی A از روی URI کاربر B متوجه میشود که کاربر در دامنه دیگری قرار دارد. بنابراین با سرور تغییر جهت SIP ارتباط برقرار میکند.
۳. سرور تغییر جهت آدرس IP سرور پروکسی B که به کاربر B سرویس میدهد را برمیگرداند.
۴. سرور پروکسی A درخواست کاربر A را به سرور پروکسی B ارسال میکند.
۵ و۶. سرور پروکسی با ارتباط با ثبتکننده SIP اطلاعات کاربر B مانند آدرس IP آن را درخواست و دریافت میکند.
۷. سرور پروکسی از جانب کاربر A با کاربر B تماس میگیرد و درخواست برقراری ارتباط میکند.
۸. کاربر B قبول درخواست را به سرور پروکسی اعلام میکند. معمولاً قبل از اعلام درخواست قبول یک بوق به سرور پروکسی برگردانده میشود تا بهسوی کاربر A هدایت شود. پس از برداشتن گوشی توسط کاربر B پیام قبول به سمت کاربر A ارسال میشود.
۹. سرور پروکسی B پاسخ را به سرور پروکسی A برمیگرداند.
۱۰. قبول درخواست تماس به کاربر A اعلام میشود.