آموزش سوکت پروگرمینگ (بخش اول)
- 1392/07/28
- 5 دیدگاه
برای كسب توانایی در ساخت برنامه هایی كه بتوانند تحت شبكه و استاندارد های موجود برای ساخت شبكه كاركنند نیاز است اطلاعات مقدماتی در مورد شبكه های كامپیوتری كسب كنید در این بخش ما به معرفی كوتاه و مقدماتی در مورد شبكه می پردازیم تا ذهن خوانندگان عزیز تا حدودی به بحث نزدیكتر شود و توانایی درك مطالب گقته شده را در قسمت های بعدی داشته باشند.
توجه:
اگر شما با شبكه آشنا هستید می توانید از این بخش كه مربوط به مفاهیم شبكه و پروتكل ها می باشند صرف نظر كنید و به قسمت های اصلی آموزش سوکت پروگرمینگ شبكه بپردازید.
IHS Perform
در این قسمت ابتدا به شرح مفاهیم پایه مدل مرجع OSI می پردازیم و سپس TCP/IP را به عنوان پروتكل استاندارد ارتباطات اینترنتی معرفی می كنیم و به جزئیات مهم آن اشاره خواهیم كرد و در نهایت مفهوم آدرس IP و كلاس های مختلف آن را بیان می كنیم در بخش بعدی نیز كه دنباله ای برای این بخش محسوب می شود به توضیح چگونگی عملكرد و دستورات پروتكل های مهم ارتباطی كه در سطح وسیع برروی شبكه جهانی اینترنت و شبكه های بر مبنای مدل TCP/IP استفاده می شوند می پردازیم.
خوانندگان عزیز توجه داشته باشند كه دانستن مطالب ارائه شده در این دو بخش برای یك برنامه نویس شبكه الزامی است و نداشتن اطلاعات كافی در مورد مبنا و طریقه كار كردن پروتكل ها ممكن است موجب شود كه در درك مطالب بعدی كتاب با مشكل مواجه شوید. پس مطالعه این بخش و بخش بعدی برای كسانی كه با مفاهیم شبكه به خوبی آشنا نیستند الزامی می باشد.
سوکت چیست؟
با یك بیان ساده می توان گفت كه سوكت به تركیب یك آدرس ماشین ( IP ) و یك شماره درگاه ( Port ) گفته می شود. در این تعریف اصطلاحاتی وجود دارد كه ممكن است معنای آن را به درستی در ك نكنید ولی در ادامه همین فصل به طور كامل با این مفاهیم آشنا خواهید شد.
در برقراری ارتباط بین كامپیوتر ها در یك شبكه دو چیز بسیار مهم است 1) آدرس ماشینی كه می خواهیم اطلاعاتی از ان بگیریم یا به آن ارسال كنیم 2) برنامه ای از آن ماشین كه در خواست اطلاعات كرده یا اینكه می خواهیم اطلاعاتی از آن برنامه كسب كنیم.
این دو یعنی آدرس ماشین و شماره برنامه به وسیله سوكت در شبكه مشخص می شوند.
برکلی سوکت
TCP/IP برای اولین بار درسیستم عامل یونیكس معرفی شد و در نگارش های بعدی این سیستم عامل كه توسط دانشگاه بركلی توسعه پیدا كرد ، یك رویه برنامه نویسی نیز همراه TCP/IP ارائه شد تا كاربران بتوانند به وسیله آن برنامه های تحت شبكه با استفاده از این پشته پروتكلی ایجاد كنند. این رویه برنامه نویسی به صورت استاندارد برای برنامه نویسی شبكه درآمد و بقیه زبان های توسعه و سیستم عامل نیز از این استاندارد برای پشتیبانی از برنامه نویسی شبكه استفاده كردند.
Winsick چیست؟
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 می گویند.
TCP و UDP
در پشته پروتكلی TCP/IP دو نوع ارتباط می توان با كامپیوتر را دور ایجاد كرد:
- اتصال به كامپیوتر راه دور به وسیله سوكت Data Stream
- اتصال به كامپیوتر راه دور به وسیله سوكت Data Gram
به بیان غیر رسمی به نوع ارتباط اول ( اتصال گرا ) ارتباط از نوع TCP گویند و اگر نوع برقرای ارتباط به حالت Data Gram ( غیر اتصال گرا ) باشد به آن UDP گویند.
كاربرد حالت اتصال گرا در مواقعی است كه نیاز به برقراری یك ارتباط امن بین دو ماشین فرستنده و گیرنده داشته باشیم یعنی از صحت دریافت اطلاعات در ماشین گیرنده مطمئن شویم.
اما حالت غیر اتصال گرا ( UDP ) مواقعی استفاده می شود كه خیلی دریافت اطلاعات توسط ماشین گیرنده اهمیتی نداشته باشد.
كیفیت سرویس دهی یك شبكه ( QQS)
سرویس كه یك شبكه ارائه می دهد باید دارای یك كیفیت خوب و قابل قبول باشد. از لحاظ كیفیت ارائه سرویس شبكه ها دو نوع می باشند:
- كاربر قبل از استفاده از شبكه در مورد كیفیت با شبكه توافق می كند.
- شبكه هیچ تضمینی در مورد كیفیت نكرده ولی سعی می كند حداكثر كیفیت را ارائه دهد.
پارامترهای ارزیابی كیفیت سرویس :
- مدت زمان ایجاد ارتباط ( Connection Establishment )
- احتمال قطع ارتباط ( Connection Establishment Failure Probability )
- پهنای باند عملی قابل استفاده كاربر ( Through Put )
- زمان انتقال داده ( Transit Delay )
- نرخ خطا ( Error Ratio )
- امنیت ( Security )
- اولویت بندی ( Priority )
مدل جرجع OSI
مدل OSI در شكل 1-1 آمده است. این مدل بر مبنای قراردادی است كه سازمان استاندارد جهانی ISO به عنوان اولین مرحله از استاندارد سازی قراردادهایی كه در لایه های مختلف مورد استفاده قرار می گیرند ایجاد كرد. این مدل در سال 1995 بازبینی شد. نام این مدل ISO OSI انتخاب شد زیرا با اتصال سیستم های باز سرو كار دارد. منظور از سیستم های باز سیستم هایی است كه برای ارتباط با سایر سیستم ها باز هستند. برای اختصار ، ان را OSI می نامیم.
شكل 1-1 مدل هفت لایه ای OSI
مدل OSI هفت لایه دارد. اصولی كه منجر به این هفت لایه شده اند عبارتند از:
- وقتی مباز به سطوح مختلفی از انتزاع است ، لایه ای باید ایجاد شود.
- هر لایه باید وظیفه مشخص داشته باشد.
- وظیفه هر لایه باید با در نظر گرفتن قراردادهای استاندارد جهاتی انتخاب شود.
- مرزهای لایه باید برای به حداقل رساندن جریان اطلاعات از طریق واسط ها انتخاب شوند.
- تعداد لایه ها باید آنقدر باشد كه نیازی به قراردادن وظایف متمایز در یك لایه نباشد.
در ادامه هر لایه از مدل را به نوبت ، با شروع از لایه پایین مورد بحث قرار می دهیم. توجه داشته باشید كه خود مدل OSI یك معماری شبكه نیست زیرا خدمات و قراردادهایی را كه باید در هر لایه مورد استفاده قرار گیرد را مشخص نمی كند. فقط مشخص می كند كه هر لایه چه عملی باید انجام دهد. ISO استاندارد هایی برای تمام لایه ها نیز تولید كرده است، گر چه این ها بخشی از خود مدل مرجع نیستند. هر كدام به عنوان استانداد جهانی منتشر شده اند.
لایه فیزیکی
لایه فیزیكی به انتقال بیت های خام بروی كانال ارتباطی مربوط می شود. اصول طراحی حكم می كند كه وقتی بیت 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 ):
5 |
شكل 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).
در این روش از بیت توازن هم برای سطر ها یعنی ( فریم ها) و هم برای ستون ها استفاده می شود.
k | … | 2 | 1 |
k | … | 2 | 1 |
k | … | 2 | 1 |
k | … | 2 | 1 |
k | … | 2 | 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
- 2536
- 4563
- 8955
- 4122
- 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 مراجعه كنید و اطلاعات هر جزء از شبكه را به طور دقیق و موشكافانه مطالعه نمایید.
مطالب مرتبط
برچسب ها : socket programming, socket چیست؟, آموزش Socket Programming, آموزش برنامه نویسی شبکه, آموزش سوکت پروگرمینگ, برنامه نویسی سوکت, دانلود آموزش برنامه نویسی سوکت, سوکت, سوکت چیست, شبکه
دیدگاهتان را بنویسید
نشانی ایمیل منتشر نخواهد شد
تعداد 5 دیدگاه برای نوشته " آموزش سوکت پروگرمینگ (بخش اول)" ارسال شده است .
مطالب جدید
- دیتابیس جامع مواد اپتیکی
- نرم افزار Milestone XProtect 2024 R2 نظارت بر دوربین امنیتی
- نرم افزار LightTools 2024.09 طراحی سیستمهای نوری
- نرم افزار Rsoft 2024.09 شبیه سازی فوتونیکی و اپتیک
- نرم افزار CODE V 2024.09 طراحی و شبیه سازی اپتیکی
- نرم افزار ImSym 2024.09 شبیهسازی سیستم تصویربرداری
- نرم افزار INSUL v10 2024 تحلیل عملکرد عایق صوتی
- نرم افزار SPACE GASS v14.2 2024 طراحی و تحلیل سازه
- نرم افزار CHECKWIND v8.1.6 2024 تحلیل بار باد
- نرم افزار CHECKSTEEL v4.1.6 2024 طراحی و تحلیل سازههای فولادی
مطالب پربازدید
مطالب تصادفی
- دانلود پروژه ایجاد سایه با OpenGL
- دانلود Ruby 2
- نرم افزار JMAG Designer 2023 طراحی و تحلیل الکترومکانیکی
- مجموعه نرم افزارهای مهندسی شماره شش
- نرم افزار ModelSim
- دانلود فول استاندارد ASTM بصورت رایگان
- دانلود سورس LSP Roots به زبان متلب
- دانلود سورس برنامه رسم Bezier
- نرم افزار Aspen HYSYS 14.2 2024 شبیه سازی فرایندهای شیمیایی و پتروشیمی
- نرمافزار Hexagon Dytran 2024.1 تحلیل مسائل دینامیک غیرخطی
مرسی. عالی بود لطفا ادامه دهید.
خواهش میکنم.
باعث خوشحالی ماست 🙂
سلام اگه مطالبش به روز تر باشه بهتر هم میشه موفق باشید
سلام
ممنون از نظر خوب و سازنده شما.
میتونین هماکر ما بشین؟
به این لینک مراجعه کنین:
http://engpedia.ir/%D9%87%D9%85%DA%A9%D8%A7%D8%B1%DB%8C/
با تشکر از مطالب خوبتون .می خواستم بدوتم برنامه نویسی سوکت پروگرمینگ رو کی شروع می کنید چون پایان نامه من هم همینه و من در قسمت ارسال عکس موندم و نتونستم عکسهای ارسالی ار سرور رو به طور صحیح در بروزرم نمایش بدم (البته اکسپلورر همه عکسهای دریافتی رو به درستی نمایش می ده). لطفا برای حل این مشکل کمک کنید.
با تشکد