نرم افزارهای VIP در کانال تلگرام آپلود می شود. جهت دسترسی به فایلها، به کانال تلگرامی مراجعه نمایید: EngPedia_ir@

آموزش سوکت پروگرمینگ (بخش اول)

آموزش سوکت پروگرمینگ (بخش اول)

مقدمه:

براي كسب توانايي در ساخت برنامه هايي كه بتوانند تحت شبكه و استاندارد هاي موجود براي ساخت شبكه كاركنند نياز است اطلاعات مقدماتي در مورد شبكه هاي كامپيوتري كسب كنيد در اين بخش ما به معرفي كوتاه و مقدماتي در مورد شبكه مي پردازيم تا ذهن خوانندگان عزيز تا حدودي به بحث نزديكتر شود و توانايي درك مطالب گقته شده را در قسمت هاي بعدي داشته باشند.

 

توجه:

اگر شما با شبكه آشنا هستيد مي توانيد از اين بخش كه مربوط به مفاهيم شبكه و پروتكل ها مي باشند صرف نظر كنيد و به قسمت هاي اصلي آموزش سوکت پروگرمینگ شبكه بپردازيد.

 

در اين قسمت ابتدا به شرح مفاهيم پايه مدل مرجع OSI مي پردازيم و سپس TCP/IP را به عنوان پروتكل استاندارد ارتباطات اينترنتي معرفي مي كنيم و به جزئيات مهم آن اشاره خواهيم كرد و در نهايت مفهوم آدرس IP و كلاس هاي مختلف آن را بيان مي كنيم در بخش بعدي نيز كه دنباله اي براي اين بخش محسوب مي شود به توضيح چگونگي عملكرد و دستورات پروتكل هاي مهم ارتباطي كه در سطح وسيع برروي شبكه جهاني اينترنت و شبكه هاي بر مبناي مدل TCP/IP استفاده مي شوند مي پردازيم.

خوانندگان عزيز توجه داشته باشند كه دانستن مطالب ارائه شده در اين دو بخش براي يك برنامه نويس شبكه الزامي است و نداشتن اطلاعات كافي در مورد مبنا و طريقه كار كردن پروتكل ها ممكن است موجب شود كه در درك مطالب بعدي كتاب با مشكل مواجه شويد. پس مطالعه اين بخش و بخش بعدي براي كساني كه با مفاهيم شبكه به خوبي آشنا نيستند الزامي مي باشد.

 

سوكت ( Socket ) چيست:

 

با يك بيان ساده مي توان گفت كه سوكت به تركيب يك آدرس ماشين ( IP ) و يك شماره درگاه ( Port ) گفته مي شود. در اين تعريف اصطلاحاتي وجود دارد كه ممكن است معناي آن را به درستي در ك نكنيد ولي در ادامه همين فصل به طور كامل با اين مفاهيم آشنا خواهيد شد.

در برقراري ارتباط بين كامپيوتر ها در يك شبكه دو چيز بسيار مهم است 1) آدرس ماشيني كه مي خواهيم اطلاعاتي از ان بگيريم يا به آن ارسال كنيم 2) برنامه اي از آن ماشين كه در خواست اطلاعات كرده يا اينكه مي خواهيم اطلاعاتي از آن برنامه كسب كنيم.

اين دو يعني آدرس ماشين و شماره برنامه به وسيله سوكت در شبكه مشخص مي شوند.

 

بركلي سوكت:

 

‏TCP/IP براي اولين بار درسيستم عامل يونيكس معرفي شد و در نگارش هاي بعدي اين سيستم عامل كه توسط دانشگاه بركلي توسعه پيدا كرد ، يك رويه برنامه نويسي نيز همراه TCP/IP ارائه شد تا كاربران بتوانند به وسيله آن برنامه هاي تحت شبكه با استفاده از اين پشته پروتكلي ايجاد كنند. اين رويه برنامه نويسي به صورت استاندارد براي برنامه نويسي شبكه درآمد و بقيه زبان هاي توسعه و سيستم عامل نيز از اين استاندارد براي پشتيباني از برنامه نويسي شبكه استفاده كردند.

 

WinSock چيست:

 

WinSock يا Windows Socket يك رويه ( InterFace ) برنامه نويسي است كه در غالب يك DLL ( Dynamic Link Library ) در سيستم عامل ويندوز براي برنامه نويسي شبكه و ساخت برنامه هايي كه بتوانند با شبكه محاوره داشته باشند معرفي شده است از آنجايي كه اين كتابخانه به صورت استاندارد جهاني ساخت برنامه هاي شبكه ، ساخته شده است بنابرين در اين كتاب مبناي آموزش بر روي اين رويه ( WinSock ) قرار داده شده است اگر چه آموزش هاي اين كتاب فقط بر مبناي سيستم عامل ويندوز نيست و برنامه هاي اين كتاب و آموزش هاي آن شامل سيستم عامل هاي خانواده *Nix ( Linux & UNIX ) نيز مي باشد اما به دليل مشترك بودن توابع موجود در اين DLL و هدر هاي ديگر مبناي آموزش بر روي اين DLL تمركز دارد.

 

اكنون كه با اصطلاحاتي در زمينه برنامه نويسي شبكه آشنا شديد احتمالا سوالاتي در ذهن شما به وجود آمده كه براي پيدا كردن پاسخ آن نياز است كه با مفاهيم پايه شبكه آشنا شويد. پس به توضيح اين مباني در قالب مدل مرجع OSI كه يك مدل استاندارد براي ساخت شبكه هاي كامپيوتري است مي پردازيم.

 

لايه ها:

 

درشبكه هاي كامپيوتري به دليل اينكه برقراري ارتباط ما بين كامپيوترها نيازمند انجام يك سري كارهاي متفاوت و گاه متضاد و ناهمگون است براي رفع اين مشكل طراحان شبكه مدلي مرجع را كه الگويي بر مبناي ساختارلايه اي دارد را معرفي كرده اند. در اين الگو وظايف مرتبط با هم بر عهده يك بخش گزارده شده است و هر بخش تشكيل يك لايه مجزا را داده است. لايه ها در اين مدل به صورت پشته بر روي هم گذاشته شده اند و هر لايه فقط مي تواند با لايه هاي مجاور خود در ارتباط باشند.

 

تعريف پروتكل :

 

در دو كامپيوتر كه بوسيله شبكه به هم متصل مي شوند هر لايه با لايه هم سطح خود توافقي براي انجام عمليات دارد به اين توافق بين لايه ها پروتكل گويند.

 

خدماتي كه يك لايه به لايه بالاتر مي دهد ممكن است به يكي از گونه هاي زير باشد:

 

  • درخواست سرويس ( Request )
  • اقدام لازم براي انجام سرويس ( Introduction )
  • ارسال پاسخ سرويس ( Response )
  • قبول درخواست ( Confirm )

 

انواع ارتباط لايه هاي متناظر در دو كامپيوتر :

 

ارتباط مابين دو كامپيوتر مي تواند به يكي از دو صورت زير باشد:

 

  • اتصال گرا ( Connection Oriented )
  • غير اتصال گرا ( Connection Less )

 

در سيستم اتصال گرا ابتدا درخواست اتصال ارسال شده و در صورت موافقت طرف مقابل ارتباط برقرار مي شود ( مثل چيزي كه در سيستم تلفن وجود دارد ) به اين سيستم Data Stream نيز گفته مي شود.

 

اما در سيستم غير اتصال گرا بدون نياز به موافقت طرف مقابل بسته ها ارسال مي شوند ( مانند سيستم پست ) به اين سيستم Data Gram مي گويند.

 

UDP و TCP :

 

در پشته پروتكلي TCP/IP دو نوع ارتباط مي توان با كامپيوتر را دور ايجاد كرد:

 

  • اتصال به كامپيوتر راه دور به وسيله سوكت Data Stream
  • اتصال به كامپيوتر راه دور به وسيله سوكت Data Gram

 

به بيان غير رسمي به نوع ارتباط اول ( اتصال گرا ) ارتباط از نوع TCP گويند و اگر نوع برقراي ارتباط به حالت Data Gram ( غير اتصال گرا ) باشد به آن UDP گويند.

 

كاربرد حالت اتصال گرا در مواقعي است كه نياز به برقراري يك ارتباط امن بين دو ماشين فرستنده و گيرنده داشته باشيم يعني از صحت دريافت اطلاعات در ماشين گيرنده مطمئن شويم.

اما حالت غير اتصال گرا ( UDP ) مواقعي استفاده مي شود كه خيلي دريافت اطلاعات توسط ماشين گيرنده اهميتي نداشته باشد.

 

كيفيت سرويس دهي يك شبكه ( QQS)

 

سرويس كه يك شبكه ارائه مي دهد بايد داراي يك كيفيت خوب و قابل قبول باشد. از لحاظ كيفيت ارائه سرويس شبكه ها دو نوع مي باشند:

 

  • كاربر قبل از استفاده از شبكه در مورد كيفيت با شبكه توافق مي كند.
  • شبكه هيچ تضميني در مورد كيفيت نكرده ولي سعي مي كند حداكثر كيفيت را ارائه دهد.

 

پارامترهاي ارزيابي كيفيت سرويس :

 

  1. مدت زمان ايجاد ارتباط .( Connection Establishment )
  2. احتمال قطع ارتباط ( Connection Establishment Failure Probability )
  3. پهناي باند عملي قابل استفاده كاربر ( Through Put ) .
  4. زمان انتقال داده ( Transit Delay ) .
  5. نرخ خطا ( Error Ratio ) .
  6. امنيت ( Security ) .
  7. اولويت بندي ( Priority ) .

 

مدل مرجع OSI :

 

مدل OSI در شكل 1-1 آمده است. اين مدل بر مبناي قراردادي است كه سازمان استاندارد جهاني ISO به عنوان اولين مرحله از استاندارد سازي قراردادهايي كه در لايه هاي مختلف مورد استفاده قرار مي گيرند ايجاد كرد. اين مدل در سال 1995 بازبيني شد. نام اين مدل ISO OSI انتخاب شد زيرا با اتصال سيستم هاي باز سرو كار دارد. منظور از سيستم هاي باز سيستم هايي است كه براي ارتباط با ساير سيستم ها باز هستند. براي اختصار ، ان را OSI مي ناميم.

 


شكل 1-1

مدل هفت لايه اي OSI

 

مدل OSI هفت لايه دارد. اصولي كه منجر به اين هفت لايه شده اند عبارتند از:

 

  • وقتي مباز به سطوح مختلفي از انتزاع است ، لايه اي بايد ايجاد شود.
  • هر لايه بايد وظيفه مشخص داشته باشد.
  • وظيفه هر لايه بايد با در نظر گرفتن قراردادهاي استاندارد جهاتي انتخاب شود.
  • مرزهاي لايه بايد براي به حداقل رساندن جريان اطلاعات از طريق واسط ها انتخاب شوند.
  • تعداد لايه ها بايد آنقدر باشد كه نيازي به قراردادن وظايف متمايز در يك لايه نباشد.

 

در ادامه هر لايه از مدل را به نوبت ، با شروع از لايه پايين مورد بحث قرار مي دهيم. توجه داشته باشيد كه خود مدل OSI يك معماري شبكه نيست زيرا خدمات و قراردادهايي را كه بايد در هر لايه مورد استفاده قرار گيرد را مشخص نمي كند. فقط مشخص مي كند كه هر لايه چه عملي بايد انجام دهد. ISO استاندارد هايي براي تمام لايه ها نيز توليد كرده است، گر چه اين ها بخشي از خود مدل مرجع نيستند. هر كدام به عنوان استانداد جهاني منتشر شده اند.

 

لايه فيزيكي ( ‍Physical ):

 

لايه فيزيكي به انتقال بيت هاي خام بروي كانال ارتباطي مربوط مي شود. اصول طراحي حكم مي كند كه وقتي بيت 1 از يك طرف ارسال مي شود، در طرف ديگر بيت 1 دريافت شود، نه بيت صفر. سوال هاي خاصي كه مطرح مي شوند عبارتند از : براي نمايش، يك و صفر به چه ولتاژي نياز است، هر بيت چند نانو ثانيه دوام دارد، آيا انتقال در هر دو جهت به صورت همزمان صورت گيرد، اتصال اوليه چگونه برقرار مي شود، وقتي ارتباط دو طرفه قطع شود، اتصال چگونه خاتمه يابد، و واسط شبكه چند پايه دارد و هر پايه به چه منظوري مورد استفاده قرار مي گيرد.

در اينجا مدل طراحي با واسط مكانيكي،الكتريكي، و واسط هاي زماني و رسانه انتقال فيزيكي كه در زير لايه فيزيكي قرار دارند، سرو كار دارد.

 

لايه پيوند داده ها ( Data Link ) :

 

وظيفه اصلي لايه پيوند داده ها اين است كه با امكانات انتقال اطلاعات خام، خطي را از ديد لايه فيزيكي، به خط بدون خطا تبديل كند. اين كار را با شكستن داده هاي ورودي به قاب هاي داده ( Data Frame ) – معمولا به اندازه چند صد بايت يا چند هزار بايت- انتقال ترتيبي قاب ها، و پردازش قاب ها و اعلام وصول قاب هايي كه از طرف گيرنده ارسال مي شود، انجام مي دهد.

مسئله ديگري كه در لايه پيوند داده ها وجود دارد، چگونگي حفظ يك فرستنده سريع در دام يگ ماشين گيرنده كند است. براي اينكه انتقال دهنده بداند كه گيزنده در آن واحد چه ميزان از فضاي بافر را در اختيار دارد، بايد از راهكار تنظيم ترافيك استفاده شود. غالبا تنظيم ترافيك و پردازش خطا مجتمع مي شوند.

شبكه هاي پخشي مسئله ديگري در لايه پيوند داده ها دارند : چگونگي كنترل دستيابي به كنال مشترك. يعني اينكه چگونه چندين ماشين كه در يك شبكه قرار دارند بتوانند براي ارسال و در يافت از يك كابل مشترك استفاده كنند.

زير لايه خاصي از لايه پيوند داده ها، به نام زير لايه كنترل دستيابي به رسانه ( MAC ) با اين مسئله سرو كار دارد.

 

نگاه دقيق تر به لايه پيوند داد ها و معرفي الگوريتم هاي مورد استفاده در آن:

 

لايه پيوند داد ها از دو زير لايه تشكيل شده است ( شكل 2-1).

اين دو زير لايه از پايين به بالا MAC و LLC نام دارند. در اين حالت LLC با لايه Network در ارتباط است و MAC با لايه فيزيكي.

 

LLC لايه شبكه را قادر مي سازد با انواع سرعتها، كابلها و تپولوژي هاي كار كند.

كار اصلي زيرلايه MAC كنترل دستيابي به لايه فيزيكي است.

 

 

Logic Line Control (LLC) 

 

Media Access Control (MAC) 

شكل 2-1

نمايش ساختار داخلي لايه پيوند دادها

 

زير لايه LLC :

 

وقتي اطلاعات بر روي رسانه ارسال مي شود بايد با به كار گيري روش هايي مانع از برخورد و ادغام دو بسته اطلاعاتي با هم شويم. يعني اينكه اگر يك بسته بزرگ به 10 بسته كوچك 100 بايتي شكسته شود و اين 10 بسته را به ترتيب براي ماشين گيرنده ارسال كنيم كامپيوتر گيرنده با روشي متوجه ابتدا و انتهاي بسته اول شود و بسته دوم را نيز تشخيص دهد چون همان طور كه مي دانيد هنگام ارسال اطلاعات روي خط چيزي جز صفر و يك بر روي كابل يا رسانه ارتباطي نيست و بايد با روشي ابتدا و انتهاي بسته ها براي كامپيوتر راه دور مشخص شود. به كار بستن اين مكانيزم ها بر عهده زير لايه LLC از لايه پيوند داده ها مي باشد.

 

روش هاي ممانعت از ادغام بسته ها در زير لايه LLC :

 

  • Character Count.
  • Starting & Ending Characters , With Character Stuffing.
  • Starting & Ending Flags , with bit Stuffing.
  • Physical Coding violation.

 

روش اول ( Character Count ):

 

در اين روش در اولين بايت يك فريم تعداد بايتهاي آن فريم را تععين مي كنيم به عنوان مثال اولين بايت فريم زير مش خص مي كند كه چهار بايت بعد نيز مربوط به همين فريم است ( شكل 3-1 ):

 

       

شكل 3-1

نمايش عملكرد تكنيك Character Count

 

به اين بايت اصطلاحا Character Count مي گويند.

ضعف اين روش اين است كه اگر بايت اول آسيب ببيند تا انتهاي عمل ارسال تمام اطلاعات به درستي در يافت نمي شوند. و تنها حسن آن هم سادگي روش است.

 

روش دوم (Starting & Ending Characters , With Character Stuffing ):

 

در اين روش ابتدا و انتهاي هر فريم يكسري نشانه اضافه مي كنيم يعني ابتدا و انتها را با چند بايت خاص مش خص مي كنيم( شكل 4-1).

 

DLE براي نشانه گزاري ، STX شروع فريم ، ETX انتهاي فريم

 

STX 

DLE 

         

ETX 

DLE 

شكل 4-1

 

هر گاه كه الگوي نشانه گزاري در خود داده هاي موجود در فريم نيز وجود داشته باشد، باعث ايجاد اختلال در تشخيص ابتدا و انتهاي بسته مي شود براي حل اين مشكل در فرستنده هر گاه الگوي نشانه وجود داشت اين الگو را در بدنه دوبار تكرار مي شود و در گيرنده اگر دو بار پشت سر هم الگوي نشانه دريافت شود گيرنده متوجه مي شود كه اين جزئي از خود اطلاعات بسته است در نتيجه يكي از آنها را دور ريخته و ديگري را در بسته قرار مي دهد.

 

معايب:

ايراد اين روش در اين است كه براي مشخص كردن ابتدا و انتهاي فريم حداقل به چهار بايت نياز داريم كه اين خود باعث به هدر رفتن بخشي از فضاي بسته ارسالي مي شود.

 

روش Starting & Ending Flags , with bit Stuffing :

 

براي مشخص كردن ابتدا و انتهاي فريم از يك Flag ( پرچم ) يك بايتي استفاده مي كنند. از لحاظ كارايي با روش Starting & Ending Characters , With Character Stuffing تفاوتي ندارد اما سربار ( Over Head ) آن كمتر مي باشد ( شكل 5-1 ).

 

 

01111110
101111000011101101011100011 … 101001011111100101110

مرز دو فريم اطلاعات فريم Flag

 

شكل 5-1

 

ضعف اين روش در اين است كه با تغيير يك بيت ممكن است الگوي flag تغيير كند و كل اطلاعات ارسالي اشتباه دريافت شوند.

 

روش Physical Coding violation :

 

در زمان هاي خاص لبه پايين رونده ( قسمتي از شكل موج كلاك سيستم كه از بالا به پايين افت ولتاژ مي كند) به عنوان يك و لبه بالا رونده به عنوان صفر تلقي خواهد شد. براي مشخص كردن ابتدا و انتهاي فريم ها از حالاتي كه در كد كردن معنايي ندارد استفاده مي شود. يعني اگر در زمان هاي مورد نظر تغيير نداشته باشد نه صفر است و نه يك و به اين حالت Violation گفته مي شود.

اگر به اندازه دو يا سه فريم تغييري در موج نباشد، فرض خواهد شد كه پايان فريم است.

اين روش بسيار مناسب مي باشد و توسط لايه فيزيكي نيز به راحتي قابل اجراست.

 

نكته:

معمولا در كاربرد هاي عملي تركيبي از روش هاي گفته شده استفاده مي شود ( به طور معمول تركيب روش هاي 1 و 3 و يا 1 و 4).

 

روش هاي كشف و اصلاح خطا در زير لايه LLC :

 

در اين قسمت الگوريتم ها وشيوه هاي مختلف تشخيص و اصلاح خطا در يك مجموعه از بيت ها را بررسي مي كنيم.

خطا معمولا ناشي از تبديل يك مقدار در حين انتقال به يك مقدار ديگر است، مثلا تبديل صفر به يك و يا بلعكس. در شبكه معمولا فقط از مكانيزم هاي تشخيص خطا استفاده مي شود. در صورت مشاهده خطا در خواست ارسال مجدد مي كنند و از اصلاح خطا خود داري مي شود.

 

عوامل ايجاد خطا در شبكه:

 

  • پارازيت و نويز هاي خارجي.
  • تغيير شكل پالس ارسالي ( مثلا به علت تضعيف ).

 

روش هاي مختلف و گاه متضادي براي تشخيص و اصلاح خطا در شبكه وجود دارد در زير به مهمترين آنها اشاره شده است :

 

Parity ( بيت توازن ) :

 

ساده ترين روش تشخيص خطا استفاده از يك بيت اضافي به اسم Parity است.

اگر Parity زوج داشته باشيم مقدار اين بيت طوري انتخاب خواهد شد كه همراه كل مجموعه بيت ها، تعداد بيت هاي يك زوج باشد. و اگر Parity فرد داشته باشيم طوري بيت هاي يك را انتخاب مي كنيم كه تعدا آنها فرد باشد.

ضغف اين روش در اين است كه اگر تعداد خطاهاي اتفاق افتاد مضربي از دو باشد در ( بيت توازن زوج ) ديگر نمي توان خطا را تشخيص داد.

 

روش Hamming Distance براي تشخيص خطا:

 

تعريف فاصله همينگ:

تعداد اختلاف بين بيتهاي متناظر در رشته همطول را فاصله همينگ گويند.

 

مثال:

0110101

1010010

فاصله همينگ دو عدد بالا برابر 5 مي باشد.

 

نكته:

اگر براي چند رشته بخواهيم فاصله همينگ را بدست آوريم كوچكترين فاصله بين جفت، جفت آنها را به عنوان فاصله همينگ دسته اعداد در نظر مي گيريم.

 

نكته:

اگر فاصله همينگ برابر d+1 باشد آنگاه تا d بيت خطا در انها را مي توان تشخيص داد.

 

نكته:

اگر فاصله همينگ برابر 2d+1 باشد آنگاه تا d خطا را مي توان در انها اصلاح كرد.

 

روش InterLeaving :

 

اين روش براي ارسال n عدد فريم استفاده مي شود. وبه جاي ارسال تك تك فريم ها پشت سر هم ابتدا بيت يك كليه فريم ها را ارسال مي كند، و بعد بيت دو و… را ارسال مي كند ( شكل 6-1).

در اين روش از بيت توازن هم براي سطر ها يعني ( فريم ها) و هم براي ستون ها استفاده مي شود.

 

 

 

شكل 6-1

 

حسن اين روش در اين است كه هر گاه در يك ارسال حتي بيش از يك خطا داشته باشيم باز هم براي هر فريم حداكثر يك خطا خواهيم داشت و با استفاده از بيت Parity ( توازن ) كه خطا را چك مي كنند، براي هر خانه كه خطا داشته باشد هم بيت توازن افقي و هم بيت توازن عمودي خطا را معلوم كرده و در اين صورت بيت داراي خطا مشخص و اصلاح مي شود.

و ضعف اين روش اين است كه بايد تمام فريم ها ارسال شوند تا اطلاعات موجود در گيرنده قابل استفاده باشند.

 

نكته:

اين روش براي ارسال يك فايل مناسب است اما براي كارهاي بلادرنگ ( Real Time ) مثل ارتباطات صوتي و تصويري ايجاد مشكل مي كند.

 

نكته:

در شبكه تلفن همراه ايران براي كشف خطا از اين روش استفاده مي شود.

 

روش CRC :

 

در اي روش فريم داده را به يك Generator تقسيم كرده و باقيمانده تقسيم را به فريم اضافه مي كنند و همراه آن به سمت گيرنده ارسال مي شود. در گيرنده نيز كل فريم ( همراه با باقيمانده ) را دوباره بر Generator تقسيم مي كنند اگر خطايي روي نداده باشد باقيمانده صفر خواهد بود، در غير اين صورت خطايي در زمان ارسال روي داده است.

اين روش محل ايجاد خطا را مشخص نمي كند.

 

نكته:

در اين روش فرستنده و گيرنده بايد بر روي Generator توافق داشته باشند.

Generator هاي معروف:

 

 

CRC12 : G = X^12 + X^11 + X^3 + X^2 + X^1 + 1

 

CRC – CCIT : G = X^16 + X^12 + X^5 + 1 مورد استفاده در شبكه تلفن

 

CRC16 : G = X^16 + X^15 + X^2 + 1

 

خطا هاي زير را مي توان با استفاده از اين روش كشف كرد:

 

  • يك يا دو خطا.
  • تعداد خطا هاي فرد.
  • خطا هاي پشت سر هم كمتر از 16.

 

حسن اين روش نسبت به روش هاي گفته شده ديگر :

 

  • تعداد بيت هاي اضافه شده تابع طول فريم نيست.
  • باقيمانده در انتهاي فريم اضافه مي شود. اين امر باعث پياده سازي آسان اين روش مي شود.

 

نكته:

در كارتهاي شبكه امروزي معمولا از روش CRC استفاده مي شود، و عمل محاسبه باقيمانده بر عهده كارت شبكه مي باشد.

 

توجه:

براي اندازه گيري ميزان خطا در يك كانال ارتباطي تعداد خطا را در يك ميليون بار ارسال محاسبه كرده و آن را به عنوان شاخص در نظر مي گيرند.

 

معمولا هنگام ارسال بسته از يك hop به hop ديگر بايد فرستنده به يك نحوي از رسيدن بسته به مقصد مطلع شود. به همين منظور در لايه پيوند داده ها يكسري پروتكل ها در نظر گرفته شده است. كاربرد اين پروتكل ها علاوه بر كشف خطا مي تواند قدرت گيرنده را براي دريافت بسته ها نيز در نظر بگيرد.

 

پروتكل توقف و انتظار ( Stop & Wait ) :

 

در اين پروتكل فرستنده پس از ارسال يك فريم يك مدت زماني را منتظر رسيدن پاسخ ( Ack ) از طرف گيرنده مي شود. اين كار را با تنظيم يك زمانسنج انجام مي دهد. هر گاه زمان تايمر به صفر برسد و پاسخي براي بسته ارسالي دريافت نشود ، فرض مي كند كه بسته يا خراب شده يا به مقصد نرسيده است. در اين هنگام مبادرت به ارسال مجدد بسته مي نمايد.

 

توجه:

استفاده از اين تكنيك در مواردي كه فاصله بين فرستنده و گيرنده زياد است، و همچنين خط داراي درصد خطاي بالايي باشد مقرون به صرفه نيست.

 

پروتكل پنجره هاي لغزان ( Sliding Windows ) :

 

در پروتكل Stop & Wait يك فريم ارسال مي شود و سپس فرستنده منتظر رسيدن جواب از گيرنده باقي مي ماند، در اين حالت مقداري از زمان ماشين فرستنده به بطالت خواهد گذشت. در صورتي كه هر ماشين موجود در شبكه بتواند در يك زمان محدود خط را در دست داشته باشد اين پروتكل با شكست مواجه خواهد شد.

براي رفع اين مشكل پروتكل پنجره هاي لغزان معرفي شده است، كاركرد اين پروتكل به نحوي است كه فرستنده هر بار به جاي ارسال يك بسته مي تواند يك تعداد مشخص از بسته ها ( يا اصطلاحا يك پنجره از بسته ها ) را ارسال كند و سپس منتظر جواب مربوط به آن تعداد از پنجره ها باشد.

بعد از اينكه فرستنده جواب مربوط به رسيدن صحيح پنجره را از گيرنده دريافت كرد بر روي n تعداد بسته ديگر رفته و آنها را ارسال مي كند و دوباره براي دريافت جواب منتظر مي ماند.

در اين روش گيرنده Ack مربوط به آخرين بسته را ارسال مي نمايد.

يك نقطه ضعف اين روش در اين است كه اگر يكي از بسته ( بجز بسته آخر ) در طول عمليات ارسال آسيب ببيند ديگر نمي توان تشخيص داد كه كدام بسته بوده است.

 

براي حل اين مشكل از مكانيزم هاي زير استفاده مي شود:

 

  • مكانيزم برگشت به n
  • مكانيزم تكرار انتخابي

 

مكانيزم برگشت به n :

 

در اين روش گيرنده اگر تمام فريم هاي يك پنجره را به طور صحيح دريافت كرد پاسخي براي فرستنده مبني بر دريافت صحيح اطلاعات ارسال مي كند. اما به محض اينكه در يك بسته خطايي را تشخيص داد يا اينكه بسته اي در طول عمليات ارسال گم شود ديگر مابقي بسته ها را نيز دريافت نخواهد كرد و Ack آخرين بسته اي را كه صحيح دريافت كرده است را به فرستنده ارسال مي كند.

فرستنده نيز با دريافت پاسخ گيرنده متوجه مي شود كه بايد بر روي كدام بسته برود و روند ارسال را از چه بسته اي ادامه دهد.

 

نكته:

با كمي دقت بر روي اين روش متوجه مي شويم كه فرستنده بايد تا پايان عمليات ارسال تمام بسته ها را در حافظه خود نگه دارد، تا در صورت لزوم مجددا به ارسال آنها مبادرت ورزد.

 

مزايا و معايب :

حسن اين روش در پياده سازي و مديريت آسان آن مي باشد اما همانطور كه قبلا نيز گفته شد ممكن است بعد از كشف خطا در يك بسته بقيه بسته هاي دنباله آن را نيز كه خطا ندارد هم دور ريخته شود. كه اين باعث كندي در عمليات ارسال مي شود.

 

تكرار انتخابي :

 

روش ديگر در برخورد با خطا هاي روي داده در بسته ها در روش پنجره هاي لغزان استفاده از مكانيزم تكرار انتخابي مي باشد.

در اين روش پس از كشف يك خطا در يك بسته ديگر بسته هاي بعدي دور ريخته نمي شوند بلكه آنها نيز توسط گيرنده دريافت خواهند شد، و براي اينكه بسته داراي خطا دوباره توسط فرستنده ارسال شود در حين دريافت بسته ها با يك Ack به فرستنده اطلاع مي دهد كه بسته اي كه در آن خطا روي داده است را مجددا ارسال نمايد.

 

مزايا و معايب :

در اين روش از پهناي باند كانال استفاده مطلوب تري صورت مي گيرد اما مديريت بسته ها ، Ack و ترتيب ارسال ، دريافت و چينش بسته ها پيچيده تر مي شود.

 

زير لايه MAC :

 

وظيفه اصلي لايه MAC كنترل دسترسي ماشين ها به لايه فيزيكي ( كانال ارتباطي ) است.

 

هنگام ارسال اطلاعات برروي كابل در صورت نبود مديريت بر لايه فيزيكي ممكن است مشكلاتي در روند ارسال و دريافت اطلاعات به وجود آيد، مثلا ارسال اطلاعات توسط دو يا چند ماشين به صورت همزمان.

 

قبل از بررسي مكانيزم هاي موجود در زير لايه MAC براي مديريت بر روي رسانه فيزيكي پارامترهاي مربوط به يك كانال ارتباطي را معرفي مي كنيم:

 

  • Delay ( مدت زماني كه يك فرستنده بايد صبر كند تا كانال در اختيارش گزارده شود ).
  • ‏Through Put ( هيچ گاه كابل نبايد بيكار يا خالي از فريم باشد ).

 

روش هاي ارسال اطلاعات برروي كانال :

 

همانطور كه مي دانيد در يك شبكه در هر زمان تنها يك ماشين مي تواند مبادرت به ارسال اطلاعات نمايد. زيرا در صورتي كه چند ماشين به صورت همزمان اطلاعات خود را بر روي كانال قرار دهند بسته هاي اطلاعاتي كه به صورت سيگنال هاي الكتريكي بر روي كانال وجود دارند با يكديگر برخورد مي كنند و از بين مي روند.

براي كم كردن Delay و همچنين افزايش Through Put در يك شبكه مكانيزم هايي پيشنهاد شده است كه در اينجا نمونه هايي از آنها را بررسي مي كنيم.

 

روش آلوها ( ALLOHA ) :

 

در اين روش هر كامپيوتر به محض اينكه اطلاعاتي براي ارسال داشته باشد شروع به ارسال آن خواهد نمود.

 

مزايا:

Delay در اين روش صفر است.

 

معايب:

اگر دو يا چند كامپيوتر همزمان مبادرت به ارسال اطلاعات نمايند بسته ها با يكديگر تداخل كرده و از بين مي روند.

 

روش آلوهاي برهه اي ( Stotted ALLOHA ) :

 

براي بهتر كردن روش آلوها زمان انتقال را به قسمت هاي ( برهه هاي ) مجزايي تقسيم مي كنند كه هر قسمت براي ارسال يك قاب در نظر گرفته مي شود.

در اين روش اگر ماشيني قصد ارسال اطلاعات را داشته باشد ديگر نمي تواند در هر زماني اطلاعات را

ارسال كند بلكه فقط ارسال اطلاعات در مرز بين دو برهه امكان پذير است.

 

نكته:

در اين روش تاخير ارسال اطلاعات تقريبا برابر نصف زمان بك برهه است.

 

روش CSMA ( Carrier Sense Multiple Access ) :

 

كارايي روش هاي آلوها و آلوهاي برهه اي بسيار كم مي باشد و اين به آن جهت است كه هر ايستگاه به دلخواه خود عمل انتقال را انجام مي دهد و به عملكرد ساير ايستگاه ها توجهي ندارد. در يك شبكه محلي اين امكان وجود دارد كه هر ايستگاه تشخيص دهد ساير ايستگاه ها مشغول به چه كاري هستند. بنابراين بر طبق اين مكانيزم در فرستنده اي كه قصد ارسال اطلاعات را دارد قبل از انجام عمل ارسال ابتدا به خط گوش مي دهد اگر خط خالي باشد شروع به ارسال اطلاعات مي كند. اين نوع ارسال را اصطلاحا CSMA گويند.

 

براي بالا بردن كارايي در اين روش فرستنده مي تواند به هر چيزي كه ارسال مي كند نيز گوش دهد و به محض اين كه يك تداخل را مشاهده كرد ديگر چيزي ارسال نمي كند. به اين مكانيزم CD ( Collision Detection ) گويند.

پروتكل هاي مختلفي بر مبناي CSMA/CD طراحي شده اند كه در زير مثال هايي از اين نوع پروتكل ها آمده است :

 

  • 1 – Persistent
  • non – Persistent
  • p – Persistent

پروتكل هاي بدون اختلال ( Collision Free ) :

 

با وجود اين كه در روش CSMA/CD وقتي كه يك ماشين كانال ارتباطي را در دست گرفت ديگر اختلالي در ارسال اطلاعات به وجود نمي آيد، اما باز هم ممكن است در زمان رقابت براي در دست گرفتن كانال در بين ماشين ها اختلالاتي در روند ارسال به وقوع بپيوندد. و اين موضوع برروي كارايي كانال تاثير منفي مي گذارد.خصوصا هنگامي كه طول كابل ارتباطي زياد باشد و همچنين اندازه بسته ها نيز كوچك باشند.

 

نكته:

روش هاي متعددي وجود دارد كه باعث مي شوند كه اختلالات در هنگام رقابت براي تصاحب خط از ببين برود.

 

از پروتكل هايي كه از مكانيزم Collision Free استفاده مي كنند مي توان نوع هاي زير را نام برد:

 

  • پروتكل نگاشت بيتي
  • پروتكل درختي

 

در اينجا به دليل اهمييت پروتكل درختي به شرح آن مي پردازيم:

 

در پروتكل درختي از يك درخت دودويي استفاده كرده و ايستگاه هاي موجود در شبكه را به عنوان برگ هاي آن در نظر مي گيريم، و به صورت زير عمل مي كنيم:

در ابتدا به كليه ماشين ها ( برگ ها ) اجازه ارسال اطلاعات داده مي شود، اگر فقط يك ماشين داده اي براي ارسال داشته باشد كه اختلالي در روند ارسال روي نمي دهد و داده ها به صورت صحيح بر روي كانال ارسال مي شوند. اما اگر اختلالي پيش بيايد به زير درخت چپ فقط اجازه ارسال داده مي شود و اين روند به صورت بازگشتي ادامه مي يابد تا ديگر ماشيني در شبكه نباشد كه در عمليات ارسال اختلالي ايجاد كند ( شكل 7-1 ) .

 



 

 



 

 


 

 

 

    A         B C D E F G H                            

شكل 7-1

ساختار درخت دودويي در شبكه براي پروتكل درختي

 

 

لايه شبكه ( Network ) :

 

وظيفه لايه شبكه ، كنترل عمل زير شبكه است. مسئله اصلي در اينجا، تعيين چگونگي هدايت و مسير يابي بسته ها از منبع به مقصد است.

بسته ها مي توانند مبتني بر جدول هاي ثابتي باشند كه بر مبناي شبكه سيم كشي شده اي است كه به ندرت تغيير مي كند. آن ها را مي توان در آغاز هر عمل ارسال و يا دريافتي مشخص كرد.

در ديد ديگر مي توان مسير ها را به صورت پويا مشخص كرد تا در هر بار ارسال بهترين و بهينه ترين مسير و كم ازدهام ترين مسير بين فرستنده و گيرنده انتخاب شود.

اگر همزمان بسته هاي زيادي در زير شبكه وجود داشته باشند. مسير عبور را مثل سر بطري تنگ مي كنند و عبور مشكل مي شود.

كنترل اين ازدهام نيز از وظايف لايه شبكه است. بطور كلي، كيفيت، خدمات ( تاخير، زمان انتقال و…) به لايه شبكه مربوط مي شود.

وقتي بسته اي براي رسيدن به مقصد مجبور است از شبكه اي به شبكه ديگر برود، مشكلات زيادي ممكن است به وجود آيد. ممكن است شيوه آدرس دهي در دو شبكه كتفاوت باشد. ممكن است به علت بزرگي بيش از حد بسته، آن را نپذيرد. پروتكل هاي ارتباطي ممكن است متفاوت باشند و مشكلات ديگري از اين قبيل ممكن است در شبكه ها رخ دهد. از بين بردن اين مشكلات براي برقراري اتصال بين دو شبكه ناهمگون، از وظايف لايه شبكه است.

 

نكته :

در شبكه هاي توزيعي، مسئله مسيريابي، چندان مشكل نيست و لذا حضور لايه شبكه بسيار كمرنگ است يا اصلا وجود ندارد.

 

الگوريتم هاي مسير يابي :

 

الگوريتم هاي مسير يابي كه وظيفه آنها هدايت بسته ها از مبدا به مقصد است، قسمتي از نرم افزار لايه شبكه بوده ، كه معين مي كند بسته رسيده بايد به كدام مسير ارسال شود.

الگوريتم هاي مسير يابي مختلفي وجود دارد كه در زير به برخي از آنها اشاره مي كنيم:

 

الگوريتم مسير يابي كوتاهترين مسير ( Shorttest Path ) :

 

اين الگوريتم بسيار ساده بوده و از ايده ساختن يك گراف از شبكه تبعيت مي كند. در اين الگوريتم كوتاه ترين مسير بين مبدا و مقصد ( دو گره گراف ) پيدا مي شود و ارسال اطلاعات بر روي اين مسير صورت مي پذيرد.

 

نكته:

نمونه اي از اين الگوريتم، الگوريتم OSPF مي باشد كه در ماشين هاي مسيرياب ( Router ) تجاري استفاده مي شود ( شكل 8-1 ).

 

در يك شبكه مسيرياب ها به دو صورت متوجه مي شوند كه يكي از مسريابهاي همسايه اش دچار خرابي يا اختلال شده است.

روش اول: اين روش سخت افزاري است يعني هرگاه مسيرياب هيچ سيگنال حمل كننده معتبري بر روي خط ارتباطي نبيند فورا متوجه خرابي در خط مي شود.اين روش در مقايسه با روش هاي ديگر بسيار سريع است، اما ايراد اين روش در اين است كه ممكن است گاهي سيگنال بر بروي خط موجود باشد اما مسير ياب مجاور به دلايلي فعاليت نكند و خراب باشد.

روش دوم: در اين شيوه بسته اي به عنوان بسته سلام در ابتداي ورود مسيرياب به شبكه براي كليه مسيرياب هاي مجاورش ارسال مي شود كه اين بسته حاوي اطلاعات مسيرياب و همچنين هزينه لينك هاي اين مسيرياب به نقاط ديگر شبكه است. اين بسته همچنين در طول مدت فعاليت مسيرياب در فاصله هاي زماني مشخصي براي ديگر مسيرياب ها ارسال مي شود. عدم دريافت بسته سلام از يك مسيرياب همسايه توسط ماشين مسيرياب شبكه فعلي در فاصله زماني كه براي اين منظور تعيين شده است به معني از كار افتادن مسيرياب همسايه است.


شكل 8-1

مسيريابي به روش ospf

 

 

الگوريتم غرق كن ( Flooding ) :

 

يك الگوريتم مسيريابي مي باشد كه در آن هر بسته ورودي به تمام خطوط خروجي بجز خطي كه از آن آمده است ارسال مي شود.

در اين الگوريتم نسخه هاي زيادي از يك بسته در شبكه بوجود خواهد آمد، براي جلوگيري از اين مشكل به هر بسته يك شماره نسبت داده مي شود، كه با عبور از هر مسيرياب يك واحد از آن كم مي شود و اگر اين شماره به صفر برسد بسته در شبكه از بين مي رود. بدين ترتيب از توليد بسته هاي سرگردان در شبكه جلوگيري مي شود.

 

مسيريابي جريان گرا ( Flow-Based Routing ) :

 

در الگوريتم هاي قبلي فقط به فاصله و تعداد مسيرياب هاي بين راه اهمييت داده شده بود و به ترافيك موجود بر روي خط هاي مختلف توجهي نشده بود. اما در اين روش مسيريابي، يك گراف براي شبكه تهيه مي شود كه به هر يال ( مسير ) آن عددي اختصاص داده مي شود كه معرف ترافيك آن مسير از شبكه مي باشد.

بنابراين در اين الگوريتم مسيري براي ارسال انتخاب مي شود كه كمترين ترافيك تا مقصد را داشته باشد ( شكل 9-1 ).

 


شكل 9-1

نمايش گراف شبكه كه به يالهاي آن وزن ( هزينه مسير) اختصاص داده شده است

مسيريابي بردار فاصله :

 

اين الگوريتم مسيريابي در شبكه را به صورت پويا انجام مي دهد. در اين الگوريتم هر مسيرياب در حافظه خود جدولي يا برداري دارد كه در آن بهترين مسير به هر مقصد را نگهداري مي كند و خطي كه براي رسيدن به آن مقصد لازم است را مشخص مي كند.

براي اينكه اين جدول به روز نگاه داشته شود و آخرين تغييرات در آن اعمال شود، مسيرياب هاي موجود در شبكه در فاصله هاي زماني مشخص اين جدول را براي يكديگر ارسال مي كنند و همديگر را از وجود مسير هاي شكسته يا مسير هاي تازه ايجاد شده مطلع مي نمايند ( شكل 10-1 ).

 


شكل 10-1

تبادل جدول مسيريابي در بين مسيرياب هاي موجود در شبكه

 

مسيريابي حالت پيوند :

 

الگوريتم بردار فاصله تنها گره هاي موجود در شبكه و همچنين تاخير زماني بين آن ها را مد نظر قرار مي دهد. اما ممكن است در يك شبكه گسترده بين گره هاي مختلف مسيرهايي با پهناي باند متفاوتي وجود داشته باشد. كه اين موضوع در الگوريتم بردار فاصله ناديده گرفته مي شود. براي رفع اين مشكل الگوريتم حالت پيوند معرفي شد.

در الگوريتم مسيريابي حالت پيوند براي محاسبه هزينه بين دو نقطه از شبكه پهناي باند موجود بين آن دو نقطه در نظر گرفته مي شود . براي اين منظور ابتدا مسيرياب هاي همسايه را تشخيص داده و سپس هزينه ( پهناي باند ) موجود بين آنها را مشخص مي كند و در نهايت اين اطلاعات را براي ديگر مسيرياب هاي مجاورش ارسال مي كند ( شكل 11-1 ).

 


شكل 11-1

مسيريابي سلسله مراتبي :

 

با بزرگ شدن روزافزون شبكه ها جداول مسيريابي نيز بزرگتر مي شوند. حجم بالاي جدول علاوه بر نياز به حافظه بيشتر باعث صرف زمان بيشتري براي جستجو در جدول مسيريابي مي شود.

براي حل اين مشكل از تكنيك مسيريابي سلسله مراتبي استفاده مي شود. در اين تكنيك شبكه به نواحي تقسيم مي شود و هر مسيرياب تمام جزئيات مربوط به مسيريابي بهينه را در قسمت مربوط به خود را مي داند. هرگاه ماشيني بخواهد اطلاعاتي را به خارج از قسمت خود ارسال كند مسيرياب تقاضاي او را به مسيرياب مرزي ( مسيريابي كه بين دو قسمت مجزا فعاليت مي كند ) تحويل مي دهد و مسيرياب مرزي نيز به نوبه خود بسته را به مسيرياب هاي سطوح بالاتر كه جزئيات بيشتري در مورد شبكه مقصد مي دانند تحويل مي دهد و اين روند ادامه مي يابد تا اينكه اطلاعات به شبكه مقصد برسد( شكل 12-1).

 


شكل 12-1

نمايش مسيريابي سلسله مراتبي در شبكه هاي مجزا

 

مسيريابي سيستم هاي سيار :

 

امروزه ميليون ها نفر از كامپيوتر هاي قابل حمل استفاده كرده ، كه علاقه مند به اتصال به شبكه مي باشند.

مسيريابي بسته هاي مربوط به اين كامپيوتر ها بسيار پيچيده مي باشد. براي اين كار بايد عمل مسيريابي در هر منطقه توسط مسيرياب آن منطقه انجام گيرد و ضمن حركت شخص مسيرياب بايد عمليات مسيريابي را به نزديكترين مسيرياب واگذار نمايد ( شكل 13-1 ).

 

از اين نوع شبكه ها مي توان به شبكه تلفن همراه اشاره كرد كه با قرار دادن آنتن هايي در طول مسير عمل مسيريابي متقاضيان استفاده از سرويس را انجام مي دهند.

 

نكته:

در مسيريابي سيستم هاي سيار ، ناحيه تحت پوشش به قسمت هايي تقسيم مي شود. در هر يك از اين قسمت ها مسيرياب يا مسيرياب هايي جهت عمليات مسيريابي در آن ناحيه قرارداده مي شوند. وقتي كه يك ماشين متحرك درخواست استفاده از خدمات شبكه را مي دهد، مسيرياب آن ناحيه ماشين مورد نظر را احراز هويت كرده و در صورت مجاز بودن به استفاده از شبكه، با تعيين سطوح دسترسي به شبكه آن كاربر، اجازه دسترسي به امكانات شبكه را صادر مي كند.

در مرحله بعدي سيستم سيار مجاز است كه با كد هاي خاصي كه به آن داده مي شود، با ديگر قسمت هاي موجود در شبكه ارتباط برقرار كند. و اگر اين ماشين درحين تعامل با شبكه از يك ناحيه به ناحيه ديگري در محدوده سرويس دهي شبكه برود، مسيرياب ناحيه قديمي اطلاعات آن را به مسيرياب ناحيه جديد كه سيستم به آن وارد شده است مي دهد. و از آن پس ديگر مسيرياب جديد عمليات مسير يابي بسته هاي ارسالي و دريافتي ماشين سيار را به بدست مي گيرد. اين عمليات بدين صورت ادامه مي يابد تا زماني كه كاربر ارتباط خود را با شبكه قطع كند يا اينكه از محدوده سرويس دهي شبكه خارج شود.


شكل 13-1

مسيريابي ماشين هاي سيار

 

آدرس IP :

 

در شبكه هاي كامپيوتري مثل اينترنت ميليون ها ماشين فعاليت دارند و مسيرياب ها براي اينكه بداند كه بسته ها مربوط به چه ماشيني هستند و بايد به كدام ماشين تحويل داده شوند، بايد به نحوي ماشين هاي موجود در شبكه از هم تفكيك شوند. يك راه براي تفكيك ماشين هاي موجود در شبكه استفاده از يك شناسه يكتاست. اين شناسه بايد براي هر ماشيني مقداري مستقل داشته باشد تا در شبكه با ماشين هاي ديگر اختلال نداشته باشد. در شبكه به اين شناسه يكتا كه معرف ماشيني خاص است آدرس IP گفته مي شود.

آدرس IP در لايه سوم مشخص شده است و براي مسيريابي و انتقال بسته ها مورد استفاده روتر هاي شبكه قرار مي گيرد.

 

نكته :

آدرس IP شامل شماره شبكه و شماره كامپيوتر موجود درآن شبكه است.

 

آدرس IP بطور استاندارد به صورت چهار عدد در مبناي 10 كه با نقطه از هم جدا شده اند نوشته مي شود.

 

مثال:

66.12.201.180

 

اندازه آدرس IP چهار بايت است و در هر قسمت ( هر يك از بايت ها) مي توان عدد 0 تا 255 قرار گيرد. دليل اين امر اين است كه هر بايت از هشت بيت تشكيل شده است و با هشت بيت حداكثر مي توان عدد 255 را توليد كرد. پس محدوده آدرس هاي IP مي تواند از 0.0.0.0 تا 255.255.255.255 باشد.

 

نكته:

به دليل اينكه بخشي از اين تعداد آدرس IP براي موارد خاصي در نظر گرفته شده است نمي توان از تمامي طول اين رنج براي آدرس دهي شبكه هاي موجود در جهان استفاده كرد. براي درك بيشتر اين موضوع به مثال هاي زير توجه كنيد:

 

127.0.0.1

اين آدرس IP LoopBack نام دارد و در سيستم هاي كامپيوتري براي آزمايش و اشكالزدايي از آن استفاده مي شود. در صورتي كه بسته اي را به اين آدرس ارسال كنيم، اين بسته تا سطح لايه فيزيكي پايين رفته و دوباره به ماشين برگردانده مي شود. بدين ترتيب مي توانيم ايرادات احتمالي در سيستم شبكه يك ماشين را كشف كنيم.

 

255.255.255.255

از اين آدرس براي ارسال يك بسته به تمامي ماشين هاي موجود درشبكه استفاده مي شود و به آن Broadcast گويند.

 

0.0.0.0

اين آدرس يك آدرس نامعتبر است و بيشتر در مسيرياب ها براي عمليات مسيريابي و استفاده در پروتكل هاي مسيرياب از آن استفاده مي شود.

 

192.168.0.0

اين آدرس يك Invalid IP است و از آن مي توان براي ماشين هايي استفاده كرد كه مستقيم به شبكه جهاني اينترنت وصل نيستند ( در شبكه هاي خصوصي مستقل استفاده مي شود).

 

اجزاي آدرس IP :

 

يك آدرس IP از دو بخش تشكيل شده است. بخش اول كه مقداري از فضاي 32 بيتي آدرس IP را به خود اختصاص مي دهد و مشخص كننده شبكه اي است كه ماشين به آن تعلق دارد و براي تمام ماشين هاي موجود در يك شبكه يكسان است. و بخش دوم كه آدرس ماشين موجود در شبكه است. اين بخش بقيه بيت هاي موجود در آدرس IP را به خود اختصاص مي دهد. بديهي است كه هر چه آدرس شبكه كوچكتر باشد، مي توان ماشين هاي بيشتري را در آن شبكه تعريف كرد و گنجاند و عكس اين موضوع نيز درست است يعني هر چه تعداد بيشتري از بيت هاي آدرس IP به آدرس دهدي شبكه اختصاص يابد، تعداد كمتري ماشين مي توانند در آن شبكه فعاليت كنند.

 

مثال:

217.219.211.10

217.219.211.50

217.219.211.180

تمام آدرس هاي فوق مربوط به ماشين هاي موجود در يك شبكه هستند.

 

نكته:

به بخش مربوط به مشخصه شبكه در آدرس IP ، NetID گفته مي شود.

 

كلاس هاي آدرس IP :

 

در سيستم آدرس IP ما مي توانيم 2 به توان 32 ماشين در جهان را آدرس دهدي كنيم. يعني حدود چهار ميليارد و سيصد ميليون ماشين. در دنياي شبكه هاي كامپيوتري براي نظم دادن به شبكه ها و همچنين سرعت بخشيدن به عمليات مسيريابي آدرس هاي IP را در قالب هاي خاصي منظم كرده اند كه به اين قالب ها كلاس آدرس IP گويند.

يك كلاس آدرس IP از بخش هاي زير تشكيل شده است:

NetWork Address / SubNet Address / Machine Address

 

در قسمت اول از سمت چپ آدرس شبكه مشخص مي شود در قسمت وسط آدرس زير شبكه و در نهايت در قسمت سمت راست آدرس ماشين در شبكه بيان مي شود.

 

نكته:

اين تقسيم بندي آدرس IP به دستگاه هاي مسيرياب اين امكان را مي دهند كه به سرعت عمليات مسيريابي را انجام دهند، و بسته ها را به مسيرياب هاي مناسبي تحويل دهند.

 

كلاس هاي پنج گانه:

آدرس IP به پنج كلاس A,B,C,D,E تقسيم مي شود.

 

كلاس نوع A :

 

در كلاس A اولين بيت سمت چپ با ارزشترين رقم آدرس IP صفر است ( شكل 14-1 ).

 

 

 

Host ID

 

 

NetWork ID

 

0 


 


31 Bit

 

شكل 14-1

نمايش ساختار آدرس IP در كلاس A

 

در كلاس A هفت بيت باقيمانده از اولين بايت سمت چپ آدرس شبكه را مشخص مي كند و 24 بيت سمت راست آدرس زير شبكه يا ماشين موجود در اين شبكه را نمايش مي دهد.

 

نكته:

به دليل اينكه براي آدرس دهي شبكه در كلاس A تنها هفت بيت وجود دارد، در كلاس A مي توان 127 شبكه مجزا تعريف كرد.

 

نكته:

در كلاس A مي توان هفده ميليون ماشين در هر شبكه تعريف كرد. اين امر به دليل اين است كه براي آدرس دهي يك ماشين از 24 بيت استفاده مي شود.

 

نكته:

آدرس كلاس A‌ به دليل گستردگي شبكه اي در آن در اختيار شبكه هاي بزرگ جهاني است.

 

مثالي از آدرس IP كلاس A :

65.156.35.45

در مثال فوق عدد 65 آدرس شبكه و اعداد 156.35.45 آدرس ماشين است.

 

نكته:

براي اينكه با ديدن يك آدرس IP ‌تشخيص دهيم كه كلاس نوع A است يا خير، كافيست كه به بايت سمت چپ آن نگاه كنيم. اگر عددي بين 1 تا 126 بود آن IP‌ آدرس يك IP‌ در كلاس A است.

 

كلاس نوع B :

 

در كلاس B دو بيت سمت چپ پرارزشترين رقم 10‌است ( شكل 15-1 ).

 

 

 

Host ID

 

 

NetWork ID

 

0 

1 


 


30 Bit

 

شكل 15-1

نمايش ساختار آدرس IP در كلاس B

 

در كلاس B براي آدرس دهي شبكه از 14 بيت مورد استفاده قرار مي گيرد ( از دوبايت سمت چپ 2 بيت براي مشخص كردن كلاس B و 14 بيت براي مشخص كردن آدرس شبكه ).

 

نكته :

در كلاس B با 14 بيت مي توان 2 به توان 14( شانزده هزار و سيصد و هشتاد و دو ) شبكه مختلف تعريف كرد.

 

نكته :

در كلاس B دو بايت سمت راست براي مشخص كردن آدرس ماشين هاي موجود در شبكه به كار مي رود. با تعداد 16 بيت مي توان 2 به توان 16 بيت ماشين مختلف در شبكه هايي با كلاس IP ، B تعريف كرد.

 

نكته:

تمام 16 هزار شبكه اي كه مي توان با كلاس B تعريف كرد، به شبكه هاي بزرگ در جهان اختصاص داده شده و امروزه ديگر نمي توان شبكه اي با اين كلاس ثبت كرد.

 

مثالي از آدرس دهي در كلاس B :

146.36.45.96

 

در اين مثال عدد 146.36 آدرس شبكه و عدد 45.96 آدرس ماشين است.

 

نكته:

آدرس IP در كلاس B را مي توان با مقدار بايت سمت چپ آن تشخيص داد. اگر بايت سمت چپ يك IP عددي بين 128 تا 191 بود، آن آدرس IP يك آدرس در كلاس B است.

 

آدرس IP با قالب زير يك آدرس IP‌ در كلاس B است:

128-191.X.X.X

 

كلاس نوع C‌ :

 

در كلاس C سه بيت سمت چپ پرارزشترين رقم 110‌است ( شكل 16-1 ).

 

 

 

Host ID

 

 

NetWork ID

 

0 

1 

1 


 


29 Bit

 

شكل 16-1

نمايش ساختار آدرس IP در كلاس C

 

در كلاس C براي بخش آدرس شبكه 21 بيت در نظر گرفته شده است يعني سه بايت سمت چپ منهاي سه بيت كه مشخص كننده كلاس C است. و براي قسمت آدرس دهي ماشين ها يك بايت سمت راست رزرو شده ، كه مي تواند تا 254 ماشين در يك شبكه را آدرس دهي كند.

 

نكته:

در كلاس نوع C به دليل اينكه 21 بيت براي آدرس دهي شبكه در نظر گرفته شده است، مي توان تا حدود دو ميليون شبكه در اين كلاس تعريف كرد.

 

نكته:

در كلاس نوع C تنها در هر شبكه مي توان 254 ماشين داشت. زيرا براي آدرس دهي ماشين ها در اين نوع كلاس فقط مي توان از هشت بيت استفاده كرد.

 

نكته:

كلاس C پراستفاده ترين نوع كلاس در انواع كلاس هاي آدرس IP است و شركت هاي زيادي در دنيا از اين نوع كلاس استفاده مي كنند.

 

مثال :

217.219.211.16

در مثال بالا اعداد 217.219.211 آدرس شبكه و عدد 16 آدرس ماشين است.

 

نكته:

در كلاس نوع C بايت سمت چپ آدرس IP مي تواند عددي بين 192 تا 223 باشد. يعني اگر آدرس IP با قالب زير وجود داشته باشد يك IP‌از نوع كلاس C است:

192-223.X.X.X

 

كلاس نوع D :

 

در كلاس نوع D چهار بيت پرارزش بايت سمت چپ 1110 است ( شكل 17-1).

 

 

 

 

NetWork ID

 

0 

1 

1 

1 


 


28 Bit

 

شكل 17-1

نمايش ساختار آدرس IP در كلاس D

 

از اين آدرس براي ارسال همزمان به چندين ماشين استفاده مي شود.

 

كلاس نوع E :

 

در كلاس نوع E پنج بيت پرارزش بايت سمت چپ 11110 است ( شكل 18-1).

 

 

 

NetWork ID

 

0 

1 

1 

1 


 


27 Bit

 

شكل 18-1

نمايش ساختار آدرس IP در كلاسE

 

اين كلاس در حال حاضر كاربردي ندارد و براي استفاده در آينده درنظر گرفته شده است.

 

كنترل ازدحام :

 

از وظايف ديگر لايه شبكه كنترل ازدحام شبكه مي باشد. وقتي كه تعداد بسته ها در يك قسمت از شبكه زياد شود، كارايي آن نقطه از شبكه كاهش مي يابد و اصطلاحا گفته مي شود ازدحام بوجود آمده است. در اين حالت ديگر مسيرياب قادر به مسيريابي بسته ها در شبكه نمي باشد. و بسته ها در مسيرياب از بين خواهند رفت.

لايه شبكه براي جلوگيري و رفع پديده ازدحام از الگوريتم هاي مختلفي استفاده مي كند كه در زير به تعدادي از آنها اشاره مي كنيم:

 

  • الگوريتم سطل سوراخ دار
  • الگوريتم سطل نشانه
  • الگوريتم تخليه بار

 

لايه انتقال ( Transport ) :

 

وظيفه اصلي لايه انتقال، پذسرش داده ها از لايه تماس، خرد كردن آن ها به واحد هاي كوچكتر ( در صورت لزوم )، انتقال انها به لايه شبكه و كسب اطمينان ازدريافت صحيح اين قطعات در انتهاي ديگر است. علاوه بر اين، تمام كارها باد به طور بهينه انجام شوند تا لايه هاي بالاتر را از تغييرات اجباري در تكنولوژي سخت افزار مصون كند.

رايج ترين نوع اتصال در لايه انتقال، تماس نقطه به نقطه ( Point To Point ) بدون خطاست، كه پيام ها يا بايت ها را به ترتيب ارسال، تحويل مي دهد.

 

انواع ديگر خدمات اتصال :

 

  • انتقال پيام هاي مستقل بدون تضمين حفظ ترتيب به هنگام تحويل
  • پخش پيام به مقصد هاي چندگانه

 

نكته:

نوع خدمات پس از برقراري اتصال مشخص مي شود ( دستيابي به خط هايي بدون خطا امكان پذير نيست. هدف از خط بدون خطا اين است كه نرخ خطا به حدي باشد كه بتوان از آن صرف نظر كرد).

 

لايه انتقال يك لايه انتها به انتهاي واقعي است. به بيان ديگر، برنامه اي در ماشين منبع به كمك هدر پيام و پيام هاي كنترلي، با برنامه مشابه در ماشين مقصد ارتباط برقرا ر مي كند.

 

توجه :

لايه هاي يك تا سه را لايه هاي گام به گام ( Hop to Hop ) گويند. يعني ارتباط در اين لايه ها مستقيما با لايه هاي متناظر در ماشين مقصد برقرار نمي شود بلكه در طول مسير بين مسيرياب هاي مختلف تا رسيدن به مقصد به صورت زنجيره اي برقرار است. اما در لايه چهار تا لايه هفت ارتباط انتها به انتها ( End to End ) وجود دارد يعني اين لايه ها به صورت مستقيم با لايه هاي متناظر خود در ماشين مقصد ارتباط برقرار مي كنند ( شكل 19-1 ).

 

توجه:

توجه داشته باشيد كه مسيرياب ها فقط نياز به سه لايه اول يعني لايه هاي فيزيكي ، پيوند دادها و لايه شبكه دارند. و ديگر به لايه هاي بالاتر براي انجام وظيفه نيازي ندارند. وقتي بسته اي به يك مسيرياب مي رسد ، مسيرياب آن بسته را تحويل مسيرياب بعدي خود مي دهد و اين روند تا جايي ادامه مي يابد كه بسته به مقصد برسد وقتي بسته به مقصد رسيد، متناظر با نوع بسته بين لايه هاي بالاتر يك ارتباط انتها به انتها برقرار مي شود و تحت اين ارتباط دو ماشين به تبادل اطلاعات با يكديگر مي پردازند.


شكل 19-1

 

در اين لايه مفاهيم سوكت قرار داده شده و برنامه هاي كاربردي كه در لايه هفتم ( Application ) مدل گنجانده شده اند با استفاده از يك آدرس منحصر به فرد و همچنين يك شماره كه مشخص كننده برنامه است با ديگر كامپيوتر ها به تبادل اطلاعات در شبكه مي پردازند. در لايه برنامه هاي كاربردي كه لايه شماره هفت از مدل OSI است، ممكن است چندين برنامه مجزا به طور مستقل بر روي شبكه فعاليت داشته باشند يعني به ارسال و دريافت بسته بر روي شبكه مبادرت كنند. تمام بسته هايي كه به يك ماشين وارد مي شوند يا بسته هايي كه قرار است از ماشين به سوي يك مقصد خاص خارج شوند، تحويل لايه انتقال داده مي شوند. لايه انتقال براي اينكه بداند كه هر بسته متعلق به كدام برنامه كاربردي در لايه هفتم است، به آن يك شماره مشخصه يكتا مي دهد كه اين شماره مي تواند بين 1 تا عدد 65535 باشد. اين عدد را اصطلاحا شماره پورت گويند ( شكل 20-1) .

 


شكل 20-1

نمايش مفاهيم مختلف در لايه هاي 7 گانه

 

انواع پورت :

 

در شبكه بنا به كاربرد هاي خاص دو نوع پورت وجود دارد:

 

  • پورت هاي نوع TCP يا اتصال گرا. اين نوع پورت ها براي برقراري ارتباط از پروتكل TCP استفاده مي كنند.

 

  • پورت هاي نوع UDP يا غير اتصال گرا. اين نوع پورت ها براي برقراري ارتباط از پروتكل UDP استفاده مي كنند.

 

پروتكل TCP :

 

پروتكل TCP در شبكه براي برقراري يك ارتباط امن بين گيرنده و فرستنده استفاده مي شود. اين پروتكل به بسته هاي ارسالي هدري مانند شكل 21-1 اضافه مي كند.

 

اين هدر حاوي فيلد هايي است كه فرستنده وگيرنده توسط آن مي توانند با يكديگر ارتباط برقرار كرده و در روند عمليات ارسال و دريافت بسته ها جزئيات كار را به اطلاع هم برسانند.

 


 

شكل 21-1

هدر مربوط به بسته هاي TCP

 

در اين هدر معاني فيلد ها به شرح زير است:

 

  • فيلد Source Port شماره پورت برنامه مبدا را مشخص مي كند.

 

  • Destination Port شماره پورت برنامه مقصد را نگهداري مي كند.

 

  • فيلد Sequence Number شماره اي است كه به هر بسته براي حفظ ترتيب داده مي شود. ( از اين فيلد براي فرستادن Ack نيز استفاده مي شود).

 

  • در فيلد Ack Number شماره بسته اي كه مي خواهيم Ack آنرا ارسال كنيم قرار مي گيرد.

 

  • TCP Header Length مشخص مي كند كه طوا هدر TCP چند كلمه 32 بيتي است.

 

  • هر گاه بيت URG برابر يك باشد آنگاه مقدار فيلد Urgent Pointer مكان بيت را نسبت به مكان جاري داده هاي بلادرنگ نشان خواهد داد. ( بجاي پيام هاي وقفه مورد استفاده قرار مي گيرد)

 

  • هر گاه بيت Ack برابر يك باشد نشان مي دهد كه فيلد Ack Number‌ معتبر بوده و اگر برابر صفر باشد آن فيلد اعتبار نخواهد داشت.

 

  • اگر بيت Psh برابر يك باشد يعني اينكه داده بلافاصله به لايه Application تحويل داده شود ( براي مواردي كه كاربرد هاي بلادرنگ مد نظر است) .

 

  • اگر بيت Rst برابر يك شود، يعني در اين ارتباط فرستنده مايل است كل عمليات تجديد شود.

 

  • اگر بيت Syn صفر باشد ، بدين معناست كه اتصال فعال وجود ندارد.

 

  • اگر Syn=1 ، Acd=Q يعني درخواست اتصال.

 

  • اگر Syn=1 ، Ack=1 يعني در خواست اتصال پذيرفته شده است.

 

  • براي قط ارتباط بيت FIN برابر يك مي شود.

 

  • فيلد Check Sum براي كشف خطا در لايه انتقال بكار مي رود.

 

  • فيلد Option براي اين است كه امكاناتي كه توسط هدر معمولي ارائه نشده ، بتوان به اين قسمت اضافه نمود. حداكثر طول اين قسمت 536 بايت مي باشد.

 

  • در قسمت Data داده هاي اصلي بسته جاي داده مي شوند.

 

 

نكته:

ارتباط نوع اتصال گرا بدين معني است كه : مبدا و مقصد براي برقراري ارتباط بين خود، قبل از هر گونه ارسال داده، اقدام به هماهنگي مي كنند. و نهايتا هماهنگي به وجود آمده را ختم مي كنند و عمليات ارسال و دريافت را خاتمه مي دهند.

 

روش برقراري ارتباط در پروتكل TCP :

 

براي برقراري ارتباط بين فرستنده و گيرنده در پروتكل TCP از شيوه دست تكاني ( Hand Shacking ) سه مرحله اي استفاده مي شود.

 

مراحل سه گانه برقراري ارتباط در قرارداد TCP به شرح زير است:

 

مرحله اول :

در اين مرحله ابتدا از طرف شروع كننده ارتباط يك بسته TCP تهي ( بدون اطلاعات ) به سمت گيرنده ارسال مي شود. در هدر اين بسته بيت Syn=1 و فيلد Ack=0 شده است. و همچنين در فيلد Sequence Number شماره ترتيب داده هاي ارسالي نيز گنجانده شده.

 

نكته:

شماره فيلد Sequence Number به گيرنده اعلام مي كند كه شماره بسته هاي ارسالي از شماره فيلد Sequence Number بعلاوه عدد يك شروع مي شود.

 

نكته:

در شبكه هاي كامپيوتري براي اينكه مشكلي در روند ارسال اطلاعات بوجود نيايد، شماره Sequence Number از عدد صفر شروع نمي شود. عدد نوشته شده در اين فيلد به صورت تصادفي توليد مي شود.

 

مثال :

اگر در فيلد Sequence Number عدد 65 نوشته شود بدين معني است كه داده هاي ارسالي از طرف فرستنده به گيرنده از شماره 66 شماره گذاري مي شوند.

 

مرحله دوم :

گيرنده با دريافت بسته اي كه در هدر آن بيت Syn=1 و بيت Ack=0 شده است، اگر بخواهد ارتباط را برقرار كند يك بسته خالي كه در هدر آن بيت هاي Syn=1 ، Ack=1 و همچنين فيلد Ack Number را برابر مقدار فيلد Sequence Number بعلاوه يك كرده است به سوي تقاضا كنند اتصال، ارسال مي كند.

 

نكته:

اگر گيرنده بسته تقاضاي اتصال ، بخواهد تقاضاي اتصال را رد كند، بيت Rst را در هدر TCP برابر يك مي كند و اين بسته را به فرستنده برمي گرداند.

 

مرحله سوم :

در اين مرحله شروع كننده ارتباط با تنظيم كردن فيلد هاي زير درهدر يك بسته TCP به گيرنده اطلاع مي دهد كه آماده ارسال اطلاعات است:

 

 

 

  • بيت Syn را يك مي كند.

 

  • بيت Ack را برابر يك مي كند.

 

  • فيلد Sequence Number را تنظيم مي كند.

 

  • فيلد Ack Number را برابر مقدار فيلد Sequence Number بسته دريافتي مي كند.

 

پس از اتمام مراحل فوق دو طرف آماده ارسال و دريافت داده مي باشند.

 

خاتمه روند ارسال و دريافت :

در پايان ارتباط هر كدام از طرفين كه بخواهند مي توانند با تنظيم بيت Fin برابر يك به ارسال اطلاعات به صورت يكطرفه خاتمه دهند ولي در صورتي كه طرف مقابل باز هم بسته اي براي ارسال داشته باشد، مي تواند اين بسته ها را به صورت يك طرفه براي گيرنده ارسال كند.

 

نكته:

اگر هر كدام از طرفين بر اثر مشكل سخت افزاري يا نرم افزاري ارتباط را بدون هماهنگي با طرف مقابل قطع كند، براي برقراري ارتباط مجدد تا 120 ثانيه بايد منتظر بماند. اين امر به خاطر اين است كه بسته هاي ارسالي سرگردان ، ماشيني كه بدون هماهنگي قطع شده است نتوانسته آنها را دريافت كند، از زير شبكه حذف شوند.

 

نكته:

در برقراري ارتباط در حالت پروتكل TCP طرفين بعد از دريافت هر بسته اي به صورت صحيح فرستنده را با ارسال يك Ack آگاه مي كنند.

 

پروتكل UDP :

 

هرگاه داده ها بدون هماهمگي قبلي و بدون مبادله هيچ بسته اطلاع دهنده اي بين دو ماشين گيرنده و فرستنده رد وبدل شود، اصطلاحا به اين گونه ارتباط، ارتباط ” بدون اتصال يا Connection less ” گويند.

 

نكته:

در پروتكل UDP گيرنده بعد از دريافت هر بسته هيچ اطلاعي به فرستنده مبني بر درست دريافت كردن بسته يا خرابي آن نمي دهد.

 

نكته:

در پروتكل UDP براي اتمام انتقال اطلاعات نيز هيچ پيامي بين فرستنده و گيرنده مبادله نمي شود.

 

توجه :

پروتكل UDP بدين صورت عمل مي كند كه، اگر ماشيني بسته اي را بخواهد براي ماشين ديگر ارسال كند، بدون هماهنگي قبيلي شروع به اين كار مي كند. در طرف مقابل هم ماشين گيرنده اگر بخواهد بسته ها را دريافت مي كند و اگر هم نخواهد آنها را دور مي ريزد. در طول اين روند هم هيچ اطلاعاتي بين فرستنده و گيرنده رد و بدل نخواهد شد.

 

بسته هاي پروتكل UDP نيز داراي هدري مخصوص به خود هستند. ولي اين هدر در مقايسه به هدر بسته هاي نوع TCP بسيار ساده تر است، زيرا ديگر نيازي به فيلد ها و بيت هاي كنترلي مختلف در هدر UDP نيست.

 

در شكل 22-1 مي توانيد هدر مربوط به بسته هاي UDP را مشاهده كنيد:


شكل 22-1

هدر مربوط به بسته هاي UDP

 

در هدر بسته هاي UDP معناي هر فيلد به شرح زير است:

 

  • فيلد Source Port شماره پورت برنامه مبدا را مشخص مي كند.

 

  • Destination Port شماره پورت برنامه مقصد را نگهداري مي كند.

 

  • فيلد Length‌ نيز طول كل بسته را نگهداري مي كند.

 

  • فيلد Check Sum براي كشف خطا در لايه انتقال بكار مي رود.

 

  • قسمت Data نيز داده هاي اصلي كه بايد انتقال داده شوند را نگهداري مي كند.

 

نكته:

پروتكل هاي بدون اتصال در روند ارسال و دريافت نامطمئن هستند ولي در عوض به خاطر حجم كم عمليات بسيار سريعتر از پروتكل هاي TCP عمل مي كنند.

 

نكته:

تعداد پورت هاي قابل تعريف در سيستم هاي كامپيوتري 65535 عدد مي باشد زيرا در هدر هاي بسته هاي TCP و همچنين بسته هاي UDP 16 بيت براي نمايش شماره پورت در نظر گرفته شده است. و همانطور كه مي دانيد بيشترين مقداري كه مي توانيم با 16 بيت نمايش دهيم عدد 65535 است. از اين تعداد پورت 1024 تاي اول آن براي مقاصد خاصي كه پروتكل هاي استاندارد تبادل اطلاعات در شبكه هستند در نظر گرفته شده است. نظير سرويس HTTP كه بر روي پورت 80 فعاليت مي كند يا سرويس DayTime كه سرويسي براي نمايش ساعت ماشين ميزبان است و بر روي پورت 13 فعاليت مي كند. براي نوشتن برنامه هاي جديد مجاز به انتخاب شماره هايي از 1 تا 1024 به عنوان شماره پورت برنامه نيستيم ولي مي توانيم از عدد 1024 تا 65535 كه آزاد است شماره پورت برنامه خود را انتخاب كنيم.

 

شماره و مشخصات فني پورت هاي 150-1 :

 

 

Keyword Decimal Description

——- ——- ———–

0/tcp Reserved

0/udp Reserved

tcpmux 1/tcp TCP Port Service

tcpmux 1/udp TCP Port Service

compressnet 2/tcp Management Utility

compressnet 2/udp Management Utility

compressnet 3/tcp Compression Process

compressnet 3/udp Compression Process

# Bernie Volz

# 4/tcp Unassigned

# 4/udp Unassigned

rje 5/tcp Remote Job Entry

rje 5/udp Remote Job Entry

# 6/tcp Unassigned

# 6/udp Unassigned

echo 7/tcp Echo

echo 7/udp Echo

# 8/tcp Unassigned

# 8/udp Unassigned

discard 9/tcp Discard

discard 9/udp Discard

# 10/tcp Unassigned

# 10/udp Unassigned

systat 11/tcp Active Users

systat 11/udp Active Users

# 12/tcp Unassigned

# 12/udp Unassigned

daytime 13/tcp Daytime

daytime 13/udp Daytime

# 14/tcp Unassigned

# 14/udp Unassigned

# 15/tcp Unassigned [was netstat]

# 15/udp Unassigned

# 16/tcp Unassigned

# 16/udp Unassigned

qotd 17/tcp Quote of the Day

qotd 17/udp Quote of the Day

msp 18/tcp Message Send Protocol

msp 18/udp Message Send Protocol

chargen 19/tcp Character Generator

chargen 19/udp Character Generator

ftp-data 20/tcp File Transfer [Default Data]

ftp-data 20/udp File Transfer [Default Data]

ftp 21/tcp File Transfer [Control]

ftp 21/udp File Transfer [Control]

# 22/tcp Unassigned

# 22/udp Unassigned

telnet 23/tcp Telnet

telnet 23/udp Telnet

24/tcp any private mail system

24/udp any private mail system

smtp 25/tcp Simple Mail Transfer

smtp 25/udp Simple Mail Transfer

# 26/tcp Unassigned

# 26/udp Unassigned

nsw-fe 27/tcp NSW User System FE

nsw-fe 27/udp NSW User System FE

# 28/tcp Unassigned

# 28/udp Unassigned

msg-icp 29/tcp MSG ICP

msg-icp 29/udp MSG ICP

# 30/tcp Unassigned

# 30/udp Unassigned

msg-auth 31/tcp MSG Authentication

msg-auth 31/udp MSG Authentication

# 32/tcp Unassigned

# 32/udp Unassigned

dsp 33/tcp Display Support Protocol

dsp 33/udp Display Support Protocol

# 34/tcp Unassigned

# 34/udp Unassigned

35/tcp any private printer server

35/udp any private printer server

# 36/tcp Unassigned

# 36/udp Unassigned

time 37/tcp Time

time 37/udp Time

rap 38/tcp Route Access Protocol

rap 38/udp Route Access Protocol

rlp 39/tcp Resource Location Protocol

rlp 39/udp Resource Location Protocol

# 40/tcp Unassigned

# 40/udp Unassigned

graphics 41/tcp Graphics

graphics 41/udp Graphics

nameserver 42/tcp Host Name Server

nameserver 42/udp Host Name Server

nicname 43/tcp Who Is

nicname 43/udp Who Is

mpm-flags 44/tcp MPM FLAGS Protocol

mpm-flags 44/udp MPM FLAGS Protocol

mpm 45/tcp Message Processing Module [recv]

mpm 45/udp Message Processing Module [recv]

mpm-snd 46/tcp MPM [default send]

mpm-snd 46/udp MPM [default send]

ni-ftp 47/tcp NI FTP

ni-ftp 47/udp NI FTP

auditd 48/tcp Digital Audit Daemon

auditd 48/udp Digital Audit Daemon

login 49/tcp Login Host Protocol

login 49/udp Login Host Protocol

re-mail-ck 50/tcp Remote Mail Checking Protocol

re-mail-ck 50/udp Remote Mail Checking Protocol

la-maint 51/tcp IMP Logical Address Maintenance

la-maint 51/udp IMP Logical Address Maintenance

xns-time 52/tcp XNS Time Protocol

xns-time 52/udp XNS Time Protocol

domain 53/tcp Domain Name Server

domain 53/udp Domain Name Server

xns-ch 54/tcp XNS Clearinghouse

xns-ch 54/udp XNS Clearinghouse

isi-gl 55/tcp ISI Graphics Language

isi-gl 55/udp ISI Graphics Language

xns-auth 56/tcp XNS Authentication

xns-auth 56/udp XNS Authentication

57/tcp any private terminal access

57/udp any private terminal access

xns-mail 58/tcp XNS Mail

xns-mail 58/udp XNS Mail

59/tcp any private file service

59/udp any private file service

60/tcp Unassigned

60/udp Unassigned

ni-mail 61/tcp NI MAIL

ni-mail 61/udp NI MAIL

acas 62/tcp ACA Services

acas 62/udp ACA Services

# 63/tcp Unassigned

# 63/udp Unassigned

covia 64/tcp Communications Integrator (CI)

covia 64/udp Communications Integrator (CI)

tacacs-ds 65/tcp TACACS-Database Service

tacacs-ds 65/udp TACACS-Database Service

sql*net 66/tcp Oracle SQL*NET

sql*net 66/udp Oracle SQL*NET

bootps 67/tcp Bootstrap Protocol Server

bootps 67/udp Bootstrap Protocol Server

bootpc 68/tcp Bootstrap Protocol Client

tftp 69/tcp Trivial File Transfer

tftp 69/udp Trivial File Transfer

gopher 70/tcp Gopher

gopher 70/udp Gopher

netrjs-1 71/tcp Remote Job Service

netrjs-1 71/udp Remote Job Service

netrjs-2 72/tcp Remote Job Service

netrjs-2 72/udp Remote Job Service

netrjs-3 73/tcp Remote Job Service

netrjs-3 73/udp Remote Job Service

netrjs-4 74/tcp Remote Job Service

netrjs-4 74/udp Remote Job Service

75/tcp any private dial out service

75/udp any private dial out service

deos 76/tcp Distributed External Object Store

deos 76/udp Distributed External Object Store

77/tcp any private RJE service

77/udp any private RJE service

vettcp 78/tcp vettcp

vettcp 78/udp vettcp

finger 79/tcp Finger

finger 79/udp Finger

www-http 80/tcp World Wide Web HTTP

www-http 80/udp World Wide Web HTTP

hosts2-ns 81/tcp HOSTS2 Name Server

hosts2-ns 81/udp HOSTS2 Name Server

xfer 82/tcp XFER Utility

xfer 82/udp XFER Utility

mit-ml-dev 83/tcp MIT ML Device

mit-ml-dev 83/udp MIT ML Device

ctf 84/tcp Common Trace Facility

ctf 84/udp Common Trace Facility

mit-ml-dev 85/tcp MIT ML Device

mit-ml-dev 85/udp MIT ML Device

mfcobol 86/tcp Micro Focus Cobol

mfcobol 86/udp Micro Focus Cobol

87/tcp any private terminal link

87/udp any private terminal link

kerberos 88/tcp Kerberos

kerberos 88/udp Kerberos

su-mit-tg 89/tcp SU/MIT Telnet Gateway

su-mit-tg 89/udp SU/MIT Telnet Gateway

dnsix 90/tcp DNSIX Securit Attribute Token Map

dnsix 90/udp DNSIX Securit Attribute Token Map

mit-dov 91/tcp MIT Dover Spooler

mit-dov 91/udp MIT Dover Spooler

npp 92/tcp Network Printing Protocol

npp 92/udp Network Printing Protocol

dcp 93/tcp Device Control Protocol

dcp 93/udp Device Control Protocol

objcall 94/tcp Tivoli Object Dispatcher

objcall 94/udp Tivoli Object Dispatcher

supdup 95/tcp SUPDUP

supdup 95/udp SUPDUP

dixie 96/tcp DIXIE Protocol Specification

dixie 96/udp DIXIE Protocol Specification

swift-rvf 97/tcp Swift Remote Vitural File Protocol

swift-rvf 97/udp Swift Remote Vitural File Protocol

tacnews 98/tcp TAC News

tacnews 98/udp TAC News

metagram 99/tcp Metagram Relay

metagram 99/udp Metagram Relay

newacct 100/tcp [unauthorized use]

hostname 101/tcp NIC Host Name Server

hostname 101/udp NIC Host Name Server

iso-tsap 102/tcp ISO-TSAP

iso-tsap 102/udp ISO-TSAP

gppitnp 103/tcp Genesis Point-to-Point Trans Net

gppitnp 103/udp Genesis Point-to-Point Trans Net

acr-nema 104/tcp ACR-NEMA Digital Imag. & Comm. 300

acr-nema 104/udp ACR-NEMA Digital Imag. & Comm. 300

csnet-ns 105/tcp Mailbox Name Nameserver

csnet-ns 105/udp Mailbox Name Nameserver

3com-tsmux 106/tcp 3COM-TSMUX

3com-tsmux 106/udp 3COM-TSMUX

rtelnet 107/tcp Remote Telnet Service

rtelnet 107/udp Remote Telnet Service

snagas 108/tcp SNA Gateway Access Server

snagas 108/udp SNA Gateway Access Server

pop2 109/tcp Post Office Protocol – Version 2

pop2 109/udp Post Office Protocol – Version 2

pop3 110/tcp Post Office Protocol – Version 3

pop3 110/udp Post Office Protocol – Version 3

sunrpc 111/tcp SUN Remote Procedure Call

sunrpc 111/udp SUN Remote Procedure Call

mcidas 112/tcp McIDAS Data Transmission Protocol

mcidas 112/udp McIDAS Data Transmission Protocol

auth 113/tcp Authentication Service

auth 113/udp Authentication Service

audionews 114/tcp Audio News Multicast

audionews 114/udp Audio News Multicast

sftp 115/tcp Simple File Transfer Protocol

sftp 115/udp Simple File Transfer Protocol

ansanotify 116/tcp ANSA REX Notify

ansanotify 116/udp ANSA REX Notify

uucp-path 117/tcp UUCP Path Service

uucp-path 117/udp UUCP Path Service

sqlserv 118/tcp SQL Services

sqlserv 118/udp SQL Services

nntp 119/tcp Network News Transfer Protocol

nntp 119/udp Network News Transfer Protocol

cfdptkt 120/tcp CFDPTKT

cfdptkt 120/udp CFDPTKT

erpc 121/tcp Encore Expedited Remote Pro.Call

erpc 121/udp Encore Expedited Remote Pro.Call

smakynet 122/tcp SMAKYNET

smakynet 122/udp SMAKYNET

ntp 123/tcp Network Time Protocol

ntp 123/udp Network Time Protocol

ansatrader 124/tcp ANSA REX Trader

ansatrader 124/udp ANSA REX Trader

locus-map 125/tcp Locus PC-Interface Net Map Ser

locus-map 125/udp Locus PC-Interface Net Map Ser

unitary 126/tcp Unisys Unitary Login

unitary 126/udp Unisys Unitary Login

locus-con 127/tcp Locus PC-Interface Conn Server

locus-con 127/udp Locus PC-Interface Conn Server

gss-xlicen 128/tcp GSS X License Verification

gss-xlicen 128/udp GSS X License Verification

pwdgen 129/tcp Password Generator Protocol

pwdgen 129/udp Password Generator Protocol

cisco-fna 130/tcp cisco FNATIVE

cisco-fna 130/udp cisco FNATIVE

cisco-tna 131/tcp cisco TNATIVE

cisco-tna 131/udp cisco TNATIVE

cisco-sys 132/tcp cisco SYSMAINT

cisco-sys 132/udp cisco SYSMAINT

statsrv 133/tcp Statistics Service

statsrv 133/udp Statistics Service

ingres-net 134/tcp INGRES-NET Service

ingres-net 134/udp INGRES-NET Service

loc-srv 135/tcp Location Service

loc-srv 135/udp Location Service

profile 136/tcp PROFILE Naming System

profile 136/udp PROFILE Naming System

netbios-ns 137/tcp NETBIOS Name Service

netbios-ns 137/udp NETBIOS Name Service

netbios-dgm 138/tcp NETBIOS Datagram Service

netbios-dgm 138/udp NETBIOS Datagram Service

netbios-ssn 139/tcp NETBIOS Session Service

netbios-ssn 139/udp NETBIOS Session Service

emfis-data 140/tcp EMFIS Data Service

emfis-data 140/udp EMFIS Data Service

emfis-cntl 141/tcp EMFIS Control Service

emfis-cntl 141/udp EMFIS Control Service

bl-idm 142/tcp Britton-Lee IDM

bl-idm 142/udp Britton-Lee IDM

imap2 143/tcp Interim Mail Access Protocol v2

imap2 143/udp Interim Mail Access Protocol v2

news 144/tcp NewS

news 144/udp NewS

uaac 145/tcp UAAC Protocol

uaac 145/udp UAAC Protocol

iso-tp0 146/tcp ISO-IP0

iso-tp0 146/udp ISO-IP0

iso-ip 147/tcp ISO-IP

iso-ip 147/udp ISO-IP

cronus 148/tcp CRONUS-SUPPORT

cronus 148/udp CRONUS-SUPPORT

aed-512 149/tcp AED 512 Emulation Service

aed-512 149/udp AED 512 Emulation Service

sql-net 150/tcp SQL-NET

sql-net 150/udp SQL-NET

 

 

مشخصات و اطلاعات كامل در مورد پورت هاي رزرو شده و همچنين اطلاعات بيشتر در اين زمينه را مي توانيد در RFC 1700 مشاهده نماييد.

 

توجه :

RFC ها اسنادي هستند كه درآنها مفاهيم مختلف شبكه توضيح داده شده است. هر RFC با يك عدد مشخص مي شود. در هر RFC يكي از مفاهيم شبكه به تفضيل جهت استاندارد سازي برنامه هاي ساخته شده توسط افراد و شركت هاي مختلف شرح داده شده است به عنوان مثال RFC 1700 در مورد پورت ها مي باشد و كليه نكاتي كه در مورد پورت بايد در برنامه هاي مختلف رعايت شود در آن توضيح داده شده است.

 

در زير شماره و موضوع بعضي از RFC ها آمده است:

 

 

 RFC             Comment

 

 

------         ------------

 

 

 

2525I "Known TCP Implementation Problems"

 

 

 

3155B "End-to-end Performance Implications of Links with Errors"

 

 

 

3360B "Inappropriate TCP Resets Considered Harmful"

 

 

 

3449B "TCP Performance Implications of Network Path Asymmetry" 

 

 

 

3493I "Basic Socket Interface Extensions for IPv6"

 

 

 

1144P "Compressing TCP/IP headers for low-speed serial links"

 

 

 

2488B "Enhancing TCP Over Satellite Channels using Standard Mechanisms"
					

 

 

 

3481B "TCP over Second (2.5G) and Third (3G) Generation Wireless

 

 

Networks"

 

 

 

2140I "TCP Control Block Interdependence"

 

 

 

2582E "The NewReno Modification to TCP's Fast Recovery Algorithm"

 

 

 

2861E "TCP Congestion Window Validation"

 

 

 

3465E "TCP Congestion Control with Appropriate Byte Counting (ABC)"

 

 

 

3522E "The Eifel Detection Algorithm for TCP"

 

 

 

3540E "Robust Explicit Congestion Notificaiton (ECN) signaling with

 

 

Nonces"

 

 

 

 

 

1146E "TCP alternate checksum options"

 

 

 

1379I "Extending TCP for Transactions -- Concepts"

 

 

 

1644E "T/TCP -- TCP Extensions for Transactions Functional

 

 

Specification"

 

 

 

1693E "An Extension to TCP: Partial Order Service" 

 

 

 

2415I "Simulation Studies of Increased Initial TCP Window Size"

 

 

 

2416I "When TCP Starts Up With Four Packets Into Only Three Buffers"

 

 

 

2760I "Ongoing TCP Research Related to Satellites"

 

 

 

2884I "Performance Evaluation of Explicit Congestion Notification (ECN)in IP Networks"

 

 

 

2923I "TCP Problems with Path MTU Discovery"

 

 

 

2963I "A Rate Adaptive Shaper for Differentiated Services" 

 

 

 

3135I "Performance Enhancing Proxies Intended to Mitigate Link-Related Degradations"

 

 

 

1180I "TCP/IP tutorial"

 

 

 

1470I "FYI on a Network Management Tool Catalog: Tools for Monitoring

 

 

and Debugging  TCP/IP Internets and Interconnected Devices"

 

 

 

2151I "A Primer on Internet and TCP/IP Tools and Utilities"

 

 

 

2398I "Some Testing Tools for TCP Implementors"

 

 

 

2873P "TCP Processing of the IPv4 Precendence Field"

 

 

 

2883P "An Extension to the Selective Acknowledgement (SACK) Option for TCP"

 

 

 

2988P "Computing TCP's Retransmission Timer"

 

 

 

3042P "Enhancing TCP's Loss Recovery Using Limited Transmit"

 

 

 

3168P "The Addition of Explicit Congestion Notification (ECN) to IP"

 

 

 

3390P "Increasing TCP'S Initial Window"

 

 

 

3517P "A Conservative Selective Acknowledgement (SACK)-based Loss

 

 

Recovery Algorithm for  TCP"

 

 

 

 

لايه جلسه ( Session ) :

 

لايه جلسه به كاربران يك شبكه اين امكان را مي دهد كه با يكديگر نشست برقرار كنند.

خدماتي كه لايه جلسه ارائه مي دهد به شرح زير است :

 

  • تعيين نوبت براي انتقال داده.

 

  • جلوگيري از ايجاد تداخل در بين ارتباط كاربران ( مديريت شناسه).

 

  • مديريت بر روند انتقال ( هرگاه انتقالي با مشكل روبه رو شود، روند ادامه كار از همان جايي كه مشكل اتفاق افتاده ادامه مي يابد).

 

لايه جلسه يك لايه با ارتباط انتها به انتهاست و براي انجام وظايف خود از الگوريتم هاي ويژه در اين لايه استفاده مي شود.

 

لايه نمايش ( Presentation ) :

 

برخلاف لايه هاي پاييني مدل OSI كه با انتقال بيت ها سروكار دارند، لايه نمايش با قواعد نحوي و معنايي اطلاعاتي كه منتقل مي شوند درگير است.

مي دانيم كه كامپيوتر ها معمولا داده ها را با اشكال مختلف نمايش مي دهند. براي اينكه انواع مختلف كامپيوترها بتوانند با يكديگر ارتباط برقرار كنند، بايد ساختمان داده ها را به صورت انتزاعي تعريف كرد و سپس به صورت كد درآورد تا بتوانند از خطوط عبور كنند. وظيفه لايه نمايش اين است كه اين ساختمان داده هاي انتزاعي را مديريت كند.

 

توجه:

به دليل اينكه در مدل هاي واقعي از شبكه مانند TCP/IP لايه هاي جلسه و نمايش پياده سازي نشده اند و در دنياي واقعي كاربردي ندارند به توضيح بيشتري در مورد اين دو لايه نمي پردازيم.

 

لايه كاربرد ( Application ):

 

لايه كاربرد شامل پروتكل هاي مختلفي است كه توسط كاربران مورد استفاده قرار مي گيرد. نمونه اي از اين پروتكل ها ، پروتكل HTTP‌ است كه قراردادي براي انتقال اسناد HTML مي باشد و اينترنت بر مبناي آن پايه ريزي شده است.

در لايه كاربرد برنامه هاي مختلفي مي توانند اجرا شوند و هر كدام نيز بر اساس پروتكلي خاص فعاليت كنند. برنامه هاي لايه كاربرد در هر مرحله داده هاي خود را براي ارسال بر روي شبكه به لايه هاي پايين تر خود مي دهند تا بعد از اعمال قواعد گفته شده در هر لايه به لايه فيزيكي براي ارسال بر روي خط تحويل داده شوند. لايه هاي پايين تر در ماشين مقابل وقتي داده ها را دريافت مي كنند، با توجه به شماره پورت هر برنامه اطلاعات دريافتي را بين برنامه هاي درخواست كنند يا سرويس دهنده تقسيم مي نمايند شكل 23-1 روند ارسال يك بسته را از لايه كاربرد يك ماشين و دريافت آن توسط لايه فيزيكي ماشين مقابل و همچنين اتفاقاتي كه در هر لايه براي بسته ها مي افتد را نمايش مي دهد.

 

در لايه كاربرد پروتكل هاي مختلفي فعاليت مي كنند. در زير به چند نمونه از آنها اشاره مي كنيم:

 

  • پروتكل انتقال ابر متن HTTP .

 

  • پروتكل ارسال فايل FTP .

 

  • پروتكل ارسال پست الكترونيكي SMTP.

 

  • پروتكل دريافت پست الكترونيكي POP2 و POP3.

 

  • پروتكل ‏اجراي فرامين از راه دور TELNET .

 

  • پروتكل انتقال ابر متن با امنيت HTTPS

 

  • پروتكل ‏TFTP

 

  • پروتكل NETBIOS

 

  • پروتكل GOPHER

 

 


شكل 23-1

نمايش ارسال اطلاعات از لايه كاربرد يك سيستم و تحويل آن به لايه كاربرد سيستم ديگر

 

 

پروتكل HTTP :

 

پروتكل HTTP قراردادي براي ارسال ابرمتن ( HTML ) تحت شبكه هاي كامپيوتري است. اين پروتكل بر روي پورت 80 فعاليت مي كند. و براي انجام سرويس دهي نياز به يك ماشين سرويس دهنده HTTP و يك ماشين سرويس گيرنده HTTP داريم.

برنامه هاي مختلفي براي سرويس دهي پروتكل HTTP‌ وجود دارد مانند سرويس دهنده HTTP‌ شركت مايكروسافت به نام IIS و يا سرويس دهنده متن باز Apache . در قسمت كلاينت هم كه به آن مرورگر نيز مي گويند مي توان از برنامه هاي متفاوتي كه براي اين منظور در دسترس هستند استفاده كرد.

 

نحوه كار پروتكل HTTP :

 

اين پروتكل كه به صورت TCP فعاليت مي كند، ابتدا با استفاده از مرورگر تقاضاي يك سند خاص را از ماشين سرويس دهنده مي نمايد. اين تقاضا با استفاده از متد Get كه از مجموعه فرامين پروتكل HTTP است به سمت سرور ارسال مي شود.

در زير مي توانيد نمونه اي از درخواست يك مرورگر را مشاهده كنيد:

 

GET http://www.google.com/ HTTP/1.0

Accept: */*

Accept-Language: ar-sa

Cookie: PREF=ID=e187840af863edf3:LD=en:CR=2:TM=1125144023:LM=1125144034:S=hdvBGdMXIARsza6x

User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)

Host: www.google.com

Proxy-Connection: Keep-Alive

 

همانطور كه در بالا مشاهده مي كند به وسيله يك مرورگر اينترنت اكسپلور مايكروسافت يك تقاضا براي دريافت صفحه اصلي سايت www.google.com ارسال شده است.

براي دريافت يك سند HTML كافي است درخواست خود را در قالب زير ارسال كنيد:

 

GET آدرس سند HTTP/1.0 or HTTP/1.1

 

پروتكل HTTP متدهاي ديگري براي انجام وظايف خود دارد كه در زير به بعضي از آنها اشاره مي كنيم:

 

  • متد HEAD درخواست خواندن هدر بسته HTTP را مي نمايد.

 

  • متد POST براي انتقال اطلاعات توسط بدنه بسته HTTP به كار مي رود.

 

  • متد DELETE، توسط اين فرمان مي توانيد يك سند HTML خاص را حذف نماييد. توجه داشته باشد كه براي اجراي اين فرمان نياز به مجوز از سوي سرويس دهنده داريد.

 

  • ‍متد PUT ، با استفاده از اين متد مي توانيد صفحه وبي را در سرويس دهنده ذخيره كنيد.

 

  • متد CONNECT‌كه فعلا كاربردي ندارد و براي استفاده در آينده رزرو شده است.

 

شما مي توايند با استفاده از فرامين پروتكل HTTP بنا به نياز خود سرويس دهنده HTTP و يا سرويس گيرنده HTTP مربوط به خود را بسازيد. فقط نكته در ساخت اين نوع برنامه ها اين است كه شما بايد با دستورات اسناد HTML نيز آشنا باشيد كه بتوانيد وقتي اين دستورات را از يك سرويس دهنده HTTP دريافت مي كنيد، آنها را كد گشايي كرده و از آنها استفاده كنيد.

 

پروتكل FTP‌:

 

پروتكل FTP قراردادي براي انتقال فايل ها و اسناد تحت شبكه است. اين سرويس بر روي دو پورت 20 و 21 به صورت استاندارد تعريف شده است. پورت 20 براي انتقال داده ها و پورت 21 به منظور صدور فرامين در نظر گرفته شده است ( شكل 24-1 ).

پروتكل FTP‌ همانند ديگر سرويس ها از دو قسمت مشتري ( Client ) و خدمتگزار ( Server‌ ) تشكيل شده است. در قسمت كلاينت با استفاده از فراميني مي توان فايل ها را مديريت ، ارسال و يا دريافت كرد. و قسمت سرور نيز موظف است تا سرويس هاي مورد نياز قسمت كلاينت را فراهم كند.

فرامين پروتكل FTP‌ :

 

در زير بعضي از فرامين اين پروتكل به همراه توضيحات آن آورده شده است:

 

  • با استفاده از فرمان USER شناسه كاربري خود را براي سرويس دهنده مشخص مي كنيم.

 

  • براي اينكه كلمه عبور خود را براي سرور ارسال كنيم از فرمان PASS استفاده مي كنيم.

 

  • HELP ، اين فرمان راهنماي استفاده از سرويس FTP‌ را نمايش مي دهد.

 

  • با DIR مي توانيم از فايل ها و پوشه ها فهرست گيري كنيم.

 

  • فرمان LS نيز مشابه فرمان DIR عمل مي كند.

 

  • با استفاده از دستور MKDIR مي توان يك شاخه جديد در فضاي FTP SERVER‌ ايجاد نمود.

 

  • RMDIR ، با استفاده از اين فرمان مي توان يك شاخه را حذف نمود.

 

  • اگر بخواهيم مسيري كه در آن قرار داريم را چاپ كنيم از فرمان PWD ‌استفاده مي كنيم.

 

  • CD ، اين فرمان براي تعويض پوشه كاري است.

 

  • ‍PORT ، اين فرمان براي تغيير شماره پورت ارسال اطلاعات است.

 

  • براي ارسال يك فايل از فرمان SEND‌استفاده مي شود.

 

  • فرمان RECV براي دريافت يك فايل است.

 

  • با استفاده از فرمان DELETE مي توان يك فايل را حذف نمود.

 

  • فرمان PUT براي ارسال اطلاعات است ( مشابه فرمان SEND ).

 

  • فرمان GET‌ به منظور گرفتن يك فايل به كار مي رود ( مشابه فرمان RECV ).

 

  • فرمان MPUT براي ارسال مجموعه اي از فايل ها مورد استفاده قرار مي گيرد.

 

  • فرمان MGET‌ براي دريافت گروهي فايل ها به كار مي رود.

 

  • براي تغيير نام يك فايل يا پوشه مي توان از فرمان RENAME استفاده كرد.

 

  • اگر بخواهيم جزئيات بيشتري در مورد نحوه كارهر فرمان در خروجي مشاهده كنيم از فرمان VERBOSE استفاده مي كنيم.

 

  • براي قطع ارتباط با سرور از فرمان CLOSE استفاده مي كنيم.

 

  • فرمان QUIT براي خروج از برنامه به كار مي رود.

 

براي تمرين فرامين بالا مي توانيد از برنامه FTP كلاينت سيستم عامل ويندوز استفاده كنيد. براي اجراي اين برنامه به Command Prompt اين سيستم عامل برويد و دستور زير را بنويسيد:

C:\> FTP آدرس سرور

 

مثال:

 

C:\> FTP ftp.msn.com

 

بعد از اين مرحله از شما نام كاربري و كلمه عبور درخواست مي شود. و در نهايت شما مي توانيد با استفاده از فرامين بالا به انتقال و مديريت فايل هاي سرور FTP‌خود بپردازيد.

 

نكته:

بعضي از سرويس دهنده هاي FTP‌ به شما اين امكان را مي دهند كه بدون داشتن نام كاربري و كلمه عبور، از سرويس هاي FTP‌ ارائه شده در آن سيستم استفاده كنيد. البته ممكن است در اين حالت فقط اجازه خواندن و دريافت فايل ها را داشته باشيد و نتوانيد چيزي را در سرويس دهنده تغيير دهيد. براي اين منظور به جاي كلمه عبور بايد كلمه anonymous‌ و به جاي رمز عبور يك آدرس پست الكترونيكي ( يك عبارت كه شامل كاراكتر @ باشد ) بنويسيد.

 

 


شكل 24-1

نحوه برقراري ارتباط به وسيله دو پورت در پروتكل FTP

 

 

 

پروتكل SMTP :

 

احتمالا شما تا به حال بارها از پست الكترونيكي ( E.Mail ) براي برقراري ارتباط با ديگران استفاده كرده ايد. پست الكترونيكي مجموعه اي از برنامه ها است كه توسط آن مي توانيد متن و اسناد خود را تحت شبكه انتقال دهيد، براي ارسال و دريافت پست الكترونيكي پروتكل هاي متفاوتي وجود دارد، ما در اين قسمت به پروتكل SMTP ( Semple Mail Transfer Protocol)، كه براي ارسال E.Mail از آن استفاده مي شود را توضيح مي دهيم.

 

پروتكل SMTP به صورت استاندارد بر روي پورت 25 فعاليت مي كند. و تحت اين پورت به ارسال پست الكترونيكي مي پردازد.

 

در پروتكل SMTP براي ارسال يك Mail قوانيني در نظر گرفته شده است. اگر شخصي يا برنامه اي بخواهد تحت اين پروتكل متني را به آدرس خواصي ارسال كند بايد اين قوانين را در نظر داشته باشد.

قوانين ارسال پست الكترونيكي در پروتكل SMTP :

 

براي ارسال يك E.Mail در اولين گام شما بايد به ماشيني در شبكه كه اين سرويس بر روي آن فعال است متصل شويد. براي اين منظور مي توانيد از ماشين هاي سرويس دهنده پست الكترونيكي معرف دنيا استفاده نماييد. يا اينكه بر روي شبكه به دنبال ماشيني كه پورت 25 باز دارد بگرديد.

در زير آدرس بعضي از سرويس دهنده هاي بزرگ پست الكترونيكي نوشته شده است:

 

www.mail.yahoo.com

 

www.gmail.com

 

www.hotmail.com

 

www.mailcity.com

 

بعد از پيدا كردن يك ميزبان در شبكه كه سرويس پست الكترونيكي به كاربران مي دهد، نوبت به برقراري اتصال با اين ماشين است. براي اين كار شما بايد با استفاده از يك نرم افزار مشتري پست الكترونيكي يا اينكه به وسيله يك برنامه كلاينت متني ( مثل نرم افزار‏Telnet سيستم عامل ويندوز ) كه دستورات را به طرف

سرور ارسال مي كند با ماشين ميزبان ارتباط برقرار كنيد.

 

نحوه برقراري ارتباط با سرويس خواصي از يك ماشين توسط برنامه Telnet در زير نشان داده شده است:

 

telnet شماره پورت 25 آدرس ماشين سرويس دهنده

 

در مثال زير به سرويس SMTP ماشيني با آدرس mail.yahoo.com به وسيله برنامه telnet متصل مي شويم:

 

telnet mail.yahoo.com 25

 

بعد از اتصال به ماشين براي پذيرفته شدن در سرويس SMTP شما بايد از دستور HELO استفاده كنيد.

مثال:

 

HELO آدرس ماشين ميزبان

 

بعد از اتصال شما به سرويس SMTP بايد قبل از هر كار ديگري آدرس پست الكترونيكي خود و آدرس پست الكترونيكي شخصي كه مايل به ارسال اطلاعات به او هستيد را مشخص كنيد. براي مشخص كردن آدرس پست الكترونيكي خود از از دستور MAIL FROM: و براي مشخص كردن آدرس گيرنده از دستور RCPT TO: استفاده مي شود.

مثال زير نحوه نوشتن اين دستورات را نمايش مي دهد:

 

MAIL FROM :فرستنده آدرس پست الكترونيكي

RCPT TO : آدرس پست الكترونيكي گيرنده

 

در هر پست الكترونيكي مي توان چندين كلمه را به عنوان موضوع پيام مشخص كرد. براي تنظيم موضوع پست الكترونيكي مي توانيد از دستور SUBJECT: استفاده كنيد.

مثال:

 

SUBJECT : موضوع پست الكترونيكي

 

در نهايت با استفاده از دستور data مي توانيد متن E.Mail خود را بنويسيد:

مثالي از نحوه كاربرد دستور data :

 

DATA:

This is a Test

This is a Test

.

براي مشخص كردن پايان متن Mail نيز بايد از يك نقطه استفاده كرد.

 

حال با استفاده از دستور QUIT مي توانيد ميل خود را ارسال كنيد و اتصال خود را به سرويس دهنده پست الكترونيكي قطع نماييد.

 

مثالي از چگونگي ارسال يك پست الكترونيكي :

 

 

telnet gmail.com 25

 

HELO gmail.com

 

MAIL FROM : test@gmail.com

RCPT TO : Ali@yahoo.com

 

SUBJECT: This is a Test

 

DATA:

Hi Ali

How are You?

.

 

QUIT

 

نكته:

سرويس دهنده SMTP در هر مرحله ارسال پست الكترونيكي براي شما پيغام هاي مناسبي صادر مي كند.

 

نكته:

سرويس SMTP‌مشكلاتي دارد كه اين مشكلات در نسخه ديگري از اين سرويس به نام ESMTP يرطرف شده است ( ESMTP در RFC 2821 شرح داده شده است) در هنگام برقراري ارتباط با يك سرويس دهنده SMTP اگر به جاي پيام HELO دستور EHELO را بنويسيد و اين دستور پذيرفته شود، سرويس دهنده از ESMTP پشتيباني مي كند.

 

نكته:

در بعضي از سرويس دهنده هاي SMTP به جاي دستور HELO بايد از دستور HELLO استفاده كرد. اگر با نوشتن دستور HELO نتيجه اي نگرفتيد دستور HELLO را امتهان كنيد.

 

پروتكل POP3 :

 

پروتكل SMTP براي ارسال پست الكترونيكي بكار مي رود. اما براي دريافت و خواندن نامه ها دريافت شده بايد از پروتكل POP3 ( Post Office Protocol ) استفاده كرد. نوع قديمي تر پروتكل POP3 به نام POP2 شناخته مي شود.

سرويس POP3 به صورت استاندارد بر روي پورت شماره 110 فعاليت مي كند. و پورتي كه براي سرويس POP2 در نظر گرفته شده است پورت شماره 109 است.

 

براي اينكه بتوانيد به صندوق پستي خود در يك سرويس دهنده پست الكترونيكي متصل شويد فرمان زير را صادر كنيد:

 

telnet شماره پورت 110 آدرس سرويس دهنده پست الكترونيكي

 

مثال:

 

telnet gmail.com 110

 

با اجراي دستور فوق در صورتي كه سرويس دهنده شما آماده فعاليت ياشد، برنامه Telnet به سرويس POP3 كه بر روي پورت 110 فعال است متصل مي شود.در اين زمان شما بايد با استفاده از دستورات POP3 كلمه عبور و رمز پست الكترونيكي خود را وارد كنيد تا بتوانيد نامه ها موجود در صندوق پستي خود را مديريت كنيد.

دستورات پروتكل POP3 به شرح زير است:

 

  • براي نوشتن نام كاربري از دستور USER استفاده مي شود.

 

  • با استفاده از دستور PASS كلمه عبور خود را وارد كنيد.

 

  • دستور LIST از نامه هاي موجود در صندوق پستي ليست تهيه مي كند.

 

  • دستور DELE xxx براي حذف نامه بكار مي رود. xxx در اينجا شماره نامه اي است كه بااستفاده از دستور LIST مشخص مي شود.

 

  • براي خاوندن نامه مي توان از دستور RETR xxx استفاده كرد. در اين دستور xxx شماره نامه است.

 

  • QUIT براي خروج از صندوق پستي بكار مي رود.

 

مثال زير نحوه كار با پروتكل POP3 را نشان مي دهد:

 

telnet gmail.com 110

 

+OK POP3 server ready (پيام سرويس دهند )

 

USER Test

 

+OK

 

PASS XXXXXX

 

+OK login successful

 

LIST

 

  1. 2536
  2. 4563
  3. 8955
  4. 4122
  5. 6333

 

RETR 1

 

Salam

Hal Shoma




Bye

 

DELE 3

 

QUIT

 

+OK POP3 server disconnecting

 

نكته:

شما با فراگيري اصول برنامه نويسي شبكه مي توانيد با استفاده از دستورات و قوانين پروتكل هاي لايه كاربرد برنامه هاي دلخواه خود را براي اين قراردادها بنويسيد و از آنها استفاده كنيد.

 

‏پروتكل TELNET :

 

با استفاده از پروتكل TELNET مي توانيد به وسيله يك ماشين از راه دور دستورات خود را در ماشين مقصد اجرا كنيد. اين خصوصيت به مديران شبكه اجازه مي دهد، بدون اينكه در مقابل ماشين سرور بنشينند، به وسيله يك كامپيوتر متصل به شبكه در هر كجاي دنيا كه باشند دستورات خود را اجرا كنند.

 

پروتكل TELNET
بر روي پورت شماره 23 فعاليت مي كند. اين پروتكل به دليل ماهيتي كه دارد، ممكن است از نظر امنيتي براي يك شبكه مشكل ايجاد كند. به همين دليل است كه اكثر مديران شبكه اين سرويس مفيد را از سيستم حذف مي كنند يا آن را به حالت غير فعال در مي آورند.

 

براي اتصال به سيستمي كه سرويس TELNET بر روي آن فعال است مي توانيد دستور زير را اجرا كنيد:

 

telnet 23 آدرس ماشين سرور

 

مثال:

 

telnet sharef.edu 23

 

دستور بالا سعي مي كند كه به سرويس TELNET دانشگاه صنعتي شريف متصل شود.

 

‏پشته پروتكلي TCP/IP :

 

مدل مرجع OSI يك مدل استاندارد است كه تمامي جزئيات طراحي يك رويه ارتباطي در شبكه هاي كامپيوتري را در خود گنجانده است و براي هماهنگي در طراحي مدل هاي مختلف توسط سازمان جهاني استاندارد ( ISO ) ايجاد شده است. اما به دليل پيچيدگي هاي فراوان و همچنين جزئيات خيلي زياد هيچ گاه به صورت واقعي براي كار در شبكه هاي كامپيوتري پياده سازي نشده است.

از نقاط ضعف مدل OSI مي توان موارد زير را ذكر كرد :

 

در مدل OSI انتخاب هفت لايه بيشتر جنبه نمايشي داسته است تا تكنيكي، زيرا دو لايه جلسه و نمايش تقريبا بدون استفاده هشتند.

مدل OSI به دليل پيچيدگي بيش از حد آن مبهم است و نمي توان به راحتي تمام استاندارد هاي موجود در آن را پياده سازي كرد.

در اين مدل ( OSI ) بعضي از موارد نظير آدرس دهي و همچنين خطا يابي در لايه هاي مختلف تكرار شده است.

مجموع معايب فوق و همچنين نقاط ضعف ديگري ازاين مدل باعث كندي بيش از حد اين مدل شبكه اي شده و همين امر موجب شد تا هيچگاه به صورت عمومي از اين استاندارد استفاده نشود. ولي اين مدل به دليل جامعيتش به صورت يك استاندارد براي بقيه مدل هاي توليدي شبكه قرار گرفته است.

 

براي كار درشبكه به صورت واقعي نياز به اين همه جزئيات احساس نمي شود و پروتكل هايي كه در شبكه هاي واقعي مورد استفاده قرار مي گيرند اغلب به حداقل جزئيات در هر قسمت قناعت مي كنند. IPX/SPX‌ ، TCP/IP و Apple Talk نمونه هايي از پشته هاي پروتكلي هستند كه در شبكه هاي واقعي مورد استفاده قرار گرفته اند.

 

در اين قسمت ما قصد داريم پشته پروتكل TCP/IP را شرح دهيم. دليل اين امر اين است كه امروزه پشته پروتكلي TCP/IP‌ مدلي استاندارد و عمومي در شبكه هاي مختلف است و همچنين شبكه اينترنت نيز بر مبناي اين مدل فعاليت مي كند.

 

در شكل زير مدل OSI در كنار مدل TCP/IP آمده است شما در اين شكل مي توانيد تفاوت اين دو مدل را در نوع و تعداد لايه ها شماهده كنيد:

 

 

 

لايه كاربرد

لايه نمايش

لايه جلسه

لايه انتقال

لايه شبكه

لايه پيوند داد ها

لايه فيزيكي

لايه كاربرد

 
 

لايه انتقال

لايه اينترنت

لايه ميزبان شبكه

 

 

شكل 25-1

مقايسه ساختار TCP/IP و ساختار OSI ( شكل سمت چپ مدل OSI و شكل سمت راست مدل TCP/IP )

 

لايه ميزبان شبكه :

 

همانطور كه در شكل فوق مشاهده مي كنيد ، در مدل TCP/IP دو لايه قيزيكي و لايه پيوند دادها در مدل OSI با يكديگر ادغام شده اند و لايه ميزبان شبكه را در مدلTCP/IP به وجود آورده اند. در مدل TCP/IP به دليل به وجود آوردن هماهنگي با سخت افزار هاي متفاوت در لايه ميزبان شبكه قسمت اتصال به سخت افزار را به صورت Protocol Free معرفي كرده اند يعني اين مدل مي تواند با هر گونه سخت افزاري هماهنگ شود و تحت هر شبكه اي به وظايف خود عمل كند. اين قابليت باعث شده است تا اين مدا در شبكه اينترنت به خوبي كار كند و مورد استفاده قرار گيرد.

 

لايه اينترنت :

 

لايه شبكه در مدل OSI جاي خود را به لايه اينترنت در مدل TCP/IP داده است. لايه اينترنت در مدل TCP/IP وظيفه مسيريابي بسته هاي TCP را به عهده دارد. اين لايه يك لايه Hop To Hop است و در هر مرحله بسته هاي TCP را به مسيرياب بعدي انتقال مي دهد، اين روند تا جايي ادامه مي يابد كه بسته ها به مقصد برسند. در اين لايه با استفاده از پروتكل IP ( Internet Protocol ) آدرس ماشين هاي موجود در شبكه را مشخص مي كنند.

 

پروتكل IP :

 

پروتكل IP‌ يك پروتكل براي آدرس دهي و انتقال بسته ها در شبكه اينترنت است. اين پروتكل به هر بسته اي كه مي خواهد بر روي شبكه ارسال شود يك هدر اضافه مي كند. اين هدر در مسير ياب ها و همچنين سويچ ها موجود در مسير تجزيه و تحليل مي شود و در هر مرحله تحويل گام بعدي داده مي شود. پروتكل IP درحال حاضر در دو ويرايش موجود است :

 

  • IPv4
  • IPv6

 

IPv4ويرايش قديمي تر اين پروتكل مي باشد كه هم كنون در شبكه اينترنت مورد استفاده قرار مي گيرد. هدر اين نسخه را مي توانيد در شكل 26-1 مشاهده مي كنيد.

 

 


شكل 26-1

نمايش هدر IPv4

 

شرح فيلد هاي مختلف هدر IPv4 :

 

  • فيلد Version مشخص مي كند كه اين بسته تحت كدام ويرايش از پروتكل IP قرار دارد.
  • فيلد IHL مشخص مي كند كه طول هدر چند كلمه 32 بيتي است.

 

  • Type of Service براي تنظيم قابليت اطمينان يا انتقال با سرعت بالا مورد استفاده قرار مي گيرد.

 

  • فيلد Total Length‌طول كل بسته به همراه هدر را مشخص مي كند.

 

  • فيلد Identification در صورتي كه بسته به قطعاتي شكسته شود ، مشخص مي كند كه هر قطعه مربوط به كدام بسته است.

 

  • فيلد Flags شامل 2 بيت است:
    بيت DF و بيت MF . اگر بيت DF‌ برابر يك شود، هيچ مسيريابي حق شكستن بسته را ندارد. و اگر MF يك شود، بسته به قطعاتي شكسته شده است كه همه قطعات يك مشخصه منحصربه فرد خواهند داشت كه در فيلد Identification ذكر مي شود.

 

  • فيلد Fragment Offset شماره قطعه را مشخص مي كند.

 

  • فيلد Time to Live يك شمارنده است كه طول عمر بسته را مشخص مي كند. اين شمارنده بعد ازعبور از هر مسيرياب يك واحد كاهش مي يابد، و هنگامي كه به صفر برسد بسته حذف خواهد شد. از اين مكانيزم مي توان براي حذف بسته هاي سرگردان از شبكه استفاده كرد.

 

  • فيلد Protocol تعيين مي كند، كه اين بسته تحت پروتكل TCP كار مي كند يا UDP.

 

  • Check Sum براي كنترل خطا در نظر گرفته شده است.

 

  • فيلد Source Address آدرس IP‌ كامپيوتر مبداء را مشخص مي كند.

 

  • Destination Address آدرس IP ماشين مقصد را نگهداري مي كند.

 

  • فيلد Options براي كاربرد هاي خاص و شخصي در نظر گرفته شده است.

 

اگر در هدر IPv4 دقت كنيد، مي بينيد كه در اين هدر حداكثر 32 بيت براي آدرس دهي IP در نظر گرفته شده است. همانطور كه مي دانيد با اين مقدار بيت تنها مي توان دو به توان 32 ماشين در شبكه را آدرس دهي كرد. امروزه به دليل گسترش بيش از حد شبكه جهاني اينترنت ديگر اين مقدار ماشين جوابگوي نياز روز افزون جهان نمي باشد به همين دليل ويرايش جديدتري از پروتكل IP‌ مطرح شده است. اين ويرايش IPv6 است. اگر چه تا كنون به صورت عمومي و تجاري از پروتكل IPv6 استفاده نشده است، ولي در آينده نزديك بايد شاهد رشد و همه گير شدن ويرايش جديد پروتكل IP باشيم.

 

در شكل 27-1 مي توانيد هدر IPv6 را مشاهده كنيد:

 

 

Flow Label 

Priority 

Version 

Hop Limit 

Next Header 

Pay Land Length 

Source Address 

Destination Address 

شكل 27-1

نمايش هدر IPv6

شرح قسمت هاي مختلف هدر IPv6 :

 

  • فيلد Version حاوي عدد 6 براي تعيين ويرايش هدر IP مي باشد.

 

  • فيلد Priority حاوي اولويت بسته مي باشد. براي امور عادي 0 تا 7 و براي كارهاي بلادرنگ 8 تا 15. طول اين فيلد 4 بيت مي باشد.

 

  • فيلد Flow Label جريان بسته را مشخص مي كند.

 

  • فيلد Pay Land Length مش خص مي كند، كه طول بسته بدون 40 بايت مربوط به اولين هدر چقدر مي باشد.

 

  • فيلد Next Header مشخص مي كند كه هدر بعدر وجود دارد يا خير.

 

  • Hop Limit طول عمر بسته را مشخص مي كند. اين فيلد مشابه فيلد Time to Live هدر بسته IPv4 است.

 

  • فيلد Source Address مشخص كننده ادرس مبدا مي باشد. در IPv6 اين فيلد 128 بيت طول دارد كه به وسيله ان مي توان 2 به توان 128 ماشين را آدرس دهي كرد.

 

  • فيلد Destination Address مشخص كننده آدرس مقصد است. طول اين فيلد 128 بيت مي باشد.

 

نكته:

در سيستم IPv6 هر بسته مي تواند تا شش هدر اضافي ديگر نيز داشته باشد كه از اين هدر ها مي توان براي عمليات مسيريابي، رمزنگاري، تاييد هويت ، قطعه بندي و … استفاده كرد.

 

نكته:

آدرس هر هدر به وسيله فيلد Next Header در هدر بسته هاي IPv6 مشخص مي شود.

 

نكته:

در لايه اينترنت جهت عيب يابي شبكه و بررسي عمليات، پروتكل هاي ديگري نيز وجود دارد. از اين نوع پروتكل ها مي توان ICMP و IGMP و در IPv6 مي توان، ICMPv6 ، MLD و ND را نام برد.

 

پروتكل ICMP :

 

به دليل اهمييت اين پروتكل به شرح مختصري از اين پروتكل مي پردازيم.

اين پروتكل بيشتر جهت عيب يابي در شبكه كاربرد دارد. بسته هاي اين نوع پروتكل از بين مسيرياب هاي مختلف شبكه عبور مي كنند، و به وسيله آنها مي توان فهميد كه چه ماشيني در شبكه فعال است ، سرعت انتقال داده ها در بين كانال هاي مختلف شبكه چقدر است و همچنين آدرس ماشين هاي مختلف را در شبكه بدست آورد.

ار ابزارهاي كه بر مبناي اين نوع پروتكل فعاليت مي كنند مي توان موارد زير را نام برد:

ابزار Ping كه با استفاده از اين ابزار مي توان سرعت انتقال اطلاعات را در شبكه مشخص كرد. نمونه اي از خروجي اين ابزار را در زير مشاهده مي كنيد:

 

 

C:\ ping 192.168.5.63

 

Pinging 192.168.5.63 with 32 bytes of data:

 

Reply from 192.168.5.63: bytes=32 time=1ms TTL=128

 

Reply from 192.168.5.63: bytes=32 time<10ms TTL=128

 

Reply from 192.168.5.63: bytes=32 time<10ms TTL=128

 

Reply from 192.168.5.63: bytes=32 time<10ms TTL=128

 

 

 

Ping statistics for 192.168.5.63:

 

Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),

 

Approximate round trip times in milli-seconds:

 

Minimum = 1ms, Maximum = 1ms, Average = 1ms

 

در مثال بالا ابزار Ping سيستم عامل ويندوز مورد استفاده قرار گرفته است و همانطور كه شماهده مي كنيد با استفاده از اين ابزار به ماشيني با آدرس 192.168.5.63 پينگ شده است. اين برنامه با ارسال 4 بسته ICMP و در نهايت مشخص كردن سرعت ارسال و تعداد خطاهاي روي داده ميزان خوبي براي قضاوت در مورد كارايي شبكه در اختيار ما قرار مي دهد.

 

لايه انتقال :

 

در مدل TCP/IP لايه انتقال را لايه TCP‌ نيز مي گويند. زيرا عمليات كنترل در اين لايه انجام مي شود. در اين لايه قرارداد هايي كه در لايه انتقال مدل OSI‌ وجود داشت تعريف شده اند.

 

در اين لايه پورت هاي نوع UDP و TCP براي انتقال اطلاعات از ماشين مبدا به ماشين مقصد‌ تعريف شده اند ( شرح اين موارد در صفحات قبلي آمده است).

در اين لايه عمليات شكستن بسته ها نيز انجام مي شود. و هر بسته كه آماده ارسال شده است را به لايه اينترنت جهت ارسال تحويل مي دهد.

 

براي مشاهده وضعيت پورت هاي باز و فعال ماشين خود و همچنين آدرس و مشخصات ماشين هاي راه دوري كه به اين پورت ها متصل هستند مي توانيد از ابزار NetStat كه همراه پشته پروتكلي TCP/IP‌ است استفاده كنيد.

در زير خروجي اين ابزار را در سيستم عامل ويندوز مشاهده مي كنيد:

 

C:\NetStat /na

Active Connections

 

Proto Local Address Foreign Address State

TCP 0.0.0.0:135 0.0.0.0:0 LISTENING

TCP 127.0.0.1:1025 0.0.0.0:0 LISTENING

TCP 169.254.183.114:137 0.0.0.0:0 LISTENING

TCP 169.254.183.114:138 0.0.0.0:0 LISTENING

TCP 169.254.183.114:139 0.0.0.0:0 LISTENING

UDP 169.254.183.114:137 *:*

UDP 169.254.183.114:138 *:*

 

همانطور كه در مثال بالا مشاهده مي كنيد خروجي ابزار NetStat در چهار بخش زير تنظيم شده است:

 

  • Proto .
  • Local Address .
  • Foreign Address .
  • State .

 

در قسمتProto پروتكل ارتباطي نمايش داده شده است، در قسمت Local Address آدرس ماشين محلي همراه با شماره پورت ارتباطي آمده است، در قسمت Foreign Address شماره پورت همراه با آدرس IP‌ ماشين راه دوري كه به پورت مورد نظر در ماشين محلي متصل است نشان داده مي شود. و در نهايت در قسمت State‌ وضعيت پورت كه مي تواند حالت هاي Listing ، Closed ، Connect و… را داشته باشد را نمايش مي دهد.

 

شكل 28-1 قسمت هاي مختلف پروتكل TCP را نشان مي دهد.

 


شكل 28-1

نمايش ساختار TCP/IP

 

لايه كاربرد :

 

در بالاترين قسمت پشته پروتكل TCP/IP لايه كابرد قراردارد. اين لايه يك لايه با مكانيزم End to End است. در اين لايه پروتكل هاي مختلفي براي مديريت بر برنامه هاي كابردي و اداره آنها پيش بيني شده است.

تعدادي از اين نوع پروتكل ها را در قسمت هاي قبلي مورد بررسي قرار داديم وبه نحوه انجام كار و همچنين قوانين تعريف شده در آنها آشنا شده ايم اكنون در اين قسمت به معرفي برخي ديگر از اين پروتكل ها مي پردازيم:

 

پروتكل DNS ( Domain Name Service ) :

 

به خاطر سپردن نام ها براي انسان خيلي راحتر از اعداد است به همين دليل مي بايست مكانيزمي در نظر گرفت تا شماره IP‌ ماشين هاي مختلف در شبكه را كه معرف آدرس آن ماشين در شبكه است به يك نام خاص نگاشت شود. اين وظيفه پروتكل DNS است كه يك نام خاص را به يك آدرس IP مبدل كند. مثلا شما در مرورگر اينترنتي خود عبارت google.com را مي نويسيد و مرورگر صفحات مربوط به سرويس دهنده وب اين ماشين را در مرورگر شما نمايش مي دهد. مي دانيم كه تنها در شبكه براي پروتكل هاي ديگر ادرس IP‌ معنا دارد نه مثلا رشته كاراكتري google.com پس در اين وسط چه اتفاقي افتاده؟ اين همان كاري است كه سرويس DNS انجام مي دهد، يعني تبديل يك رشته به آدرس IP آن ماشين.

 

نكته:

پروتكل DNS به صورت استاندارد بر روي پورت UDP 53 فعاليت مي كند.

 

لايه كاربرد در مدل TCP/IP‌ شامل پروتكل هاي گوناگون ديگري براي سهولت استفاده از شبكه مي باشد نظير:

 

  • DHCP با استفاده از اين پروتكل مي توان به ماشين هاي متصل به يك شبكه به صورت خودكار يك آدرس IP‌ از اختصاص داد.

 

  • پروتكل USENET كه پروتكلي براي پيام رساني در شبكه مي باشد.

 

تا بدين جا شما مختصري در مورد نحوه پياده سازي و تئوري شبكه هاي كامپيوتري فرا گرفته ايد. ولي همان طور كه مي دانيد با مطالعه يك مقدمه كوتاه نمي توان همه موارد را به خوبي درك كرد و ياد گرفت. اين مختصر از تئوري سيستم هاي شبكه براي درك مفاهيم بعدي اين كتاب مورد نياز بود. چناچه مايل هستيد كه در اين زمينه اطلاعات بيشتري كسب كنيد، بايد به مراجع معتبر جهاني نظير RFC مراجعه كنيد و اطلاعات هر جزء از شبكه را به طور دقيق و موشكافانه مطالعه نماييد.

مطالب مرتبط

دیدگاهتان را بنویسید

بخش های مورد نیاز علامت گذاری شده اند نشانی ایمیل منتشر نخواهد شد

نویسنده : آدرس سایت : ایمیل :

تعداد 5 دیدگاه برای نوشته " آموزش سوکت پروگرمینگ (بخش اول)" ارسال شده است .

  1. tina گفت:

    مرسی. عالی بود لطفا ادامه دهید.

  2. shirdel گفت:

    سلام اگه مطالبش به روز تر باشه بهتر هم میشه موفق باشید

  3. عبدویان گفت:

    با تشکر از مطالب خوبتون .می خواستم بدوتم برنامه نویسی سوکت پروگرمینگ رو کی شروع می کنید چون پایان نامه من هم همینه و من در قسمت ارسال عکس موندم و نتونستم عکسهای ارسالی ار سرور رو به طور صحیح در بروزرم نمایش بدم (البته اکسپلورر همه عکسهای دریافتی رو به درستی نمایش می ده). لطفا برای حل این مشکل کمک کنید.
    با تشکد


0

شبکه های اجتماعی

دانشنامه تخصصی مهندسی ایران را در شبکه های اجتماعی دنبال کنید

0 0

عضویت در خبرنامه

برای دریافت آخرین اخبار در زمینه مهندسی شامل نرم افزارها، استانداردها و آموزش ها به سامانه اطلاع رسانی ما بپیوندید.

بدون پرداخت هزینه، تا هر وقت بخواهید.

تست

همکاران ما

گروه مپنا
گروه مپنا
دانشگاه تهران
دانشگاه تهران
سایپا
سایپا
ایران خودرو
ایران خودرو
شرکت ملی نفت ایران
شرکت ملی نفت ایران
ذوب‌آهن اصفهان
ذوب‌آهن اصفهان
فولاد خوزستان
فولاد خوزستان
مشاوره

نیاز به مشاوره دارید؟

 
                    همکاران ما پاسخگو شما خواهند بود.