Description
1. هدف :
در این پروژه قصد داریم پروتکل های multicast را پیادهسازی نمائیم. بنابراین روترها از الگوریتم مسیریابی DVMRP برای مسیریابی استفاده میکنند.
2. مسئله :
یک شبکه متشکل از تعدادی نود مشتری و یک سرور اصلی و تعدادی سرور گروه که به کمک روترهای بین شبکه به هم متصل میباشند. شما باید چهار برنامه مستقل برای نود مشتری، سرور، ارائهدهنده سرویس) گروهها( و روترها پیادهسازی کنید. هر برنامه یک خط فرمان دارد که میتواند با کاربر تعامل داشته باشد که فرم دستورات و بیان مسئله برای هرکدام در ادامه بیان خواهد شد.
Client
هر نود مشتری میتواند به هر تعداد گروه متصل شود و با آنها ارتباط برقرار کند و برای آنها پیام ارسال کند. همه پیامها به صورت multicast در شبکه ارسال میشوند )بجز درخواست عضویت که به صورت unicast ارسال می شود.( از هر گروهی و از طرف هرکسی یک کلاینت می تواند پیام دریافت نماید. برنامه شما باید این قابلیت را پشتیبانی نموده و پیام با ساختاری مناسب به کاربر نمایش دهد ) group_name #name #massage_body# (. هر کلاینت گزارشی از دادههای خود را با ساختاری مناسب در یک سری فایل نگهداری میکند .
دستورات:
. /client #name #server_ip #router_ip #router_port
برای مثال:
. /client Hasan 240.1.1.1 192.168.20.1 2000 این دستور برای اتصال به روتر و مشخص کردن اطلاعات IP سرور )مانند نام شخص ، گرفتن نام گروهها و …( در سرور است .
– Set IP #IP
– 115.12.2.85Set IP با استفاده از این دستور IP خود را مشخص میکنید.
– Get group list
برای گرفتن لیست گروهها از سرور، که هر گروه شامل یک نام و یک IP multicast مربوط به آن است، از دستور بالا استفاده نمائید.
– Join #group_name, CN این دستور برای وصل شدن به یک گروه است
– Leave #group_name , CN .این دستور برای خارج شدن از یک گروه است – Leave CN
– Select #group_name , CN
در این دستور اگر گروهی را انتخاب نکرده باشید آن گروه انتخاب میشود و اگر که گروهی را انتخاب کرده باشید گروه تغییر میکند
– Send file #file_name , Server Name
این دستور برای ارسال یک فایل استفاده میشود
– Send message #message_body, Server Name این دستور برای ارسال پیام استفاده میشود
-Show group
با استفاده از این دستور نام گروههایی را که در آن عضو است را نمایش میدهد .
Sync
با استفاده از این دستور اطلاعاتی را که از زمانی که شخص Sign Out کرده است تا الان در گروهها رد و بدل شده است را دریافت میکند ) توجه کنید که این دستور نباید به صورت multicast اجرا شود( و سرور گروه فقط اطلاعات را به این شخص ارسال میکند و برای بقیه ارسال نمیکند .
– Sign Out
این دستور برای قطع اتصال کلاینت از شبکه به کار میرود ولی کلاینت از گروهها خارج نمیشود و هنوز در گروههایی که از قبل عضو بوده است ، عضو باقی میماند .
:Server
در هر شبکه تنها یک نود سرور داریم که مشتریها میتوانند از طریق آن به نام گروهها و IP های آنها دسترسی داشته باشند .
دستورات:
. /Server #server_ip 1.1.2.832#Server / .این دستور برای روشن کردن سرور با این IP به کار میرود ) این آی پی multicast نیست(
– Connect Router #router_port – Connect Router 8420
این دستور برای وصل شدن به سرور به کار میرود
:Group Server
در هر شبکه چندین نود سرور گروه )فروم( وجود اما برای هر گروه)فروم( یک سرور گروه وجود دارد که این سرور نام افراد و گزارشی از پیامها را در داخل فایل نگه میدارد و همچنین اطلاعاتی را در مورد آخرین حضور افراد در فروم را در خود نگه میدارد .
دستورات که در این مد اجرا میشوند :
– . /group_server #name
. /group_server CN #server_ip
با استفاده از این دستور برنامه اجرا میشود و نام گروه و IP سروری که میخواهد خود را به آن معرفی کند، تعیین میشود .
– Set IP multicast #IP_multicast –
Set IP multicast 239.2.3.1 .مربوط به این گروه تعیین میشود multicast IP با این دستور-
Set IP #IP
Set IP 238.2.3.1
با این دستور IP عمومی مربوط به این گروه تعیین میشود.
– Connect Router #router_port
Connect Router 8420 این دستور برای وصل شدن به سرور به کار میرود.
-Add server
با استفاده از این دستور سرور گروه اطلاعات خود که شامل IP ها و نام خود میباشد را به سرور ارسال میکند و خود را به سرور معرفی میکند.
:Router
پس از اجرای روتر باید درگاههایی که با دیگر روترها ارتباط برقرار میکنند را معرفی کنیم. اتصال از طریق پورتها انجام می گیرد. برای مسیریابی از الگوریتم DVMRP استفاده کرد. برای مدیریت کردن multicast در شبکه خود باید از پروتکل IGMP برای مشخص کردن اتصالات و . . . استفاده کنید .
دستورات که باید در این مد اجرا شود:
. /Router #listen_port این دستور برای بالا آوردن روترها و گوش دادن بر روی این پورت است.
– Connect #router 1 #router 2 , link#
با استفاده از این دستور دو روتر بر روی پورتها به هم متصل میشوند .
– ChangeCost #link #Newscast
با استفاده از این دستور هزینه اتصال به شبکه را تعیین میکند .
– Disconnect #link در این دستور، اتصال لینکمتصل را قطع میکنیم .
– Show
با اجرا کردن این دستور باید کل اطلاعات روتر شامل جدول روترهای بروز رسانی شده ) شامل جدول عادی و جدول multicast( را نمایش دهید .
تست :
برای تست سیستم خود تعداد فایل بگروه بفرستید و از طریق گیرنده های فایلهای دریافتی را نمایش دهید. اسم فایل را نمایش دهید کفایت می کند.
نکات مهم :
– نمیتوانیم تضمین بکنیم که پروژه به صورت خیلی دقیق تعریف شده است. بنابراین در تعریف توابع و دستورها اگر لازم دیدید دستور جدیدی تعریف کنید و یا حتی پارامتری را کم و زیاد کردید مشکلی نیست .
فقط در گزارش پروژه فرضیات خود را بنویسید.
– در پیاده سازی پروتکلها فقط قابلیت اولیه را پیاده سازی نمائید و لزومی به پیاده سازی همه جزئیات پروتکل نیست.
– تمرین را در گروههای دو نفری انجام دهید .
– زبان برنامهنویسی مجاز C و ++C است که تحت لینوکس تحویل گرفته میشود.
– نوشتن Makefile الزامی است.
– در برنامه خود لازم نیست Error Handling را رعایت کنید و فرض کنید که پیام ها بطور طبیعی می رسند.
– در گزارش نهائی شکل تست خود را حتما بیاورید.
– هرگونه سوالی در ارتباط با این تمرین داشتید در قسمت پرسش و پاسخ صفحه درس مطرح نمایید.
زندگی رسم خوشایندي است .
زندگی بال و پري دارد با وسعت مرگ، پرشی دارد اندازه
عشق .
زندگی چیزي نیست ، که لب طاقچه عادت از یاد من و تو برود .
…….
زندگی “مجذور” آینه است .
زندگی گل به “توان” ابدیت،
زندگی “ضرب” زمین در ضربان دل ما، زندگی “هندسه”
ساده و یکسان نفسهاست ….
در پناه حق سربلند و سلامت باشید




Reviews
There are no reviews yet.