SIP چیست و چه نقشی در VoIP دارد؟
SIP یک پروتکل محبوب تلفن اینترنتی است که اساس تمام انواع نشستها (Session) ارتباط اینترنتی را تشکیل میدهد. SIP در یک تماس VoIP نشست را ایجاد میکند، سیگنالدهی را کنترل میکند و ارتباط را در پایان نشست، قطع میکند.
عبارت SIP مخفف Session Initiation Protocol است. در این عبارت، حرف P از کلمه پروتکل گرفته شده است. بنابراین بهتر است اول به این موضوع بپردازیم که پروتکل چیست.
یک پروتکل اینترنتی، مجموعهای از قوانین است که مشخص میکند چگونه دو یا چند سیستم کامپیوتری (لپتاپ، تلفن همراه، روتر، سویچ شبکه و ...) با هم ارتباط برقرار کنند.
در ابتدا به معرفی پروتکلهایی میپردازیم که در فرایند ایجاد تماسهای تلفنی و ویدیویی در اینترنت دخیل هستند. سیستمهایی که انتقال تماسهای صوتی و تصویری را در شبکه اینترنت انجام میدهند با نام Voice over Internet Protocol یا همان VoIP شناخته میشوند. لازم به ذکر است که VoIP یک پروتکل نیست بلکه مجموعهای از تکنولوژیهایی گفته میشود که در این فرایند انتقال با استفاده از پروتکلهای اینترنتی دخیل هستند.
ارتباطات بین دستگاهها در اینترنت تنها شامل یک پروتکل نمیشود. مجموعهای از پروتکلها به صورت همزمان و در لایههای مختلف (Protocol Stack) برای تحقق این موضوع فعالیت میکنند. پروتکلهایی از قبیل IAX، SIP، H.323، MGCP، SCCP و UNISTIM چند نمونه از پروتکلهای پرکاربرد هستند. مدلهای مختلف نشان میدهند که چگونه پروتکلها بر روی یکدیگر انباشت میشوند. مدل OSI که در تصویر زیر میبینید یکی از پرکاربردترین مدلها است.
همانطور که در تصویر بالا نیز مشخص است، پروتکل SIP در لایه application قرار میگیرد و اساس ارتباطات تعاملی مدرن در اینترنت (تماسهای صوتی، تصویری و ...) را شکل میدهد.
SIP در کجا کاربرد دارد؟
SIP نشستهای ارتباطی را آغاز کرده و قطع میکند. این ارتباط میتواند یک تماس صوتی بین دو شخص باشد یا یک ویدیو کنفرانس بین اعضای یک تیم. این پروتکل به این شکل عمل میکند که پیامهایی را در قالب بسته داده (data packets) به دو یا چند SIP Address ارسال میکند. هر SIP Address به یک کلاینت فیزیکی (مانند تلفن IP) یا نرم افزاری (مانند Skype) متصل است.
SIP ارتباط بین اشخاص را برقرار میکند ولی در فرایند رمزگذاری و رمزگشایی یا انتقال اطلاعات دخالتی ندارد. برای همین است که هم در کنفرانس ویدیویی، هم ارسال پیام و هم برقراری تماس در اینترنت کاربرد دارد.
SIP در یک تماس VoIP چگونه کار میکند؟
SIP در زمان تماس VoIP به تنهایی کار نمیکند بلکه چندین پروتکلهای دیگر به منظور اطمینان از این که داده به مقصد میرسد، همزمان با آن فعال هستند. SDP (Session Description Protocol) یکی از این پروتکلها است.
پروتکل SDP اطلاعات مرتبط با نشست را به منظور کمک به اتصال تماس گیرندگان یا دریافت جزئیات نشست منتقل میکند. این پروتکل سه نوع اطلاعات را ارسال میکند: شرح نشست، شرح زمان و شرح رسانه.
قبل از انتقال از طریق شبکه، اطلاعات صوتی توسط کدکها (Codec) کد گذاری میشود که سیگنالهای صوتی را به داده باینری تبدیل میکند. کدکهای زیادی برای این منظور به کار میروند اما دو تا از رایجترین آنها عبارتند از:
G.711: برای صوت دیجیتال فشرده نشده استفاده میشود. کیفیت صوت بهتر از هر کدک دیگری است اما پهنای باند بیشتری استفاده میکند.
G.729: برای صوت فشرده شده استفاده میشود. کیفیت صدا را کاهش میدهد تا مقدار داده منتقل شده و در نتیجه پهنای باند مصرفی کاهش یابد.
بستههای کدگذاری شده داده با استفاده از RTP (Real-time Transport Protocol) منتقل میشوند. این پروتکل در لایه اپلیکیشن قرار دارد و به منظور استریم بیدرنگ صوت و تصویر استفاده میشود. نشستهای RTP مستقل از SIP هستند. نشستهای RTP به صورت موازی با نشستهای SIP اجرا میشوند. بر خلاف SDP که همراه پیامهای SIP ارسال میشود.
RTP در کنار RTP Control Protocol (RTCP) کار میکند که اطلاعات مرتبط با کیفیت خدمت را تبادل میکند. این اطلاعات شامل تعداد بستههای داده مبادله شده، تعداد بستههای از دست رفته و تاخیر در رفت و برگشت میشود. با استفاده از RTCP کیفیت نشست میتواند تحت نظر قرار بگیرد.
بستههای داده RTP، RTCP و SIP (به همراه SDP) به وسیله پروتکلهای موجود در لایه Transport به مقصد خود میرسند. دو تا از پر کاربردترین پروتکلها در پایین معرفی شدهاند:
Transmition Control Protocol (TCP) : بستهها را با ترتیب مشخص منتقل میکند. برای هر بسته ارسال شده، گیرنده بسته، یک پیام تایید دریافت بسته را به فرستنده ارسال میکند. اگر این پیام در یک زمان مشخص دریافت نشود یا بیان شود که مسئلهای وجود داشته است، بسته اصلی مجددا ارسال میشود. TCP به دقت مشهور است و اطمینان میدهد که بستههای داده به ترتیب اصلی خود ارسال شدهاند.
User Datagram Protocol (UDP) : داده را بدون شناسایی بستههای خارج از نوبت یا از دست رفته منتقل میکند. بستهها نه تنها ممکن است به صورت خارج از ترتیب تحویل داده شوند بلکه ممکن است کلا ارسال نشوند. مهمترین هدف UDP این است که بستهها را در سریعترین زمان ممکن به مقصد برساند.
با توجه به انتقال داده به صورت آنی، UDP برای تماسهای VoIP به نسبت TCP مناسبتر است. اگرچه بستههای از دست رفته یا خارج از ترتیب ممکن است مقداری در کیفیت صدا اختلال ایجاد کند، اما در اکثر مواقع این اختلالات توسط گوش انسان قابل تشخیص نیستند. همچنین تاخیری که بابت منظم کردن و ارسال مجدد بستهها توسط TCP صورت میگیرد، ممکن است منجر به کاهش کیفیت صدا و یا حتی از دست رفتن تماس شود.
در اینجا ممکن است این سوال پیش بیاید که چرا SIP در این حد مهم است در صورتی که تنها کاری که انجام میدهد این است که تماس را برقرار کرده و قطع کند؟ صنعت مخابرات به این دلیل SIP را به عنوان پروتکل استاندارد برای ارتباطات VoIP انتخاب کرده است که خود SIP در فرایند کدگذاری و انتقال داده دخیل نیست.
همچنین، پروتکلهای نوشته شده به منظور پشتیبانی VoIP با مرور زمان کهنه شدهاند و هر بار چیزی نیاز با اصلاح داشت، پروتکلها باید مجددا نوشته میشدند که این کار خودش یک چالش بود. اما SIP کمک میکند تا بر این چالش غلبه کنیم.