در اين مقاله به ساختار درونی Internet Relay Chat ) IRC ) خواهيم
پرداخت پروتكلIRC برای گفتوگوهايی برپايه متن مورد
استفاده قرارمیگيرد، اين نوع چت از سال 1989 به بعد و
زمانی كه كاربران برای گفتوگو از چتهای
BBS استفاده میكردند ايجادشد. پروتكل IRC برای ارتباطات
از روش كارگزار ـ كارفرما استفاده میكند و روی بسياری
از كامپيوترها بصورت توزيعشده شروع به فعاليت خواهدكرد.
در اين ساختار سيستم كارگزار بعنوان يك نقطه مركزی برای كاربرانی كه به آن وصلهستند
عمل میكند و پيغامهای
دريافت شده رادر يك محيط اشتراكی رد و بدل میكند.
اجزای يك چت IRC به شرح زيراست:
1ـ كارگزارها:
كارگزار ستون فقرات اصلی يك چت IRC را تشكيل میدهد و اين تنها
اجزای اين پروتكل است كه قادر به پيوند همه اجزا با يكديگر میباشد.
كارگزار يك نقطه به برنامه كارفرمايانی كه برای صحبتكردن میخواهند
به چت متصل شوند و باكاربران ديگر ارتباط برقراركنند ايجاد میكند
و همچنين كارگزار مسئول سرويسهای تعريفشده
به وسيله پروتكل IRC میباشد.
2ـ كارفرماها:
هرچيزی كه در حال ارتباط باكارگزار باشد، كارفرما ناميده
میشود، در نظر داشتهباشيد
كه يك كارگزار نمیتواند به عنوان يك كارفرما به server
متصل شود. در اين سيستمها دو نوع كارفرما وجود دارد كه
هركدام هدفهای خاص خود را دارند كه عبارتنداز:
2ـ1ـ User Clients:
User Clients معمولاً برنامههايی
هستند كه بهصورت يك محيط Text Base میباشند
و برای ارتباط متقابل با IRC مورد استفاده قرارمیگيرند،
به اين نوع بخصوص از كارفرمايان User (كاربر) گفته میشود.
2ـ2ـ Service Clients:
برخلاف كاربران، قصد اين نوع از كارفرمايان صحبتكردن
در محيط IRC نيست. بلكه آنها دسترسی محدود شدهای به
توابع پروتكلچت دارند و آنها میتوانند
به دادههای خصوصی كارگزاران دسترسی داشتهباشند.
سرويسها بهصورت
خودكار برای ايجاد انواع سرويس بهكاربران بهكار
میروند كه البته لزوماً ارتباطی با IRC ندارند. به
عنوان مثال میتوان به سرويس جمعآوری
آمار اشارهكرد كه اطلاعاتی از قبيل اينكه كاربران ازكجا
به شبكه IRC متصلشدهاند
را بدستمیآورد.
ساختار:
يك شبكه IRC بهوسيله
يك گروه از كارگزارانی كه بهجاهای ديگر متصل شدهاند
تعريف شدهاست كه سادهترين
شكل شبكه IRC يك تككارگزار میباشد.
پيكربندی ساختار IRC به شبكه بشكل درختوارهای
میباشد كه هركارگزار يك گره اصلی از اين درخت را تشكيل
میدهد و كاربران میتوانند
به هريك ازاين گرهها متصلشوند.
پروتكل IRC هيچگاه دو كاربر را بهصورت
مستقيم به يكديگر متصل نمیكند و هرگونه ارتباط بين
كاربران از طريق پخشكردن اطلاعات بين كاربران بوسيله
كارگزار انجام میشود.
سرويسهای پروتكل IRC:
در اين قسمت به توضيح در مورد سرويسهای
ارائهشده توسط پروتكل IRC خواهيمپرداخت.
تركيب اين سرويسها باعث ايجاد كنفرانسهای
Real Time خواهد شد.
1ـ مسيرياب كاربر:
برای انتقال پيغامها،
دوكاربر میبايست در چت يكديگر را مشخص كنند. به محض وصلشدن
يك كاربر به كارگزار يك برچسب بهآن دادهمیشود
كه از طريق آن برچسب توسط كارگزاران و كاربران ديگر قابل شناسايی باشد و كارگزاران مسئول نگهداری اين برچسبها
میباشند زيرا با ازبين رفتن آنها ديگر نمیتوان
كاربر متصل بهچت را شناسايیكرد.
2ـ پخش كننده پيغام:
همانطوری كه قبلاً اشارهشد
دو كاربر هيچگاه نمیتوانند يك ارتباط مستقيم برای ردو
بدل كردن پيغامها با سيستم يكديگر داشته باشند و يككارگزار
مسئول انجام اين عملاست و به عنوان واسط بين دو كاربر
قرارخواهد گرفت و پيغام را از كاربر مبدا گرفته و بهكاربر
مقصد خواهدرساند.
3ـ مديريت چت و كانالها:
يك كانال به قسمتی گفته میشود كه
كاربران در گروههای 1 يا چند نفره قرار میگيرند
كه تمام آنها پيغامهايی كه به آن كانال فرستاده میشود
را دريافت خواهندكرد. يك كانال از نامی كه به آن دادهمیشود
مشخص خواهدشد و در هركانال خواصی وجوددارد كه به وسيله كاربران حاضر درآن كانال قابل تغيير میباشد.
هدف از ايجاد كانالها اين
است كه پيغامهايی به چندين كاربر حاضر در كانال ارسالشود.
و كانالهای ميزبان كارگزاران برای تسهيم پيامها
بين كاربران مورد استفاده قرار میگيرد. همچنين
كارگزارها مسئول مديريت كانالها میباشند
و اطلاعات مربوط به شناسايی كاربران هركانال را نگهداری میكنند.
البته تمام اعمال مديريتی كانالها كه برعهده كارگزاران
گذارده شده در IRC Channel Management تعريف شدهاست.
مفاهيم IRC:
در اين قسمت به توضيح مفاهيم داخلی سازماندهی پروتكلIRC و همچنين چگونگی تحويل
كلاسهای پيغامهای
متفاوت خواهيمپرداخت كه به مفاهيم ارتباط يكبه
يك و يكبه چند و يك به همه میپردازيم.
ارتباط يك به يك:
اساس ارتباط در شكل يكبهيك
معمولاً بوسيله كاربران ايفا میشود. برای اينكه
كارفرمايان بتوانند با يكديگر ارتباط برقراركرده و پيغام ارسالكنند
مستلزم اين است كه كارگزاران قادر باشند پيامها را در
يك مسير مستقيم در طول ساختار درختواره ارسال كنند تابه
كاربر موردنظر فرستاده شود. بدين ترتيب مسيری كه پيامها
طی خواهندكرد كوتاهترين مسير بين دو نقطه مبدا و مقصد
در ساختار درختواره IRC میباشد.
شكل زير نمايش ساختار درختواره IRC میباشد.
تصور كنيد كه در يك سيستم دارای 4 كارگزار كه گرههای
اين درخت را تشكيل میدهند با نامهای
[A,B,C,D] هستيم و همچنين تعداد 4 كارفرما به بعضی از اين گرهها
متصل شدهاند.

برای درك دقيقتر
ارتباط يك به يك در اين محيط به مثالهای زير توجه كنيد:
1ـ ارسال پيغام
از كارفرمای 1 به كارفرمای 2 فقط توسط كارگزارA انجام خواهدپذيرفت كه اين انتقال راحتترين
ارسال پيغام میباشند زيرا كاربر مبدا و مقصد در يك
كارگزار هستند.
2ـ ارسال يك پيغام از كارفرمای شماره 1 به كارفرمای 3 مستلزم عبور از كارگزار A,B میباشد.
رد اين حالت بقيه كارگزاران و كارفرمايان به اين پيغام دسترسی نخواهندداشت.
3ـ اگر قرار باشد كه يك پيغام ازكاربر 2
به كاربر 4 انتقال دادهشود میبايست
از گرههای A,B,C,D عبوركند تا به كاربر مقصدبرسد.
ارتباط يك به چند:
هدف اصلی IRC ايجاد انجمنهايی
برای سخنرانیهای كارآمد و راحت میباشد
كه ارتباط يك به چند اين گونه ارتباط را پشتيبانی خواهدكرد. IRC چندين معنی را برای اين امر ارائه میكند
كه در زير به آنها اشارهمیكنيم.
ـ به يك كانال:
در IRC كانالها
شبيه گروهها میباشند
و كاری شبيه بههم انجام میدهند
از جمله اينكه هردوی آنها پويا هستند. گفتوگوهايی كه با
خارج از كانال انجام میگيرد
بايد فقط به كارگزاران ارسالشود و كارگزاران، كاربران
داخل يك كانال مشخص را پشتيبانی میكنند و از اين طريق
باآنها ارتباط برقرار میشود بعلاوه اينكه پيغامها
فقط يكبار میبايست بههر
پيوند محلی فرستاده شوند سپس هركارگزار مسئول فرستادن پيغام اصلی به كارفرمايان موردنظر میباشد
و همچنين بايد از رسيدن پيغام به كارفرمايان اطمينان حاصلشود.
برای درك بيشتر به مثالهای زير توجهكنيد:
1ـ فرض كنيد چند كانال وجود داشته باشد كه در هر كانال 1 كاربر حاضرباشد. پيغامهايی
كه قراراست به كانالفرستادهشود
فقط به كارگزار ارسال میشوند.
2ـ فرض كنيد دو كاربر در يك كانال هستند. اگر قرار براين باشد كه پيغامهای
خصوصی بين دو كاربر خارج از يك كانال انتقال دادهشود
همه پيغامها يك مسير راطی خواهندكرد.
3ـ فرض كنيد كه سهكاربر 1و
2و 3 در يك كانال قرار داشتهباشند. همه پيغامهايی
كه به كانال ارسالشود به هر سه كاربر ارسال خواهدشد و
اگر يك پيغام بهصورت خصوصی ارسالشود
میبايست فقط به كاربر موردنظر ارسالشود.
در شكل ساختار درختواره توجه كنيد، اگر كاربر 1 كه به
كارگزار A متصل شدهاست يك پيغام ارسالكند
اين پيغام ابتدا به كاربر 2 و سپس به كارگزار B به كاربر 3 نيز ارسال خواهدشد و اين در زمانی است كه هر3 كاربر دريك كانال قرارداشته باشند.
ـ به يك ميزبان:
برای ارسال پيغامها
به تمام كاربران متصل به تمام شاخههای درختواره از
مكانيزم خاصی استفاده میشود. اين پيغامهای
به ميزبان كاربران و فقط به مكانهايی كه كاربران حاضر
هستند فرستادهخواهدشد بطور كلی میتوان
گفت كه پيغامها به تمام كانالها
و كارفرمايان ارسال خواهدشد.
ـ به يك ليست:
اين روش كمترين
بهرهوری را در گفتوگوها
و ارتباطات يك به چند دارد، در اين روش كاربران با ليست مشخصی در ارتباط هستند كه اين ليست میتواند
شامل كاربران و كانالهای مختلف باشد. حال در مورد اينكه چگونه
اينكار انجام میگيرد توضيح مختصری میدهم:
كارفرما يك ليست از مقصدهايی كه قراراست پيغامهايش به آنها ارسالشود
ايجاد میكند، بعد از ارسال پيغام توسط كارفرمای فرستنده، ليست
مقصدها توسط كارگزار مربوطه مديريت شده و آدرس مقصدها گسيل میشود
و همچنين از پيغام چندين كپی گرفتهشده و به اعضای موجود در ليست
مقصدها ارسال خواهدشد. اينكار ممكن است چندان كارآمد نباشد زيرا ممكناست
ليست مقصد نقضشود بنابراين پيغامها
بدون اطمينان از اينكار درهر مسير بهطور تكراری ارسال شدهاند
يا خير به كار خود ادامه میدهند.
ارتباط يك به همه:
نوع پيغام يك به همه بهتر از انواع ديگر میباشد
و شرح آن بدين شكل است كه پيغام به همه كارفرمايان يا كارگزاران و ياهردو Broadcast(پخش) میشود.
برای بعضی از گروه پيغامها، اختياری وجود ندارد اما
برای Broadcast كردن آن به همه كارگزارها اطلاعات نگهداشته
شدهتوسط هركارگزار ميان كارگزاران سازگار است. كه اين
نوع ارتباط انواع مختلف دارد كه در مورد آنها توضيح میدهم.
كارفرما به كارفرما:
هيچ كلاس پيغامی برای فرستادن يك پيغام به تمامی كارفرمايان ديگر
(broadcasting) وجود ندارد.
كارفرما به كارگزار:
نتايج
اغلب فرمانهايی كه باعث تغيير اطلاعات خاصی شده میبايست
به همه كارگزاران ارسالشود كه اين توزيع و تغييير نبايد از طريق
كارفرما انجام پذيرد، از جمله اين اطلاعات میتوان به عضويت كانال،
مدكانال و وضعيت كاربر و غيره اشارهكرد.
كارگزار به كارگزار:
تا زمانیكه
بيشتر پيغامها بين كارگزاران به همه كارگزاران ديگر
توزيع میشدند فقط احتياج بود كه پيغام به كاربر يا
كانال و ياكارگزار موردنظر فرستادهشود، از آنجايیكه
اين موارد آيتمهای مقدماتی جستوجو
در IRC هستند تقريباً همه پيغامهای منشعبشده
از يك كارگزار به همه كارگزارهای متصلشده ديگر پخش میشود.
اشكالات متداول:
در پروتكل IRCچندين مشكل شناختهشده
وجود دارد در اين قسمت به توضيح مشكلات وابسته به ساختار پروتكل IRC میپردازيم.
قابليت سنجش:
اين موضوع كاملاً مشخصشده
كه پروتكل IRC در محيطهای بزرگ به خوبی عمل نمیكند،
مشكل اصلی اين است كه تمام كارگزاران میبايست اطلاعاتی
درباره كارگزاران ديگر در اختيار داشته باشند كه از اين اطلاعات میتوان
به مواردی چون كارفرمايان و كانالها و از جمله اينها
اشارهكرد كه بايد تغييرات در آنها خيلی زود Update شود.
قابليت اطمينال:
هنگامی كه پيكربندی شبكه اجازه ايجاد يك ساختار درخت پويا را به كارگزاران IRC میدهد
هر پيوند بين دو كارگزار و نقطه شكست كاملاً مهم میباشد،
اين موضوع بيشتر در شرح توضيح IRC-Server عنوان شدهاست.
تراكم شبكه:
مشكل ديكر در رابطه با موضوع قابليت سنجش و قابليت اطمينان و ساختار درختواره
اين است كه پروتكل و ساختار IRC در شبكه شلوغ و متراكم بشدت آسيبپذير
هستند. اين مشكل هميشگی میباشد و بايد در نسل بعدی چتها
IRC حلشود. اگر در IRC تراكم و اندازه ترافيك بالا
باشد، منجر به قطعی ارتباط بين دو كارگزار خواهدشد اين قطعی ارتباط خود باعث افزايش ترافيك میشود
زيرا ارتباط مجدد دو كارگزار در نقطهای ديگر باعث تشديد
اين امر خواهدشد. برای به حداقل رساندن اثرات اين مشكلات اين نكته شديداً تاكيد شده كه هيچگاه بعد از قطعشدن
ارتباط بين كارگزاران، برای ارتباط مجدد سريعاً تلاشی انجام نگيرد.