دانشنامه تخصصی مهندسی ایران

دانشنامه تخصصی مهندسی ایران

 engpedia   راه اندازی کانال تلگرام ( EngPedia_ir@ )

                همراه با مطالب ویژه سایت بصورت رایگان

  • نسخه ۱۲.۱ نرم افزار Aveva Marine در سایت قرار گرفت. (اینجا)
  • نسخه ۱۰.۵۲ نرم افزار Plus 2D در سایت قرار گرفت. (اینجا)
  • نسخه ۱۱.۰ نرم افزار AGI Systems Tool Kit-STK در سایت قرار گرفت.(اینجا)

همکاران

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

مدیریت مهر ۲۸, ۱۳۹۲ 8538 بازدید ۵دیدگاه

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

مقدمه:

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

 

توجه:

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

 

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

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

 

سوکت ( Socket ) چیست:

 

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

در برقراری ارتباط بین کامپیوتر ها در یک شبکه دو چیز بسیار مهم است ۱) آدرس ماشینی که می خواهیم اطلاعاتی از ان بگیریم یا به آن ارسال کنیم ۲) برنامه ای از آن ماشین که در خواست اطلاعات کرده یا اینکه می خواهیم اطلاعاتی از آن برنامه کسب کنیم.

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

 

برکلی سوکت:

 

‏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 در شکل ۱-۱ آمده است. این مدل بر مبنای قراردادی است که سازمان استاندارد جهانی ISO به عنوان اولین مرحله از استاندارد سازی قراردادهایی که در لایه های مختلف مورد استفاده قرار می گیرند ایجاد کرد. این مدل در سال ۱۹۹۵ بازبینی شد. نام این مدل ISO OSI انتخاب شد زیرا با اتصال سیستم های باز سرو کار دارد. منظور از سیستم های باز سیستم هایی است که برای ارتباط با سایر سیستم ها باز هستند. برای اختصار ، ان را OSI می نامیم.

 


شکل ۱-۱

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

 

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

 

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

 

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

 

لایه فیزیکی ( ‍Physical ):

 

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

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

 

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

 

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

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

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

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

 

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

 

لایه پیوند داد ها از دو زیر لایه تشکیل شده است ( شکل ۲-۱).

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

 

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

کار اصلی زیرلایه MAC کنترل دستیابی به لایه فیزیکی است.

 

 

Logic Line Control (LLC) 

 

Media Access Control (MAC) 

شکل ۲-۱

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

 

زیر لایه LLC :

 

وقتی اطلاعات بر روی رسانه ارسال می شود باید با به کار گیری روش هایی مانع از برخورد و ادغام دو بسته اطلاعاتی با هم شویم. یعنی اینکه اگر یک بسته بزرگ به ۱۰ بسته کوچک ۱۰۰ بایتی شکسته شود و این ۱۰ بسته را به ترتیب برای ماشین گیرنده ارسال کنیم کامپیوتر گیرنده با روشی متوجه ابتدا و انتهای بسته اول شود و بسته دوم را نیز تشخیص دهد چون همان طور که می دانید هنگام ارسال اطلاعات روی خط چیزی جز صفر و یک بر روی کابل یا رسانه ارتباطی نیست و باید با روشی ابتدا و انتهای بسته ها برای کامپیوتر راه دور مشخص شود. به کار بستن این مکانیزم ها بر عهده زیر لایه LLC از لایه پیوند داده ها می باشد.

 

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

 

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

 

روش اول ( Character Count ):

 

در این روش در اولین بایت یک فریم تعداد بایتهای آن فریم را تععین می کنیم به عنوان مثال اولین بایت فریم زیر مش خص می کند که چهار بایت بعد نیز مربوط به همین فریم است ( شکل ۳-۱ ):

 

۵ 

    

شکل ۳-۱

نمایش عملکرد تکنیک Character Count

 

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

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

 

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

 

در این روش ابتدا و انتهای هر فریم یکسری نشانه اضافه می کنیم یعنی ابتدا و انتها را با چند بایت خاص مش خص می کنیم( شکل ۴-۱).

 

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

 

STX 

DLE 

     

ETX 

DLE 

شکل ۴-۱

 

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

 

معایب:

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

 

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

 

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

 

 

۰۱۱۱۱۱۱۰
۱۰۱۱۱۱۰۰۰۰۱۱۱۰۱۱۰۱۰۱۱۱۰۰۰۱۱ … ۱۰۱۰۰۱۰۱۱۱۱۱۱۰۰۱۰۱۱۱۰

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

 

شکل ۵-۱

 

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

 

روش Physical Coding violation :

 

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

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

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

 

نکته:

معمولا در کاربرد های عملی ترکیبی از روش های گفته شده استفاده می شود ( به طور معمول ترکیب روش های ۱ و ۳ و یا ۱ و ۴).

 

روش های کشف و اصلاح خطا در زیر لایه LLC :

 

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

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

 

عوامل ایجاد خطا در شبکه:

 

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

 

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

 

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

 

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

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

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

 

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

 

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

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

 

مثال:

۰۱۱۰۱۰۱

۱۰۱۰۰۱۰

فاصله همینگ دو عدد بالا برابر ۵ می باشد.

 

نکته:

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

 

نکته:

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

 

نکته:

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

 

روش InterLeaving :

 

این روش برای ارسال n عدد فریم استفاده می شود. وبه جای ارسال تک تک فریم ها پشت سر هم ابتدا بیت یک کلیه فریم ها را ارسال می کند، و بعد بیت دو و… را ارسال می کند ( شکل ۶-۱).

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

 

 

 

۲ 

۱ 

۲ 

۱ 

۲ 

۱ 

۲ 

۱ 

۲ 

۱ 

شکل ۶-۱

 

حسن این روش در این است که هر گاه در یک ارسال حتی بیش از یک خطا داشته باشیم باز هم برای هر فریم حداکثر یک خطا خواهیم داشت و با استفاده از بیت 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

 

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

 

  • یک یا دو خطا.
  • تعداد خطا های فرد.
  • خطا های پشت سر هم کمتر از ۱۶.

 

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

 

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

 

نکته:

در کارتهای شبکه امروزی معمولا از روش 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 طراحی شده اند که در زیر مثال هایی از این نوع پروتکل ها آمده است :

 

  • ۱ – Persistent
  • non – Persistent
  • p – Persistent

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

 

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

 

نکته:

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

 

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

 

  • پروتکل نگاشت بیتی
  • پروتکل درختی

 

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

 

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

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

 



 

 



 

 


 

 

 

    A         B C D E F G H                            

شکل ۷-۱

ساختار درخت دودویی در شبکه برای پروتکل درختی

 

 

لایه شبکه ( Network ) :

 

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

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

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

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

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

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

 

نکته :

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

 

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

 

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

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

 

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

 

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

 

نکته:

نمونه ای از این الگوریتم، الگوریتم OSPF می باشد که در ماشین های مسیریاب ( Router ) تجاری استفاده می شود ( شکل ۸-۱ ).

 

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

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

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


شکل ۸-۱

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

 

 

الگوریتم غرق کن ( Flooding ) :

 

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

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

 

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

 

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

بنابراین در این الگوریتم مسیری برای ارسال انتخاب می شود که کمترین ترافیک تا مقصد را داشته باشد ( شکل ۹-۱ ).

 


شکل ۹-۱

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

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

 

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

برای اینکه این جدول به روز نگاه داشته شود و آخرین تغییرات در آن اعمال شود، مسیریاب های موجود در شبکه در فاصله های زمانی مشخص این جدول را برای یکدیگر ارسال می کنند و همدیگر را از وجود مسیر های شکسته یا مسیر های تازه ایجاد شده مطلع می نمایند ( شکل ۱۰-۱ ).

 


شکل ۱۰-۱

تبادل جدول مسیریابی در بین مسیریاب های موجود در شبکه

 

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

 

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

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

 


شکل ۱۱-۱

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

 

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

برای حل این مشکل از تکنیک مسیریابی سلسله مراتبی استفاده می شود. در این تکنیک شبکه به نواحی تقسیم می شود و هر مسیریاب تمام جزئیات مربوط به مسیریابی بهینه را در قسمت مربوط به خود را می داند. هرگاه ماشینی بخواهد اطلاعاتی را به خارج از قسمت خود ارسال کند مسیریاب تقاضای او را به مسیریاب مرزی ( مسیریابی که بین دو قسمت مجزا فعالیت می کند ) تحویل می دهد و مسیریاب مرزی نیز به نوبه خود بسته را به مسیریاب های سطوح بالاتر که جزئیات بیشتری در مورد شبکه مقصد می دانند تحویل می دهد و این روند ادامه می یابد تا اینکه اطلاعات به شبکه مقصد برسد( شکل ۱۲-۱).

 


شکل ۱۲-۱

نمایش مسیریابی سلسله مراتبی در شبکه های مجزا

 

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

 

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

مسیریابی بسته های مربوط به این کامپیوتر ها بسیار پیچیده می باشد. برای این کار باید عمل مسیریابی در هر منطقه توسط مسیریاب آن منطقه انجام گیرد و ضمن حرکت شخص مسیریاب باید عملیات مسیریابی را به نزدیکترین مسیریاب واگذار نماید ( شکل ۱۳-۱ ).

 

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

 

نکته:

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

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


شکل ۱۳-۱

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

 

آدرس IP :

 

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

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

 

نکته :

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

 

آدرس IP بطور استاندارد به صورت چهار عدد در مبنای ۱۰ که با نقطه از هم جدا شده اند نوشته می شود.

 

مثال:

۶۶.۱۲.۲۰۱.۱۸۰

 

اندازه آدرس IP چهار بایت است و در هر قسمت ( هر یک از بایت ها) می توان عدد ۰ تا ۲۵۵ قرار گیرد. دلیل این امر این است که هر بایت از هشت بیت تشکیل شده است و با هشت بیت حداکثر می توان عدد ۲۵۵ را تولید کرد. پس محدوده آدرس های IP می تواند از ۰.۰.۰.۰ تا ۲۵۵.۲۵۵.۲۵۵.۲۵۵ باشد.

 

نکته:

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

 

۱۲۷.۰.۰.۱

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

 

۲۵۵.۲۵۵.۲۵۵.۲۵۵

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

 

۰.۰.۰.۰

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

 

۱۹۲.۱۶۸.۰.۰

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

 

اجزای آدرس IP :

 

یک آدرس IP از دو بخش تشکیل شده است. بخش اول که مقداری از فضای ۳۲ بیتی آدرس IP را به خود اختصاص می دهد و مشخص کننده شبکه ای است که ماشین به آن تعلق دارد و برای تمام ماشین های موجود در یک شبکه یکسان است. و بخش دوم که آدرس ماشین موجود در شبکه است. این بخش بقیه بیت های موجود در آدرس IP را به خود اختصاص می دهد. بدیهی است که هر چه آدرس شبکه کوچکتر باشد، می توان ماشین های بیشتری را در آن شبکه تعریف کرد و گنجاند و عکس این موضوع نیز درست است یعنی هر چه تعداد بیشتری از بیت های آدرس IP به آدرس دهدی شبکه اختصاص یابد، تعداد کمتری ماشین می توانند در آن شبکه فعالیت کنند.

 

مثال:

۲۱۷.۲۱۹.۲۱۱.۱۰

۲۱۷.۲۱۹.۲۱۱.۵۰

۲۱۷.۲۱۹.۲۱۱.۱۸۰

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

 

نکته:

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

 

کلاس های آدرس IP :

 

در سیستم آدرس IP ما می توانیم ۲ به توان ۳۲ ماشین در جهان را آدرس دهدی کنیم. یعنی حدود چهار میلیارد و سیصد میلیون ماشین. در دنیای شبکه های کامپیوتری برای نظم دادن به شبکه ها و همچنین سرعت بخشیدن به عملیات مسیریابی آدرس های IP را در قالب های خاصی منظم کرده اند که به این قالب ها کلاس آدرس IP گویند.

یک کلاس آدرس IP از بخش های زیر تشکیل شده است:

NetWork Address / SubNet Address / Machine Address

 

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

 

نکته:

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

 

کلاس های پنج گانه:

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

 

کلاس نوع A :

 

در کلاس A اولین بیت سمت چپ با ارزشترین رقم آدرس IP صفر است ( شکل ۱۴-۱ ).

 

 

 

Host ID

 

 

NetWork ID

 

۰ 


 


۳۱ Bit

 

شکل ۱۴-۱

نمایش ساختار آدرس IP در کلاس A

 

در کلاس A هفت بیت باقیمانده از اولین بایت سمت چپ آدرس شبکه را مشخص می کند و ۲۴ بیت سمت راست آدرس زیر شبکه یا ماشین موجود در این شبکه را نمایش می دهد.

 

نکته:

به دلیل اینکه برای آدرس دهی شبکه در کلاس A تنها هفت بیت وجود دارد، در کلاس A می توان ۱۲۷ شبکه مجزا تعریف کرد.

 

نکته:

در کلاس A می توان هفده میلیون ماشین در هر شبکه تعریف کرد. این امر به دلیل این است که برای آدرس دهی یک ماشین از ۲۴ بیت استفاده می شود.

 

نکته:

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

 

مثالی از آدرس IP کلاس A :

۶۵.۱۵۶.۳۵.۴۵

در مثال فوق عدد ۶۵ آدرس شبکه و اعداد ۱۵۶.۳۵.۴۵ آدرس ماشین است.

 

نکته:

برای اینکه با دیدن یک آدرس IP ‌تشخیص دهیم که کلاس نوع A است یا خیر، کافیست که به بایت سمت چپ آن نگاه کنیم. اگر عددی بین ۱ تا ۱۲۶ بود آن IP‌ آدرس یک IP‌ در کلاس A است.

 

کلاس نوع B :

 

در کلاس B دو بیت سمت چپ پرارزشترین رقم ۱۰‌است ( شکل ۱۵-۱ ).

 

 

 

Host ID

 

 

NetWork ID

 

۰ 

۱ 


 


۳۰ Bit

 

شکل ۱۵-۱

نمایش ساختار آدرس IP در کلاس B

 

در کلاس B برای آدرس دهی شبکه از ۱۴ بیت مورد استفاده قرار می گیرد ( از دوبایت سمت چپ ۲ بیت برای مشخص کردن کلاس B و ۱۴ بیت برای مشخص کردن آدرس شبکه ).

 

نکته :

در کلاس B با ۱۴ بیت می توان ۲ به توان ۱۴( شانزده هزار و سیصد و هشتاد و دو ) شبکه مختلف تعریف کرد.

 

نکته :

در کلاس B دو بایت سمت راست برای مشخص کردن آدرس ماشین های موجود در شبکه به کار می رود. با تعداد ۱۶ بیت می توان ۲ به توان ۱۶ بیت ماشین مختلف در شبکه هایی با کلاس IP ، B تعریف کرد.

 

نکته:

تمام ۱۶ هزار شبکه ای که می توان با کلاس B تعریف کرد، به شبکه های بزرگ در جهان اختصاص داده شده و امروزه دیگر نمی توان شبکه ای با این کلاس ثبت کرد.

 

مثالی از آدرس دهی در کلاس B :

۱۴۶.۳۶.۴۵.۹۶

 

در این مثال عدد ۱۴۶.۳۶ آدرس شبکه و عدد ۴۵.۹۶ آدرس ماشین است.

 

نکته:

آدرس IP در کلاس B را می توان با مقدار بایت سمت چپ آن تشخیص داد. اگر بایت سمت چپ یک IP عددی بین ۱۲۸ تا ۱۹۱ بود، آن آدرس IP یک آدرس در کلاس B است.

 

آدرس IP با قالب زیر یک آدرس IP‌ در کلاس B است:

۱۲۸-۱۹۱.X.X.X

 

کلاس نوع C‌ :

 

در کلاس C سه بیت سمت چپ پرارزشترین رقم ۱۱۰‌است ( شکل ۱۶-۱ ).

 

 

 

Host ID

 

 

NetWork ID

 

۰ 

۱ 

۱ 


 


۲۹ Bit

 

شکل ۱۶-۱

نمایش ساختار آدرس IP در کلاس C

 

در کلاس C برای بخش آدرس شبکه ۲۱ بیت در نظر گرفته شده است یعنی سه بایت سمت چپ منهای سه بیت که مشخص کننده کلاس C است. و برای قسمت آدرس دهی ماشین ها یک بایت سمت راست رزرو شده ، که می تواند تا ۲۵۴ ماشین در یک شبکه را آدرس دهی کند.

 

نکته:

در کلاس نوع C به دلیل اینکه ۲۱ بیت برای آدرس دهی شبکه در نظر گرفته شده است، می توان تا حدود دو میلیون شبکه در این کلاس تعریف کرد.

 

نکته:

در کلاس نوع C تنها در هر شبکه می توان ۲۵۴ ماشین داشت. زیرا برای آدرس دهی ماشین ها در این نوع کلاس فقط می توان از هشت بیت استفاده کرد.

 

نکته:

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

 

مثال :

۲۱۷.۲۱۹.۲۱۱.۱۶

در مثال بالا اعداد ۲۱۷.۲۱۹.۲۱۱ آدرس شبکه و عدد ۱۶ آدرس ماشین است.

 

نکته:

در کلاس نوع C بایت سمت چپ آدرس IP می تواند عددی بین ۱۹۲ تا ۲۲۳ باشد. یعنی اگر آدرس IP با قالب زیر وجود داشته باشد یک IP‌از نوع کلاس C است:

۱۹۲-۲۲۳.X.X.X

 

کلاس نوع D :

 

در کلاس نوع D چهار بیت پرارزش بایت سمت چپ ۱۱۱۰ است ( شکل ۱۷-۱).

 

 

 

 

NetWork ID

 

۰ 

۱ 

۱ 

۱ 


 


۲۸ Bit

 

شکل ۱۷-۱

نمایش ساختار آدرس IP در کلاس D

 

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

 

کلاس نوع E :

 

در کلاس نوع E پنج بیت پرارزش بایت سمت چپ ۱۱۱۱۰ است ( شکل ۱۸-۱).

 

 

 

NetWork ID

 

۰ 

۱ 

۱ 

۱ 


 


۲۷ Bit

 

شکل ۱۸-۱

نمایش ساختار آدرس IP در کلاسE

 

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

 

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

 

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

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

 

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

 

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

 

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

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

 

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

 

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

 

نکته:

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

 

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

 

توجه :

لایه های یک تا سه را لایه های گام به گام ( Hop to Hop ) گویند. یعنی ارتباط در این لایه ها مستقیما با لایه های متناظر در ماشین مقصد برقرار نمی شود بلکه در طول مسیر بین مسیریاب های مختلف تا رسیدن به مقصد به صورت زنجیره ای برقرار است. اما در لایه چهار تا لایه هفت ارتباط انتها به انتها ( End to End ) وجود دارد یعنی این لایه ها به صورت مستقیم با لایه های متناظر خود در ماشین مقصد ارتباط برقرار می کنند ( شکل ۱۹-۱ ).

 

توجه:

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


شکل ۱۹-۱

 

در این لایه مفاهیم سوکت قرار داده شده و برنامه های کاربردی که در لایه هفتم ( Application ) مدل گنجانده شده اند با استفاده از یک آدرس منحصر به فرد و همچنین یک شماره که مشخص کننده برنامه است با دیگر کامپیوتر ها به تبادل اطلاعات در شبکه می پردازند. در لایه برنامه های کاربردی که لایه شماره هفت از مدل OSI است، ممکن است چندین برنامه مجزا به طور مستقل بر روی شبکه فعالیت داشته باشند یعنی به ارسال و دریافت بسته بر روی شبکه مبادرت کنند. تمام بسته هایی که به یک ماشین وارد می شوند یا بسته هایی که قرار است از ماشین به سوی یک مقصد خاص خارج شوند، تحویل لایه انتقال داده می شوند. لایه انتقال برای اینکه بداند که هر بسته متعلق به کدام برنامه کاربردی در لایه هفتم است، به آن یک شماره مشخصه یکتا می دهد که این شماره می تواند بین ۱ تا عدد ۶۵۵۳۵ باشد. این عدد را اصطلاحا شماره پورت گویند ( شکل ۲۰-۱) .

 


شکل ۲۰-۱

نمایش مفاهیم مختلف در لایه های ۷ گانه

 

انواع پورت :

 

در شبکه بنا به کاربرد های خاص دو نوع پورت وجود دارد:

 

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

 

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

 

پروتکل TCP :

 

پروتکل TCP در شبکه برای برقراری یک ارتباط امن بین گیرنده و فرستنده استفاده می شود. این پروتکل به بسته های ارسالی هدری مانند شکل ۲۱-۱ اضافه می کند.

 

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

 


 

شکل ۲۱-۱

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

 

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

 

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

 

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

 

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

 

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

 

  • TCP Header Length مشخص می کند که طوا هدر TCP چند کلمه ۳۲ بیتی است.

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

  • برای قط ارتباط بیت FIN برابر یک می شود.

 

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

 

  • فیلد Option برای این است که امکاناتی که توسط هدر معمولی ارائه نشده ، بتوان به این قسمت اضافه نمود. حداکثر طول این قسمت ۵۳۶ بایت می باشد.

 

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

 

 

نکته:

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

 

روش برقراری ارتباط در پروتکل TCP :

 

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

 

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

 

مرحله اول :

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

 

نکته:

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

 

نکته:

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

 

مثال :

اگر در فیلد Sequence Number عدد ۶۵ نوشته شود بدین معنی است که داده های ارسالی از طرف فرستنده به گیرنده از شماره ۶۶ شماره گذاری می شوند.

 

مرحله دوم :

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

 

نکته:

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

 

مرحله سوم :

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

 

 

 

  • بیت Syn را یک می کند.

 

  • بیت Ack را برابر یک می کند.

 

  • فیلد Sequence Number را تنظیم می کند.

 

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

 

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

 

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

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

 

نکته:

اگر هر کدام از طرفین بر اثر مشکل سخت افزاری یا نرم افزاری ارتباط را بدون هماهنگی با طرف مقابل قطع کند، برای برقراری ارتباط مجدد تا ۱۲۰ ثانیه باید منتظر بماند. این امر به خاطر این است که بسته های ارسالی سرگردان ، ماشینی که بدون هماهنگی قطع شده است نتوانسته آنها را دریافت کند، از زیر شبکه حذف شوند.

 

نکته:

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

 

پروتکل UDP :

 

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

 

نکته:

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

 

نکته:

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

 

توجه :

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

 

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

 

در شکل ۲۲-۱ می توانید هدر مربوط به بسته های UDP را مشاهده کنید:


شکل ۲۲-۱

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

 

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

 

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

 

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

 

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

 

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

 

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

 

نکته:

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

 

نکته:

تعداد پورت های قابل تعریف در سیستم های کامپیوتری ۶۵۵۳۵ عدد می باشد زیرا در هدر های بسته های TCP و همچنین بسته های UDP 16 بیت برای نمایش شماره پورت در نظر گرفته شده است. و همانطور که می دانید بیشترین مقداری که می توانیم با ۱۶ بیت نمایش دهیم عدد ۶۵۵۳۵ است. از این تعداد پورت ۱۰۲۴ تای اول آن برای مقاصد خاصی که پروتکل های استاندارد تبادل اطلاعات در شبکه هستند در نظر گرفته شده است. نظیر سرویس HTTP که بر روی پورت ۸۰ فعالیت می کند یا سرویس DayTime که سرویسی برای نمایش ساعت ماشین میزبان است و بر روی پورت ۱۳ فعالیت می کند. برای نوشتن برنامه های جدید مجاز به انتخاب شماره هایی از ۱ تا ۱۰۲۴ به عنوان شماره پورت برنامه نیستیم ولی می توانیم از عدد ۱۰۲۴ تا ۶۵۵۳۵ که آزاد است شماره پورت برنامه خود را انتخاب کنیم.

 

شماره و مشخصات فنی پورت های ۱۵۰-۱ :

 

 

Keyword Decimal Description

——- ——- ———–

۰/tcp Reserved

۰/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

# ۴/tcp Unassigned

# ۴/udp Unassigned

rje 5/tcp Remote Job Entry

rje 5/udp Remote Job Entry

# ۶/tcp Unassigned

# ۶/udp Unassigned

echo 7/tcp Echo

echo 7/udp Echo

# ۸/tcp Unassigned

# ۸/udp Unassigned

discard 9/tcp Discard

discard 9/udp Discard

# ۱۰/tcp Unassigned

# ۱۰/udp Unassigned

systat 11/tcp Active Users

systat 11/udp Active Users

# ۱۲/tcp Unassigned

# ۱۲/udp Unassigned

daytime 13/tcp Daytime

daytime 13/udp Daytime

# ۱۴/tcp Unassigned

# ۱۴/udp Unassigned

# ۱۵/tcp Unassigned [was netstat]

# ۱۵/udp Unassigned

# ۱۶/tcp Unassigned

# ۱۶/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]

# ۲۲/tcp Unassigned

# ۲۲/udp Unassigned

telnet 23/tcp Telnet

telnet 23/udp Telnet

۲۴/tcp any private mail system

۲۴/udp any private mail system

smtp 25/tcp Simple Mail Transfer

smtp 25/udp Simple Mail Transfer

# ۲۶/tcp Unassigned

# ۲۶/udp Unassigned

nsw-fe 27/tcp NSW User System FE

nsw-fe 27/udp NSW User System FE

# ۲۸/tcp Unassigned

# ۲۸/udp Unassigned

msg-icp 29/tcp MSG ICP

msg-icp 29/udp MSG ICP

# ۳۰/tcp Unassigned

# ۳۰/udp Unassigned

msg-auth 31/tcp MSG Authentication

msg-auth 31/udp MSG Authentication

# ۳۲/tcp Unassigned

# ۳۲/udp Unassigned

dsp 33/tcp Display Support Protocol

dsp 33/udp Display Support Protocol

# ۳۴/tcp Unassigned

# ۳۴/udp Unassigned

۳۵/tcp any private printer server

۳۵/udp any private printer server

# ۳۶/tcp Unassigned

# ۳۶/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

# ۴۰/tcp Unassigned

# ۴۰/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

۵۷/tcp any private terminal access

۵۷/udp any private terminal access

xns-mail 58/tcp XNS Mail

xns-mail 58/udp XNS Mail

۵۹/tcp any private file service

۵۹/udp any private file service

۶۰/tcp Unassigned

۶۰/udp Unassigned

ni-mail 61/tcp NI MAIL

ni-mail 61/udp NI MAIL

acas 62/tcp ACA Services

acas 62/udp ACA Services

# ۶۳/tcp Unassigned

# ۶۳/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

۷۵/tcp any private dial out service

۷۵/udp any private dial out service

deos 76/tcp Distributed External Object Store

deos 76/udp Distributed External Object Store

۷۷/tcp any private RJE service

۷۷/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

۸۷/tcp any private terminal link

۸۷/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

۳com-tsmux 106/tcp 3COM-TSMUX

۳com-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 ها آمده است:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

لایه جلسه به کاربران یک شبکه این امکان را می دهد که با یکدیگر نشست برقرار کنند.

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

 

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

 

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

 

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

 

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

 

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

 

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

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

 

توجه:

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

 

لایه کاربرد ( Application ):

 

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

در لایه کاربرد برنامه های مختلفی می توانند اجرا شوند و هر کدام نیز بر اساس پروتکلی خاص فعالیت کنند. برنامه های لایه کاربرد در هر مرحله داده های خود را برای ارسال بر روی شبکه به لایه های پایین تر خود می دهند تا بعد از اعمال قواعد گفته شده در هر لایه به لایه فیزیکی برای ارسال بر روی خط تحویل داده شوند. لایه های پایین تر در ماشین مقابل وقتی داده ها را دریافت می کنند، با توجه به شماره پورت هر برنامه اطلاعات دریافتی را بین برنامه های درخواست کنند یا سرویس دهنده تقسیم می نمایند شکل ۲۳-۱ روند ارسال یک بسته را از لایه کاربرد یک ماشین و دریافت آن توسط لایه فیزیکی ماشین مقابل و همچنین اتفاقاتی که در هر لایه برای بسته ها می افتد را نمایش می دهد.

 

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

 

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

 

  • پروتکل ارسال فایل FTP .

 

  • پروتکل ارسال پست الکترونیکی SMTP.

 

  • پروتکل دریافت پست الکترونیکی POP2 و POP3.

 

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

 

  • پروتکل انتقال ابر متن با امنیت HTTPS

 

  • پروتکل ‏TFTP

 

  • پروتکل NETBIOS

 

  • پروتکل GOPHER

 

 


شکل ۲۳-۱

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

 

 

پروتکل HTTP :

 

پروتکل HTTP قراردادی برای ارسال ابرمتن ( HTML ) تحت شبکه های کامپیوتری است. این پروتکل بر روی پورت ۸۰ فعالیت می کند. و برای انجام سرویس دهی نیاز به یک ماشین سرویس دهنده 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 قراردادی برای انتقال فایل ها و اسناد تحت شبکه است. این سرویس بر روی دو پورت ۲۰ و ۲۱ به صورت استاندارد تعریف شده است. پورت ۲۰ برای انتقال داده ها و پورت ۲۱ به منظور صدور فرامین در نظر گرفته شده است ( شکل ۲۴-۱ ).

پروتکل 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‌ و به جای رمز عبور یک آدرس پست الکترونیکی ( یک عبارت که شامل کاراکتر @ باشد ) بنویسید.

 

 


شکل ۲۴-۱

نحوه برقراری ارتباط به وسیله دو پورت در پروتکل FTP

 

 

 

پروتکل SMTP :

 

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

 

پروتکل SMTP به صورت استاندارد بر روی پورت ۲۵ فعالیت می کند. و تحت این پورت به ارسال پست الکترونیکی می پردازد.

 

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

قوانین ارسال پست الکترونیکی در پروتکل SMTP :

 

برای ارسال یک E.Mail در اولین گام شما باید به ماشینی در شبکه که این سرویس بر روی آن فعال است متصل شوید. برای این منظور می توانید از ماشین های سرویس دهنده پست الکترونیکی معرف دنیا استفاده نمایید. یا اینکه بر روی شبکه به دنبال ماشینی که پورت ۲۵ باز دارد بگردید.

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

 

www.mail.yahoo.com

 

www.gmail.com

 

www.hotmail.com

 

www.mailcity.com

 

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

سرور ارسال می کند با ماشین میزبان ارتباط برقرار کنید.

 

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

 

telnet شماره پورت ۲۵ آدرس ماشین سرویس دهنده

 

در مثال زیر به سرویس 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 به صورت استاندارد بر روی پورت شماره ۱۱۰ فعالیت می کند. و پورتی که برای سرویس POP2 در نظر گرفته شده است پورت شماره ۱۰۹ است.

 

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

 

telnet شماره پورت ۱۱۰ آدرس سرویس دهنده پست الکترونیکی

 

مثال:

 

telnet gmail.com 110

 

با اجرای دستور فوق در صورتی که سرویس دهنده شما آماده فعالیت یاشد، برنامه Telnet به سرویس POP3 که بر روی پورت ۱۱۰ فعال است متصل می شود.در این زمان شما باید با استفاده از دستورات 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. ۲۵۳۶
  2. ۴۵۶۳
  3. ۸۹۵۵
  4. ۴۱۲۲
  5. ۶۳۳۳

 

RETR 1

 

Salam

Hal Shoma




Bye

 

DELE 3

 

QUIT

 

+OK POP3 server disconnecting

 

نکته:

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

 

‏پروتکل TELNET :

 

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

 

پروتکل TELNET
بر روی پورت شماره ۲۳ فعالیت می کند. این پروتکل به دلیل ماهیتی که دارد، ممکن است از نظر امنیتی برای یک شبکه مشکل ایجاد کند. به همین دلیل است که اکثر مدیران شبکه این سرویس مفید را از سیستم حذف می کنند یا آن را به حالت غیر فعال در می آورند.

 

برای اتصال به سیستمی که سرویس 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 آمده است شما در این شکل می توانید تفاوت این دو مدل را در نوع و تعداد لایه ها شماهده کنید:

 

 

 

لایه کاربرد

لایه نمایش

لایه جلسه

لایه انتقال

لایه شبکه

لایه پیوند داد ها

لایه فیزیکی

لایه کاربرد

 
 

لایه انتقال

لایه اینترنت

لایه میزبان شبکه

 

 

شکل ۲۵-۱

مقایسه ساختار 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ویرایش قدیمی تر این پروتکل می باشد که هم کنون در شبکه اینترنت مورد استفاده قرار می گیرد. هدر این نسخه را می توانید در شکل ۲۶-۱ مشاهده می کنید.

 

 


شکل ۲۶-۱

نمایش هدر IPv4

 

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

 

  • فیلد Version مشخص می کند که این بسته تحت کدام ویرایش از پروتکل IP قرار دارد.
  • فیلد IHL مشخص می کند که طول هدر چند کلمه ۳۲ بیتی است.

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

در شکل ۲۷-۱ می توانید هدر IPv6 را مشاهده کنید:

 

 

Flow Label 

Priority 

Version 

Hop Limit 

Next Header 

Pay Land Length 

Source Address 

Destination Address 

شکل ۲۷-۱

نمایش هدر IPv6

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

 

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

 

  • فیلد Priority حاوی اولویت بسته می باشد. برای امور عادی ۰ تا ۷ و برای کارهای بلادرنگ ۸ تا ۱۵. طول این فیلد ۴ بیت می باشد.

 

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

 

  • فیلد Pay Land Length مش خص می کند، که طول بسته بدون ۴۰ بایت مربوط به اولین هدر چقدر می باشد.

 

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

 

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

 

  • فیلد Source Address مشخص کننده ادرس مبدا می باشد. در IPv6 این فیلد ۱۲۸ بیت طول دارد که به وسیله ان می توان ۲ به توان ۱۲۸ ماشین را آدرس دهی کرد.

 

  • فیلد Destination Address مشخص کننده آدرس مقصد است. طول این فیلد ۱۲۸ بیت می باشد.

 

نکته:

در سیستم 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 سیستم عامل ویندوز مورد استفاده قرار گرفته است و همانطور که شماهده می کنید با استفاده از این ابزار به ماشینی با آدرس ۱۹۲.۱۶۸.۵.۶۳ پینگ شده است. این برنامه با ارسال ۴ بسته 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 و… را داشته باشد را نمایش می دهد.

 

شکل ۲۸-۱ قسمت های مختلف پروتکل TCP را نشان می دهد.

 


شکل ۲۸-۱

نمایش ساختار 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 مراجعه کنید و اطلاعات هر جزء از شبکه را به طور دقیق و موشکافانه مطالعه نمایید.

مطالب مرتبط
نظرات شما باعث دلگرمی و پیشرفت ما می شود.

telegram: @EngPedia_ir

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

  1. tina گفت:

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

  2. shirdel گفت:

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

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

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

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

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