این مقاله را به زبان دیگر ببینید:
اگر از هر کسی سوال کنید که مهمترین اصل در یادگیری دوره network+ چه چیزی بوده است، بیشتر افراد به مدل OSI اشاره میکنند. یادگیری مفهومی این مدل برای افراد بسیار کاربردی است و شما با یادگیری آن بسیاری از مفاهیم را بهتر میتوانید یاد بگیرید.
در حقیقت من خیلی تمایلی نداشتم که این مقاله اینقدر طولانی و خسته کننده شود. برای مباحث network+ شاید شما تنها به نیمی از آنچه که من در مقاله زیر توضیح دادهام نیاز داشته باشید.
حتی در مورد پروتکلهای هر لایه که من در مقاله راجب آن توضیح دادهام شما نیازی ندارید که خیلی از این موارد را بلد باشید و در بسیاری از کلاسها و دورههای آموزشی تنها آنها را نام میبرند.
دلیل اینکه من اینقدر جزئی به مدل OSI نگاه کردم بیشتر به این دلیل بود که قصد داشتم هر آن چیز که میدانستم با شما به اشتراک بگذارم. همچنین همان طور که در مقدمه آموزش network+ به شما توضیح داده یکی از اهداف این مقالههای آموزشی یادگیری بهتر خودم و دوره مباحث میباشد.
باتوجه به طولانی بودن این مقاله یک لیست از عناوین آن آمادهسازی کردهام تا شما براحتی بتوانید به هر قسمت از مقاله دسترسی داشته باشید:
1.مقدمه
2.مدل OSI چیست
3.اجزای مدل OSI
3.1.Physical layer
3.2.Data link layer
3.2.1.Arbitration
3.2.1.1.CSMA / CD
3.2.1.2.CSMA / CA
3.2.2.Physical Addressing
3.2.3.Error Checking
3.2.4.Encapsulation/Decapsulation
3.2.5.پروتکل های معروف لایه Data link
3.2.5.1.PPP
3.2.5.2.ATM
3.2.5.3.Ethernet
3.3.Network layer
3.3.1.Routing
3.3.2.Logical Addressing
3.3.3.Error Detection
3.3.4.Encapsulation/Decapsulation
3.3.5.پروتکل های معروف لایه Network
3.3.5.1.IP
3.3.5.2.ARP
3.3.5.3.ICMP
3.3.5.4.IPsec
3.4.Transport layer
3.4.1.Segmentation
3.4.2.Flow Control
3.4.3.Error Handling
3.4.4.Segment Sequencing
3.4.5.Service Addressing
3.4.6.پروتکل های معروف لایه Transport
3.4.6.1.TCP
3.4.6.2.UDP
3.5.Session layer
3.5.1.پروتکل های معروف لایه Session
3.5.1.1.NetBios
3.5.1.2.PPTP
3.5.1.3.PAP
3.6.Presentation layer
3.6.1.پروتکل های معروف لایه Presentation
3.6.1.1.SSL
3.6.1.2.TLS
3.7.Application layer
3.7.1.پروتکل های معروف لایه Application
3.7.1.1.FTP
3.7.1.2.http
3.7.1.3.POP3
3.7.1.4.SMTP
3.7.1.5.IRC
3.7.1.6.SSH
3.7.1.7.DNS
4.Network Admin & Engineering
مقدمه – نیاز به شبکههای کامپیوتری
بعد از اتمام جنگ جهانی که جنگ رسانهای شدت بیشتری گرفت؛ بحث انتقال دیتا و اطلاعات از راه دور مهمتر شد. داستان از جایی شروع میشد که زمانی که جاسوسان در کشورهای دیگر فعالیت میکردند و میخواستند اطلاعات و یافتههای خود را ارسال کنند دچار مشکل میشدند.
مثلا جاسوسهایی که در کشور روسیه بودند میخواستند اطلاعاتی را برای سازمانهای اطلاعاتی در آمریکا ارسال کنند. داستان اینجا بود که مسکو فاصله زیادی با آمریکا داشت و داستان تنها فاصله زیاد نبود. انتقال اطلاعات نیز باید بگونهای انجام میگرفت که جاسوسان دچار مشکل نشوند.
یعنی در شبکههای کامپیوتری نیز مثل همه تکنولوژیهای دیگر ابتدا جنبه نظامی وجود داشت و دولتها از این بستر شبکههای کامپیوتری برای جاسوسی و سایر کاربردها نظامی استفاده میکردند. در این میان یکسری شرکتهای وابسته به دولت هم بودند که وظیفه گسترش این بستر را بر عهده داشتند.
معمولا زمانی که یک تکنولوژی در انحصار یک نظام قرار دارد بعد از چند سال عمومی میشود و در اختیار مردم قرار میگیرد. این کار از دو جنبه برای دولتها و کشورها پر سود است. اول اینکه زمانی که یک تکنولوژی در اختیار عموم قرار میگیرد چون افراد بیشتری بر روی آن کار میکنند؛ رشد بیشتری متوجه تکنولوژی میشود.
دوم اینکه دولتها زمانی یک تکنولوژی را روانه بازار میکنند که نسبت به آن تسلط کامل دارند و به آسانی با استفاده از در اختیار گذاشتن آن میتوانند از مردم خودشان یا سایر کشورهای دیگر جاسوسی کنند و اطلاعات آنان را ذخیرهسازی نمایند.
بعدها در کشورهایی مثل کشور ایران مشخص شد، دلیل اینکه ما در برخی از حوزهها دچار ضعف شدیم، این بوده است که از بستر انتقال اطلاعاتی استفاده میکردیم که از اول برای جاسوسی طراحی شده بود. برای مثال بعد از مدتی جنگ در خاورمیانه سربازان متوجه این موضوع شدند که نباید از تلفنهای هوشمند استفاده کنند.
فعالسازی سیستمهایی که مجهز به GPS هست در جنگها عواقب جبران ناپذیری میتوانست داشته باشد. و یا در جنگها استفاده از سامانههای اینترنتی ممکن است باعث شناسایی محل قرارگیری افراد شود. به نوعی میتوان گفت ما زمانی که از اینترنت استفاده میکنیم، برده اطلاعاتی کشورهای توسعه یافته مانند آمریکا هستیم.
پس از مدتی خود آمریکاییها متوجه یک چالش مهم در شبکههای کامپیوتری شدند. داستان از آنجایی شروع میشد که سایر علوم سریعتر از دانش شبکههای کامپیوتری پیشرفت میکرد. در واقع چون دولت شبکه اینترنت را در انحصار خود نگهداشته بود و علم آن را در اختیار عموم قرار نمیداد.
یعنی در کل قبل از اینکه تکنولوژی شبکههای کامپیوتری عمومی شود فقط توسط تعداد انگشت شماری شرکت مثل IBM، Xerox و Intel توسعه داده میشد. و این شرکتها از این موضوع که این تکنولوژی در اختیار مردم نیست سود زیادی میبردند.
داستان فقط انحصاری بودن تکنولوژیها نبود، هر کدام از شرکتهایی که وظیفه توسعه شبکههای کامپیوتری را داشتند، از استانداردها و تکنولوژیهای خاص خود برای توسعه شبکه استفاده میکردند. در نتیجه محصولات شرکتهای IBM با Intel قابل ادغام نبود.
شرکتهایی که بصورت انحصاری و زیر نظر دولت آمریکا بر روی شبکههای کامپیوتری کار میکردند، هر کدام دارای یک تکنولوژی برای گسترش و ارتباط شبکهها بودند. به فراخور این تکنولوژی، هر شرکت از توپولوژی شبکه مخصوص به خود استفاده مینمود.
و بر اساس این توپولوژی که هر شرکت از آن استفاده میکرد، شرکت تولید کننده یکسری قطعات و Device برای خود تولید و به بازار عرضه میکردند. اگه یادتون باشه یکی از شرکتهایی که گسترش شبکههای کامپیوتری در انحصارش قرار داشت، شرکت Xerox بود.
شرکت Xerox، شرکتی بود که از تکنولوژی Ethernet و توپولوژی BUS استفاده مینمود. ما در همین مقاله راجب Ethernet و انواع استانداردهای آن صحبت خواهیم کرد.
مدل OSI
به دلیل ضعف شبکهها حکومت، شرکتهای توسعه دهنده شبکههای کامپیوتری را مجبور کرد از یک استاندارد واحد برای انتقال داده در شبکههای کامپیوتری استفاده کنند. شرکت ISO که یک شرکت در حوزه استانداردهای جهانی هست در سال ۱۹۷۰ تصمیم گرفت در حوزه شبکه ورود پیدا کند.
شرکت ISO یا International Organization for Standardization که حتما با آن آشنایی دارید در حوزه بسیاری از تاسیسات، تکنولوژیها و مواد غذایی استانداردهایی برای تولید کنندگان تعرف نموده است. حتما شما در بسیاری از تبلیغهای تلویزیونی نام این شرکت را شنیدهاید.
این شرکت بصورت تخصصی در حوزه استاندارد تولیدات و محصولات فعالیت میکند. شرکت ISO در حوزه شبکههای کامپیوتری یک استاندارد به نام OSI طراحی نمود. OSI model مخفف Open Systems Interconnection model به معنای مدل اتصال سیستمها، بصورت عمومی میباشد.
OSI یک مدل فرضی، متشکل از هفت لایه هست که در آن هر کدام از این لایهها وظیفه خاص خود را بر عهده دارند و کار خود را انجام میدهند. کلمه Interconnection به این معناست که در این مدل اتصال داخلی وجود دارد و هر لایه با دو لایه قبل و بعد از خود در ارتباط هست.
راحتتر بخواهیم راجب این موضوع توضیح دهیم، هر لایه بصورت داخلی با لایه یا لایههای دیگر در حال تعامل است. مدل OSI دقیقا شبیه خط تولید یک کارخانه میباشد؛ یعنی محصول خروجی هر لایه آماده است که در لایه بعدی به عنوان ماده اولیه مورد استفاده قرار گیرد.
واضحتر بخواهیم در مورد این موضوع توضیح دهیم، مدل OSI یک مدل سلسه مراتبی هست. فلسفه مدل OSI این بود که تولید کنندگان بر اساس مدل OSI محصولات خود را تولید و به بازار عرضه کنند.
از طرفی من بعنوان ادمین و مدیر یک شبکه کامپیوتری نیز بر اساس این مدل OSI شبکه خود را طراحی و گسترش بدهم. همچنین یکی از دلایل وجود چنین مدلی آموزش شبکه و اجزای آن به دانشجویان بود.
دلیل دیگر این بود که در صورتی که شما قصد داشتید در مورد مفهومی در شبکه صحبت کنید بتوانید منظور دقیق خود را به طرف مقابل برسانید. برای مثال اگر شما در شبکه خود به مشکلی بر میخوردید راحتتر با استفاده از مدل OSI میتوانستید منظور خود را به طرف مقابل برسانید.
اجزای مدل OSI
خب میخوایم بریم سراغ بخشهای مختلف OSI و توضیح هر یک از این بخش ها. OSI شامل هفت بخش زیر میشود:
- لایه اول: Physical layer
- لایه دوم: Data link layer
- لایه سوم: Network layer
- لایه چهارم: Transport layer
- لایه پنجم: Session layer
- لایه ششم: Presentation layer
- لایه هفتم: Application layer
ممکن هست در برخی از مقالات شما مشاهده کنید که نام این لایهها به فارسی ترجمه شدهاند. سعی کنید تمامی مفاهیم را به انگلیسی در دنیای شبکه یادبگیرید تا در آینده زمانی که میخواهید مقالات انگلیسی را مطالعه کنید متوجه مفاهیم آنها شوید.
در لایههای مدل OSI هر چه لایهها به Application نزدیکتر است، درک و فهم آنها بیشتر است. Application نزدیکترین لایه به کاربر میباشد. قبل از اینکه بخواهم هر کدام از اجزای مدل OSI را توضیح دهم دوست دارم شما با معنای port و protocol آشنایی پیدا کنید.
تصور کنید که من زمانی که میخواهم صحبت کنم، از زبان فارسی استفاده میکنم. در صورتی که بخواهم با یک نفر دیگر ارتباط برقرار کنم باید فرد دیگر نیز بتواند با استفاده اززبان فارسی با من صجبت کند. این دقیقا معنای protocol میباشد.
در دنیای کامپیوتر، کامپیوترها با پروتکلهای یکسان میتوانند با یکدیگر ارتباط بگیرند. اگر من با یک نفر انگلیسی صحبت میکنم؛ فرد مقابل من باید انگلیسی بلد باشد تا بتواند جواب من را بدهد. پس تا اینجای کار پروتکل زبان مشترک بین سیستم هاست.
تصور کنید شما میخواهید وارد یک خانه شوید، خب قطعا شما از درب خانه وارد خانه میشوید. کامپیوتر شما نیز همانند خانهای است که تعداد زیادی درب برای ورود و خروج دیتا و اطلاعات دارد. به هر کدام از این درب ها، port گفته میشود.
Portها درگاههایی مشخص بر روی یک سیستم کامپیوتری هستند که برای ورود و خروج اطلاعات ساخته شدهاند. روی یک کامپیوتر هر port کاربرد خاص خود را دارد. و هر بسته که به سمت کامپیوتر شما ارسال میگردد توسط پورت مخصوص به خود در کامپیوتر شما دریافت میشود.
Physical layer
اولین لایه از مدل OSI لایه فیزیکال میباشد. در درون کابلهای شبکه سیگنالها بصورت ولتاژ بین کامپیوترها در حال انتقال میباشند. اینترفیسهای کارت شبکه این ولتاژها را دریافت و کارت شبکه کامپیوتر شما آنها را به بیت تبدیل میکنند.
یعنی ولتاژهایی که در طول کابل شبکه وجود دارند پس از این لایه به ۰ و ۱ تبدیل میشوند. در واقع الگوریتم تبدیل ولتاژ به ۰ و ۱ در بازه زمانی مشخص برای کارتهای شبکه تعریف شده است.
توضیح تبدیل سیگنالهای دیجیتال به بیت و برعکس کمی دشوار است ولی شما برای درک بهتر مطالب میتوانید در مورد اینکودینگهای قطبی و تک قطبی مطالعه داشته باشید. در کارتهای شبکه معمولا از چندین سطح ولتاژ برای نمایش مقادیر باینری استفاده میشود.
برای مثال شما تصور کنید در یک بازههای زمانی مشخص ولتاژهای +۳ ولت تا +۵ ولت بعنوان بیت ۱ در نظر گرفته میشود و ولتاژهای -۳ ولت تا -۵ ولت در کارتهای شبکه بیت ۰ در نظر گرفته میشود. در واقع برای انتقال Data در بستر شبکههای کامپیوتری از Manchester استفاده میشود.
البته که هیچ کس از شما در مورد این کد از شما سوالی نمیپرسد ولی اگر علاقه به مدارهای کارتهای شبکه و نحوه انتقال ۰ و ۱ها در شبکههای کامپیوتری دارید میتوانید در مورد Manchester و استاندارد IEEE ۸۰۲.۳ (پروتکل 802.3 برای Ethernet و پروکل 802.11 برای شبکه های Wi-Fi از جمله پروتکل های لایه Datalink هستند.) تحقیق کنید.
اینگونه کارتهای شبکه میتوانند با استفاده از ی ولت متر در بازههای زمانی مشخص سیگنالهای دیجیتال را به دادههای دیجیتالی تبدیل کنند.
Data link layer
وظایف لایه دوم شبکه شامل ۴ بخش مهم میشود:
Arbitration
اگر به یاد داشته باشید در زمانی که توپولوژیهای شبکههای کامپیوتری را مطرح میکردیم این توضیح را دادیم که ما یک مفهومی به نام collision داریم که به معنای تداخل و تصادف دادهها با یکدیگر میباشد.
خب در لایه Physical شبکه هیچ تدبیری برایعدم بروز کالیژن (Collision) در شبکه اندیشیده نشده است. در عوض لایه بعدی، یعنی Data link یک وظیفه مهم بنام Arbitration دارد که قرار هست Collision را حل کند.
CSMA / CD
یکی از متدهای Arbitration، مکانیزم CSMA / CD بود که توسط شرکت Xerox طراحی شده بود. این مکانیزم به گونهای طراحی شده بود که قبل از ارسال اطلاعات توسط یک کامپیوتر media را برسی میکرد و در صورت idle بودن اطلاعات را برای کامپیوتر مقصد ارسال مینمود.
راحتتر بخواهم در مورد این موضوع توضیح بدم، این مکانیزم شبکه را برسی میکرد و در صورتی که شبکه خلوت بود و کامپیوتر دیگری در حال ارسال اطلاعات نبود، دیتای خود را در بستر شبکه انتقال میداد.
یک احتمالی که در این بین وجود داشت این بود که دو کامپیوتر بصورت همزمان media را برسی نمایند و بعد از اینکه متوجه idle بودن شبکه شدند، همزمان اطلاعات را ارسال کنند؛ در این صورت ما باز هم شاهد Collision خواهیم بود.
برای همین مکانیزم را به گونهای اصلاح نمودند تا اولین کامپیوتری که متوجه بروز Collision در شبکه شد، تمامی کامپیوترهای شبکه را مطلع سازد که Collision رخ داده است. به سیگنالی که برای اطلاع از بروز کالیژن در شبکهها ارسال میشود jam signal میگویند.
بعد از دریافت jam signal توسط کامپیوترها تمامی کامپیوترها یک زمان رندوم صبر میکنند و مجددا پروسه CSMA / CD را انجام میدهند. یعنی دوباره idle بودن شبکه را برسی و در صورت آزاد بودن اطلاعات را ارسال میکنند.
چون این زمان بصورت رندوم بین کامپیوترها تعیین میشود خیلی بعید است که زمان رندوم دو کامپیوتر برابر یکدیگر شود و دوباره Collision رخ دهد. در این مکانیزم احتمال بروز Collision وجود داشت ولی این مکانیزم احتمال بروز Collision را کمتر مینمود.
در واقع CD در پایان نام این مکانیزم به معنای Collision Detection است. یعنی مکانیزمی برای تشخیص کالیژن در شبکه.
CSMA / CA
شرکت IBM یک مکانیزم دیگر بنام CSMA / CA یعنی Collision avoidance طراحی نمود و برای اولین بار ادعا نمود در شبکههای کامپیوتری هیچگونه Collision و تداخلی رخ نمیدهد. (به این مکانیزم Token passing گفته میشد.)
شرکت IBM در ساختار خود از توپولوژی ring استفاده میکرد و دستگاههای سخت افزاری بنام MAU طراحی نموده بود که در واقع ظاهر شبکه شبیه به توپولوژی ring نبود ولی این دستگاههای MAU توپولوژی را به ring تغییر میدادند.
مکانیزم CSMA / CA اینگونه کار میکرد که بر روی شبکه یک جریان مشخص بنام token وجود داشت. Token در واقع مجوزی برای تبادل اطلاعات بود و در شبکه تنها یک token وجود داشت. حالا شما تصور کنید که یک کامپیوتر قصد داشت ساعتها تبادل دیتا انجام دهد.
برای این مورد شرکت IBM یک مقدار مشخص از تبادل دیتا تعیین کرده بود. یعنی یک کامپیوتر حق نداشت هر چه قدر که دوست دارد token را در اختیار بگیرد و از آن استفاده کند. بعد از گذشت محدودیت تبادل اطلاعات کامپیوتر باید token را به کامپیوترهای دیگر شبکه تحویل میداد.
نه تنها محدودیت حجم انتقال دیتا در این مکانیزم وجود داشت بلکه محدودیت زمانی هم برای در اختیار داشتن token وجود داشت. پس هر کامپیوتر زمانی که قصد داشت اطلاعاتی را ارسال کند، media را برسی میکرد و در صورتی که token در اختیار کسی نبود، انتقال اطلاعات را شروع مینمود.
این مکانیزم Collision Free بود یعنی شما با استفاده از این مکانیزم هیچگونه کالیژن و تداخلی در شبکههای کامپیوتری نخواهید داشت. اما موضوع جالب توجه این بود که بر خلاف تصورات شرکت IBM بدلیل سخت بودن پیادهسازی این ساختار و پر هزینه بودن آن از این مکانیزم استقبال زیادی صورت نگرفت.
در مورد Arbitration و متدهای آن میتوانید از جدول زیر استفاده کنید:
ردیف |
شرکت سازنده |
تکنولوژی |
توپولوژی |
Arbitration |
Device |
1 |
Xerox |
Ethernet |
BUS / Star |
CSMA/CD |
HUB |
2 |
IBM |
Token ring |
Ring |
Token passing |
MAU |
پس تا اینجای کار اولین وظیفه Data link layer، Arbitration میباشد.
Physical Addressing
یکی از وظایف مهم لایه Data link این است که آدرس فیزیکی پکت (packet) ها در شبکه را تولید و بر آن نظارت کند. در مدل OSI قرار نیست هیچکدام از لایههای دیگر در کار یکدیگر دخالت کنند. بر این اساس لایهی Data link اساسا متوجه محصولی که از لایهی Network رسیده نمیشود.
در واقع لایهی Data link قرار است محصولات لایهی Network را دریافت کند، وظایف خود را بر روی آنانجام دهد و به لایهی Physical تحویل دهد. یا اینکه محصول لایهی Physical را گرفته و پس از انجام افعاب خود به لایهی Network تحویل دهد.
حالا یکی از وظایف لایه Data link این اس که تمام محصولی که از لایه بالاتر یعنی Network دریافت کرده داخل یک ظرف مشخص بنام payload منتقل کند و آن را بستهبندی کند. دقیقا همانند یک بسته پستی که شما در دنیای واقعی ارسال میکنید.
خب این بسته پستی نیاز به آدرس گیرنده و فرستنده دارد تا بتواند برای کامپیوتر مقصد ارسال شود. بنابراین لایهی Data link یک آدرس مبدا و یک آدرس مقصد و یکسری موارد دیگر روی هر بسته اضافه میکند. این موارد در بخش header به هر بسته اضافه میگردد.
همچنین هر بسته یا packet در شبکههای کامپیوتری دارای یک footer یا trailer نیز هست. قبل از ارسال هر packet کلیه مواردی که در بخش header قرار دارد توسط یک تابع بنام CRC (cyclic redundancy check) به یک کد تبدیل میگردد.
در نتیجه تابع CRC ما یک مقدار بنام FCS خواهیم داشت که به آن CRC Checksum نیز گفته میشود. حالا این مقدار FCS یا CRC Checksum در بخش Trailer هر پکت (packet) نوشته میشود.
من خیلی دوست داشتم همین جا کلیه اجزای header را به شما توضیح بدم منتها به این نتیجه رسیدم این مقاله بیش از حد طولانی میشود. به جز این خیلی از مفاهیم تخصصی هستند و با دانشی که شما در حال حاضر دارید این مقاله را مطالعه میکنید به سختی میتوان آنها را توضیح داد.
وقتی packet بدست یک کامپیوتر میرسد در لایه دوم قبل از اینکه هر کاری روی آن انجام شود، برسی میشود که آیا این packet درست ارسال شده است. یعنی مجددا مقدار FCS داخل تابع معکوس CRC قرار میگیرد و اگر مقدار آن با header برابر شد مشخص میشود که packet بدرستی به مقصد رسیده است.
درصورتی که بسته بدرستی ارسال نشده باشد، packet مورد نظر توسط کامپیوتری که آن را دریافت نموده است drop میشود. نکته دیگر این است که در تکنولوژیهای مختلف physical address متفاوت میباشد. برای مثال در تکنولوژی ethernet، آدرس فیزیکی برابر MAC address یا media access control address میباشد.
در تکنولوژی ATM که بعدا با آن بیشتر آشنا میشویم، physical address با دو مفهوم VPI و VCI تعریف میشود که ممکن است موقع کانفیگ مودمهای مخابراتی آن را مشاهده کرده باشید.
Error Checking
لایه Data link به دو روش وظیفه Error Checking را انجام میدهد. یکی از این روشها LLC یا Logic Link Control نام دارد. LLC وظیفه یکپارچهسازی و هماهنگسازی فریمها را بر عهده دارد. به طور خلاصه LLC برسی میکند که فرمت و قالب packet درست میباشد.
راحتتر بخواهم توضیح بدم، packetها در دنیای شبکه همین جوری بدون نظم و ترتیب ارسال نمیشوند. تمامی packetهایی که در یک شبکه وجود دارند از یکسری استاندارد پیروی میکنند و LLC بصورت logical مسئول برسی این استانداردها میباشد.
دومین روش برای Error Checking در لایه Data link بصورت physical میباشد. در روش دوم physical address هر packet برسی میشود تا لایه Data link به این نتیجه برسد که بسته به درستی به مقصد رسیده است.
Encapsulation/Decapsulation
سمت ارسال کننده، هر Packet که از لایه Data link عبور میکند قبل از ارسال فرایند Encapsulation بر روی آن انجام میگیرد. سمت کامپیوتر مقصد نیز هر packet که دریافت میشود قبل از اینکه هر فرایندی بر روی آن آغاز شود ابتدا پروسه Decapsulation انجام میگیرد.
محصول لایه Data link پس از Encapsulation، frame میباشد. یعنی در عمل لایه Data link، packet یا payload لایه network را دریافت میکند و به frame تبدیل میکند یا Frame را دریافت کرده و بصورت packet به لایه network تحویل میدهد.
پروتکلهای معروف لایه Data link
PPP
پروتکل PPP که مخفف Point-to-Point میباشد، یک پروتکل در لایه دوم شبکه است که وظیفه آن انتقال دادهها و اطلاعات بصورت نقطه به نقطه است. به دلایلی در mediaهایی از پروتکل PPP استفاده میشود که پهنای باند محدود نیست.
برای مثال این پروتکل روی لینکهای فیزیکی فیبر نوری، کابلهای سریال و سایر mediaهای پر سرعت پیادهسازی میشود. خود پروتکل PPP برای عملکرد خود از پروتکل دیگری بنام LCP یا Link Control Protocol بهره میگیرد.
همچنین پروتکل ارتباطی PPP امکانات خوبی را در اختیار مدیران شبکه قرار میدهد که یکی از این امکانات مدیریت کیفیت link و ارتباط ایجاد شده میباشد.
از خصوصیات و ویژگیهای دیگر پروتکل PPP میتوان به نیاز به احراز هویت در آن اشاره نمود. وجود یک همچین ویژگی باعث افزایش امنیت در تبادل اطلاعات میگردد.
اولین بار این پروتکل توسط سازمان IEEE (Institute of Electrical and Electronics Engineers) ارائه شد ولی شرکت Cisco با ویرایش این پروتکل، یک نسخه انحصاری از آن بنام HDLC ارائه داد.
خب در بسیاری از موارد HDLC مورد استفاده قرار نمیگیرد چون بسیاری از Deviceهای شبکه شما ممکن است قادر به درک آن نباشند ولی معمولا در کانکشنهایی که در دو طرف قضیه شما از محصولات شرکت Cisco استفاده میکنید قطعا استفاده از پروتکل HDLC بهتر است.
در آینده راجب به کاربردها و نحوه راه اندازی این پروتکل بیشتر صحبت خواهیم کرد و فعلا میخواستم شما یک آشنایی با این پروتکل داشته باشید.
ATM
پروتکل ATM یا Asynchronous Transfer Mode یکی از پروتکلهایی هست که برای انتقال سریع نوع خاصی از Data طراحی شده است. از این پروتکل برای انتقال دادههایی همچون صوت و ویدئو استفاده میشود.
در واقع دلیل استفاده از این پروتکل نحوه کارکرد آن میباشد. پروتکل ATM، دادههای دیجیتالی را به بخشهای ۵۳ بایتی تقسیم و بر روی مدیا (media) ارسال میکند. به هر کدام از این بخشها یک سلول گفته میشود.
در واقع هر سلول یا Cell ۵۳ بایتی شامل ۴۸ بایت داده یا payload و ۵ بیت header میباشد. سپس هر کدام از بخشهای داده دیجیتالی بصورت مجزا پردازش میشوند و سچپس ارسال میگردند. در مورد مکانیزم این پروتکل میتوان ساعتها صحبت نمود ولی فعلا چیزی که خوب است شما بدانید به کاربردهای پروتکل ATM محدود میشود.
ساختار و مکانیزمی که پروتکل ATM دارد باعث شده که روترها درگیر پردازش اندازههای مختلف packetهای ارسالی نشوند. به همین دلیل سرعت پردازش و انتقال دیتا بر بستر این پروتکل افزایش پیدا میکند.
بطوریکه سرعت استاندارد انتقال این تکنولوژی بر بستر کابلهای فیبر نوری حدود ۱۵۵ مگابایت بر ثانیه است ولی در شبکههای ATM سرعت انتقال Data میتواند تا ۱۰ گیگابیت نیز افزایش داشته باشد.
Ethernet
پروتکل Ethernet، یک پروتکل استاندارد برای استفاده در شبکههای کامپیوتری میباشد که معمولا در شبکههای LAN و MAN مورد استفاده قرار میگیرد. کامپیوترهایی که با استفاده از پروتکل Ethernet تبادل اطلاعات را انجام میدهند، Data را به بخشهای کوچکتری بنام Frame تبدیل میکنند.
خود Frame شامل قسمتهای دیگری مثل LLC و MAC میباشد. در مورد MAC یا media access control بصورت مفصل در مقاله بعدی صحبت خواهیم کرد. LLC یا Logic Link Control وظیفه یکپارچهسازی و هماهنگسازی Frameها را بر عهده دارد.
پروتکل Ethernet بطور کلی در دو لایه physical و data link از مدل OSI فعالیت میکند. پروتکل Ethernet از لحاظ سرعت، دارای سه استاندارد میباشد که شامل Standard Ethernet، Fast Ethernet و Gigabit Ethernet میباشند.
Standard Ethernet اولین استاندارد اترنت بود که توانایی انتقال Data با سرعت ۱۰ مگابیت بر ثانیه را داشت. خب قطعا این میزان از سرعت برای یک شبکه محلی حتی در ابعاد کوچک هم کافی نبود.
برای همین سازمان IEEE روی استاندارد IEEE ۸۰۲.۳ کار کرد و نتیجه آن IEEE ۸۰۲.۳u و IEEE ۸۰۲.۳z شد که ما این استانداردها را بنام Fast Ethernet و Gigabit Ethernet میشناسیم.
Gigabit Ethernet (IEEE ۸۰۲.۳z) از نسل سوم اترنت میباشد که در شبکههای امروزی بسیار مورد استفاده قرار میگیرد. شما از طریق این استاندارد تا ۷۰ کیلومتر قادر خواهید بود اطلاعات را انتقال دهید. البته این استاندارد یک استاندارد پر هزینه محسوب میشود.
Fast Ethernet (IEEE ۸۰۲.۳u) از نسل دوم اترنت میباشد و هماطور که از نام آن مشخص است این استاندارد سرعت بالایی در انتقال اطلاعات دارد. بطوریکه سرعت استاندارد Fast Ethernet به ۱۰۰ مگابیت بر ثانیه نیز میرسد. البته به نسبت Gigabit Ethernet این استاندارد نمیتواند در مسافتهای طولانی Data را انتقال دهد.
بصورت استاندارد Fast Ethernet قابلیت آن را دارد که تا ۱۰ کیلومتر اطلاعات را جابجا کند که تقریبا میتوان گفت این عدد ۱۴ درصد استاندارد Gigabit Ethernet در انتقال Data میباشد.
Network layer
Routerها و Deviceهای شبکه که کار مسیریابی (routing) را بر عهده دارند در این لایه فعالیت میکنند. دلیل این امر این است که تمامی این دستگاهها بر مبنای ip address فعالیت میکنند.
در واقع ما در شبکههای کامپیوتری دو نوع آدرس داریم، یکی Physical Address که همان طور که گفتم شامل MAC Address میشود و دیگری Logical Address میباشد که شامل ip address هست.
تقریبا میتوان گفت همه افراد با ip Address آشنایی دارند ولی من در ادامه جداگانه راجب آن صحبت میکنم.
وظایف لایه سوم مدل OSI شامل موارد زیر میشود:
- Routing
- Logical Addressing
- Error Detection
- Encapsulation/Decapsulation
البته در لایه Network وظایف دیگری نیز وجود دارند که فعلا به آنها اشارهای نمیکنیم. حالا در مورد هر کدوم از این موارد میخوایم توضیح بدیم تا شما بطور دقیقتر متوجه شوید در لایه سوم شبکه چه اتفاقی میافتد.
Routing
Routing به معنای مسیریابی میباشد. ممکن هست یک packet برای رسیدن به مقصد بین Deviceهای شبکه چندین مرتبه دست به دست شود. برای مثال زمانی که شما در بستر اینترنت یک فایل را جابجا میکنید ممکن است بین چند ده Device شبکه فایل شما دست به دست شود تا به مقصد برسد.
همان طور که شما در دنیای واقعی امکان این را دارید تا برای رسیدن به مقصد از چنیدین مسیر جداگانه بروید، یک packet در دنیای شبکه نیز ممکن است برای رسیدن به مقصد خود راههای مختلفی داشته باشد.
Routing یا مسیریابی به این معناست که یک packet برای رسیدن به مقصد بهترین راه موجود در شبکه را انتخاب کند. شما با استفاده از دستور route print در ترمینال ویندوز (CMD) میتوانید routeهای پیشفرض یک سیستم را مشاهده کنید.
در لایه Network یک مسیر مجازی (Virtual circuit) بین مبدا و مقصد ایجاد میشود و packetهای ارسالی با استفاده از این مسیر مجازی به سمت مقصد حرکت میکنند. یه مقدار بخواهیم بهتر توضیح بدیم، در لایه Network مسیرهای منطقی یا Logical Path برای ارسال packetها ایجاد میشود.
Logical Addressing
آدرس دهی منطقی همان آدرس دهی میباشد که در آن از IP یا internet protocol کمک گرفته میشود. این نوع از آدرس دهی شباهتهایی با Physical Addressing دارد ولی در Physical Addressing از MAC Address کمک گرفته میشود.
لایه سوم مدل OSI نیز همانند لایه Data link دارای یک header است. در این لایه آدرس منطقی مبدا و مقصد هر بسته (packet) به بخش header بصورت IPv4 و IPv6 اضافه میشود.
Error Detection
شاید بگویید که در لایه Data link شبکه ما یکبار فرایند Error Detection را طی کردهایم و چرا مجدد باید این فرایند طی شود؟ دلیل این است که فرایند Error Detection که در لایه پایینتر رخ داد با Error Detection که در لایه Network رخ میدهد متفاوت است.
گفتیم که لایه Data link قدرت درک لایههای بالاتر را ندارد و تنها چیزی که از لایه Network به او میرسد را داخل یک قالب مشخص بنام payload میریزد و موارد دیگر را به آن اضافه میکند.
بنابراین در لایه Data link عملا امکان چک کردن IP Address مبدا و مقصد هر packet وجود ندارد.
Encapsulation/Decapsulation
در لایه سوم نیز مانند لایههای دیگر OSI؛ پس از انجام عملیات و وظایف هر لایه فرایند Encapsulation و Decapsulation انجام میگیرد و سپس Data به لایههای بالاتر یا پایینتر انتقال پیدا میکند. همانطور که گفتیم لایه Data link این اطلاعات را بنام payload میشناسد.
همانطور که توضیح دادیم لایههای مختلف OSI در کار یکدیگر دخالت نمیکنند، بنابراین لایه Data link نه سواد آن را دارد که بتواند payload لایه سوم را بخواند و نه اجازه دخالت در لایه Netwprk را دارد.
پروتکلهای معروف لایه Network
IP
Ip مخفف internet protocol میباشد. مهمترین وظیفه پروتکل IP آدرس دهی و مشخص کردن مبدا و مقصد یک packet میباشد. IP نیز همانند بسیاری از پروتکلهای دیگر در شبکه دارای ورژن و استانداردهای مختلفی هست.
حتما میدانید که در جهان دو ورژن برای پروتکل IP به نامهای IPv4 و IPv6 وجود دارند. تمام Hostهایی که در بستر شبکه هستند نیاز به یک Logical Address و Physical Address دارند.
Logical Address یا آدرس منطقی که برای ارسال هر packet مورد استفاده قرار میگیرد، IP میباشد. همانطور که در دنیای واقعی امکان این وجود ندارد که کدپستی دو خانه با یکدیگر برابر باشد، در یک شبکه کامپیوتری نیز به هیچ عنوان IP Addressهای مشابه نخواهیم داشت.
یکسری از IP Addressها بصورت local و یا برخی از آنها بصورت جهانی یا static میباشند. در شبکههای محلی از local IP Addressها استفاده میشود. معمولا در مورد سرورهایی که قرار است بصورت مداوم سرویسی را به کاربران در سطج جهان ارائه دهند IPهای جهانی تهیه میشود.
IP Address ورژن ۴ شامل ۳۲ بیت یا ۴ octet میباشد که ۸ بیت ۸بیت با یک نقطه از یکدیگر جدا شده اند. همچینین خود IP Address شامل دو قسمت Net id و Host id میباشد.
من در مقالهای جداگانه در مورد Internet Protocol توضیح دادم که به شما پیشنهاد میکنم برای درک بهتر subnet mask و انواع IP Address آن را مطالعه فرمایید.
ARP
پروتکل ARP یا Address Resolution Protocol در حقیقت وظیفه یافتن MAC Address مربوط به یک IP Address مشخص را بر عهده دارد. تصور کنید که میخواهید به یک سرور متصل شوید؛ برای این کار شما باید IP Address سروری که میخواهید به آن متصل شوید را داشته باشید ولی هیچگاه برای اتصال به آن از MAC Address استفاده نمیکنید.
این در حالی است که کامپیوتر شما باید یکسری packet برای اتصال به سرور مقصد ارسال کند تا اتصال شما با آن سرور برقرار شود. زمانی که این packetها میخواهند از لایه دوم شبکه یعنی Data link عبور کنند این لایه باید در بخش header آدرس Physical مبدا و مقصد را درج نماید.
خب سوال مهم این است که چگونه کامپیوتر شما متوجه میشود MAC Address مقصدی که میخواهد به آن یک packet را ارسال کند چیست؟
در اینجا کامیوتر شما با استفاده از پروتکل ARP آدرس Physical کامپیوتر مقصد را بدست میآورد و در نتیجه packet مورد نظر ارسال میگردد.
تصور کنید در شبکهای دو کامپیوتر قصد تبادل اطلاعات را دارند و یکی از این کامپیوترها یک IP از کامپیوتر دیگر دارد. کامپیوتر اول قبل از ارسال packet به کامپیوتر دوم اول جدولی بنام ARP Table را چک میکند تا ببیند MAC Address کامپیوتر دوم در آن وجود دارد یا ندارد.
در صورتی که این دو کامپیوتر قبلا تبادل اطلاعاتی با یکدیگر انجام داده باشند، هر کامپیوتر MAC Address و IP Address کامپیوتر دیگر را در ARP Table ذخیرهسازی نموده است.
در صورتی که درون ARP Table، MAC Address کامپیوتر دوم وجود نداشت؛ کامپیوتر اول یک Packet در شبکه بنام ARP request ارسال میکند. در این packet که به مقصد IP Address کامپیوتر دوم ارسال میگردد، بجای Dst MAC یا MAC Address مقصد، از Broadcast MAC Address استفاده میشود.
چون کامپیوتر اول MAC Address کامپیوتر دوم را نمیداند، ور برای ارسال هر packet به کامپیوتر دیگر نیاز به MAC Address او دارد بنابراین بجای MAC Address مقصد از آدرس FF:FF:FF:FF:FF:FF استفاده میکند که به آن Broadcast MAC Address میگویند.
تمامی کامپیوترهایی که در شبکه وجود دارند این packet را دریافت میکنند و زمانی که packet به لایه سوم هر کدام از این کامپیوترها میرسد، Logical Address این packetها برسی میشود. بنابر این در صورتی که کامپیوتری به جز کامپیوتر مقصد در شبکه وجود داشته باشد هر کدام از این کامپیوترها بستههای ارسالی را Drop میکنند.
ولی زمانی که ARP request به کامپیوتر مقصد میرسد با توجه به اینکه در لایه Network این کامپیوتر Logical Address او قرار دارد؛ این کامپیوتر یک packet بنام ARP replay برای کامپیوتر اول ارسال میکند. در این packet کامپیوتر دوم برای کامپیوتر اول MAC Address خود را وارد میکند.
در واقع زمانی که کامپیوتر اول ARP request را ارسال میکرد Src MAC یا MAC Address مبدا را برای کامپیوتر دوم ارسال کرده بود و زمانی که کامپیوتر دوم میخواست ARP replay را ارسال کند دقیقا میدانست باید به مقصد چه کامپیوتری packet را ارسال نماید.
با رسیدن ARP replay به کامپیوتر اول؛ هر دو کامپیوتر MAC Address و IP Address دیگر را دارند بنابراین ARP Table خود را کامل میکنند تا در تبادل اطلاعات بعدی نیازی انجام مجدد این فرایند نباشد.
پروتکل ARP در کنار مزایای زیادی که برای شبکههای کامپیوتری دارد، دارای معایبی نیز هست. البته بیشتر این معایب در بحثهای مربوط به امنیت شبکه بیشتر مطرح میشود. برای مثال در پروتکل ARP سیستم و مکانیزمی برای سنجش صحت ARP replay وجود ندارد.
یعنی اگر یک کامپیوتر به دلایل نامعلوم در شبکه برای کامپیوتری که ARP replay ارسال کرده یک ARP replay ارسال کند، کامپیوتر نمیتواند صحت اطلاعات ارسالی را برسی کند.
یا اینکه هکرها در شبکههای کامپیوتری از حملاتی بنام ARP Spoofing یا ARP Poisoning استفاده میکنند که شما در مورد این حملات میتوانید در دورههای امنیت اطلاعات بیشتر و کاملتری کسب کنید.
ICMP
پروتکل ICMP یا Internet Control Message Protocol یکی دیگر از مهمترین پروتکلهای لایه Network میباشد. از این پروتکل برای برسی ارتباط و گزارش خط یاعدم رسیدن یک packet به مقصد خود استفاده میشود.
مباحث در مورد پروتکل ICMP بسیار گسترده است و من تنها در اینجا قصد دارم عملکرد این پروتکل را در شبکههای کامپیوتری توضیح دهم.
پروتکل ICMP مسئول ارسال packetهای مختلفی در شبکه میباشد که هر کدام از این packetهای ICMP بر اساس Type و Code که حاوی آن هستند مفاهیم مختلفی را به گیرنده میرسانند.
در کل این packetها در شبکههای کامپیوتری شامل سه بخش اصلی میباشند:
- Type
- Code
- Checksum
بخش Type در هر packet نشان دهنده این است که این پیام به چه منظوری در شبکه ارسال گردیده است. برخی از مواقع یک نوع خاص از packetها ممکن است انواع متفاوتی داشته باشند که Code آنها را از یکدیگر متمایز میسازد.
بخش Checksum نیز همانطور که از نام آن پیداست برای این در هر packet ارسال میشود که صحت ارسال بحشهای Type و Code را در هر packet تایید نماید.
در جدول زیر انواع Type و Codeهای پروتکل ICMP قرار داده شده است:
Description |
Code |
Type |
Type Number |
Echo reply |
0 |
Echo Reply |
0 |
Reserved |
- |
Reserved |
1 |
Reserved |
- |
2 |
|
Destination network unreachable |
0 |
Destination Unreachable |
3 |
Destination host unreachable |
1 |
||
Destination protocol unreachable |
2 |
||
Destination port unreachable |
3 |
||
Fragmentation required, and DF flag set |
4 |
||
Source route failed |
5 |
||
Destination network unknown |
6 |
||
Destination host unknown |
7 |
||
Source host isolated |
8 |
||
Network administratively prohibited |
9 |
||
Host administratively prohibited |
10 |
||
Network unreachable for ToS |
11 |
||
Host unreachable for ToS |
12 |
||
Communication administratively prohibited |
13 |
||
Host Precedence Violation |
14 |
||
Precedence cutoff in effect |
15 |
||
Source quench (congestion control) |
0 |
Source Quench |
4 |
Redirect Datagram for the Network |
0 |
Redirect Message |
5 |
Redirect Datagram for the Host |
1 |
||
Redirect Datagram for the ToS & network |
2 |
||
Redirect Datagram for the ToS & host |
3 |
||
Alternate Host Address |
- |
Alternate Host Address |
6 |
Reserved |
- |
Reserved |
7 |
Echo request (used to ping) |
0 |
Echo Request |
8 |
Router Advertisement |
0 |
Router Advertisement |
9 |
Router discovery/selection/solicitation |
0 |
Router Solicitation |
10 |
TTL expired in transit |
0 |
Time Exceeded |
11 |
Fragment reassembly time exceeded |
1 |
||
Pointer indicates the error |
0 |
Parameter Problem: Bad IP header |
12 |
Missing a required option |
1 |
||
Bad length |
2 |
||
Timestamp |
0 |
Timestamp |
13 |
Timestamp Reply |
0 |
Timestamp Reply |
14 |
Information Request |
0 |
Information Request |
15 |
Information Reply |
0 |
Information Reply |
16 |
Address Mask Request |
0 |
Address Mask Request |
17 |
Address Mask Reply |
0 |
Address Mask Reply |
18 |
Reserved for security |
- |
reserved |
19 |
Reserved for robustness experiment |
- |
reserved |
20-29 |
Information Request |
0 |
Traceroute |
30 |
Request Extended Echo (XPing - see Extended Ping (Xping)) |
0 |
Extended Echo Request |
42 |
No Error |
0 |
Extended Echo Reply |
43 |
Malformed Query |
1 |
||
No Such Interface |
2 |
||
No Such Table Entry |
3 |
||
Multiple Interfaces Satisfy Query |
4 |
حقیقتا اگه بخوام همه موارد بالا رو توضیح بدم به جز اینکه خیلی از این موارد رو بلد نیستم، این مقاله خیلی طولانی میشه. بعدا راجب پروتکل ICMP جداگانه توضیح خواهم داد.
یکی از پرکاربردترین استفادههایی که هر فردی برای برقراری ارتباط آن را برسی میکند گرفتن ping میباشد. ابزار ping یکی از ابزارهایی هست که برای سنجش ارتباط میان مبدا و مقصد از پروتکل ICMP استفاده میکند.
IPsec
پروتکل IPsec یا IP security همانطور که از نام آن پیداست یک پروتکل برای تنظیم ارتباط امن و رمزنگاری شده بین کامپیوترها میباشد. در واقع IPsec یک پروتکل واحد نیست و خود متشکل از چندین پروتکل دیگر میباشد.
این پروتکل معمولا در مبانی پایه شبکه توضیح داده نمیشود، در اصل مربوط به امنیت و شبکه میباشد. حتما شما با VPNها آشنایی دارید. ممکن است تعریف VPN کمی با آنچیزی که شما تصور میکنید تفاوت داشته باشد.
VPN یا Virtual private network در شبکهها مانند اینترنت به شما این امکان را میدهند تا از یک شبکه عمومی به یک شبکه خصوصی دیگر متصل شوید و بین کامپیوتر خود و دیگر کامپیوترهای شبکه خصوصی تبادل Data انجام دهید. دقیقا مانند اینکه شما مستقیما به یک شبکه خصوصی متصل شدهاید.
تصور کنید شما یک VPN را بر روی کامپیوتر خود فعال کردهاید؛ در این حالت یک تانل امن بین شما و سرورهای VPN که دارید از آن استفاده میکنید تشکیل میشود. سپس هر packet که شما ارسال میکنید اول به سرور VPN ارسال میشود و سپس به سمت مقصد حرکت میکند.
یکی از کاربردهای پروتکل IPsec، استفاده آن برای راه اندازی VPN میباشد. همچنین از دیگر کاربردهای IPsec میتوان به رمزنگاری اطلاعات در بستر شبکه، ایجاد امنیت برای روترهایی که از طریق اینترنت مسیریابی میکنند و یا اهراز هویت اشاره نمود.
در مورد IPsec و ساختار آن و اینکه شامل چه پروتکلهایی میباشد در آینده بحث خواهیم نمود. چیزی که شما در این مرحله لازم است بدانید تنها این است که پروتکل IPsec در لایه Network فعالیت میکند و وظیفه آن ایجاد یک ارتباط امن بین Workstationها میباشد.
Transport layer
این لایه وظیفه ارتباط منطقی بصورت Connection Oriented (اتصال مستقیم) یا Connection Less (بدون اتصال) را بر عهده دارد.
این لایه وظایف مهمی را در شبکه بر عهده دارد و از جمله وظایف این لایه میتوان به موارد زیر اشاره نمود:
- Segmentation
- Flow Control
- Error Handling
- Segment Sequencing
- Service Addressing
- Multiplexing
البته توضیح تمامی این موارد یه مقدار سخت هست ولی شما در دورههای CCNA با آنها بطور کامل آشنا خواهید شد.
Segmentation
Segmentation اولین اتفاقی میباشد گه پس از ورود اطلاعات از لایه Session به لایه Transport اتفاق میافتد. در دنیای واقعی برای مدیریت بهتر کلاس آن را به گروههای کوچکتر تقسیم میکنند و یا در تمامی کشورها برای مدیریت بهتر کشور آن را به استانها و ایالات متعدد تقسیم میکنند.
در شبکههای کامپیوتری نیز در لایه Transport اطلاعات به بخشهای کوچکتری تقسیم میشوند که به هر یک از آنها یک Segment میگویند.
Flow Control
ما در شبکه یک حافظه بنام Buffer داریم که همانند یک صف برای segmentهای ایجاد شده عمل میکند. تصور کنید که کامپیوتر شما به دلیل بروز کالیژن در شبکه نمیتواند بستهای ارسال کند. یا اینکه در شبکه تداخلی بوجود آمده و کامپیوتر شما قادر به ارسال packetها در بستر شبکه نیست.
در این حالت تمامی segmentهایی که قرار است در لحظات آینده برای لایههای پایینتر ارسال شود، برای مدتی در بخش Buffer ذخیره میشود. لزوما نیازی نیست برای media اتفاقی بیوفتد تا از Buffer استفاده شود.
برای مثال در صورتی که میزان اطلاعاتی که از لایه بالاتر به این لایه ارسال شود زیاد باشد، این اطلاعات برای ارسال بهتر درون Buffer قرار میگیرند.
Error Handling
Error Handling در لایه Transport برسی میکند که آیا تمامی segmentهای ارسالی در شبکه به مقصد رسیده است. تصور کنید یک Message در لایه Session به لایه Transport رسیده است.
در این حالت Message مورد نظر ما به چندین segment تقسیم میشود و سپس برای ارسال به لایههای پایینتر ارسال میگردد. زمانی که لایه Transport سمت گیرنده این segmentها را دریافت مینماید باید تمامی آنها را داشته باشد تا بتواند Message اولیه را تولید و به لایه Session گیرنده تحویل دهد.
Error Handling یک مکانیزم برای Error Checking است که در آن پس از ارسال هر بسته یا packet کامپیوتر منتظر تایید رسیدن آن بسته میشود.
Segment Sequencing
برخی از افراد تصور میکنند زمانی که شما یکسری packet را در شبکه ارسال میکنید این packetها دقیقا به همان ترتیب ارسالی به مقصد میرسند. ولی به دلایل مختلف چنین اتفاقی در شبکههای کامپیوتری رخ نمیدهد.
ممکن است ترتیب segmentهایی که به مقصد میرسند با یکدیگر جابجا شوند. در این حالت ما به یک مکانیزمی نیاز خواهیم داشت که ترتیب این segmentهای دریافت شده را برای ما درست نماید.
برای مثال به شما صفحات بهم ریخته یک کتاب را میدهند و از شما میخواهند این کتاب بهم ریخته را درست کنید. اولین چیزی که توجه شما را به خود جلب میکند این است که در یک کتاب یکسری شماره صفحه وجود دارد. شما حتی اگر درک درستی از یک کتاب که به زبان دیگر نوشته شده باشد نداشته باشید، با استفاده از شماره صفحه میتوانید آن را مرتب نمایید.
در دنیای کامپیوتر میز چنین اتفاقی رخ میدهد؛ لایه Transport درک درستی از اطلاعات یک Message و الگوی اطلاعات آن ندارد بنابر این نمیتواند آن را درک و ترتیب آن را درست کند.
به همین دلیل برای هر segment یک sequence number در نظر گرفته میشود و فرایند Segment Sequencing با قرار دادن اعداد کنار یکدیگر، قادر خواهد بود که ترتیب Segmentهای دریافتی را درست نماید.
شما با استفاده از نرمافزارهایی مثل Wireshark میتوانید sequence number مربوط به هر packet را در شبکه مشاهده نمایید.
Service Addressing
تصور کنید در دنیای واقعی من یک نامه را برای مدیر یک بخش از یک کمپانی بزرگ ارسال میکنم. بعد از رسیدن نامه آدرس روی بسته چک میشود، ظاهر بسته برسی میشود و در صورت بیعیب و نقص بودن بسته ارسالی، تحویل گرفته میشود.
بسته نامه توسط منشی شرکت باز شده و چون روی نامه نوشته شده است که این نامه بدست چه شخصی در آن کمپانی برسد؛ نامه تحویل مسئول دفتر مدیر بخش داده میشود. و در نهایت نامه به مقصد خود میرسد.
در دنیای شبکههای کامپیوتری دریافت و برسی کردن درستی و صحت آدرس هر packet در لایههای اول تا سوم انجام میگیرد. همانطور که اشاره کردیم این کار توسط MAC Address و IP Address انجام میگیرد که در همین مقاله طرز ار آنها را به شما توضیح دادم.
ولی مشکل اینجاست که packet به کامپیوتر مقصد رسیده است ولی مشخص نیست باید تحویل چه شخصی داده شود. همچنین لایه Transport سواد فهم و درک این بسته دریافتی را ندارد.
به همین دلیل یکی از کارهایی که لایه Transport برای ما انجام میدهد این است که با استفاده از یک برچسب روی هر packet مشخص میکند که این packet باید به دست چه قسمتی از کامپیوتر مقصد برسد. به این فرایند Service Addressing گفته میشود.
در مورد اینکه این فرایند دقیقا به چه صورت ممکن میشود در دورههای شرکت سیسکو شما دقیقا به این موضوعات خواهید پرداخت و فعلا در دورهی Network plus نیازی به دانستن آن نخواهید داشت.
در واقع هر Service در لایههای بالاتر مدل OSI مانند Application با یک شماره در لایه Transport نظیر میشود. و موقع دریافت هر اطلاعاتی در لایه Transport، اطلاعات به بخش Service در لایههای بالاتر تحویل داده میشود.
برای مثال اگر شما درخواست بازکردن یک صفحه در مرورگر خود میدهید، این درخواست شما پس از دریافت و رسیدن به لایه Transport در سرور مقصد به سرویسی ارسال میگردد که با شماره ۸۰ یا ۴۴۳ بصورت پیشفرض تعیین شده است.
پروتکلهای معروف لایه Transport
TCP
پروتکل TCP یا Transmission Control Protocol یکی از استاندارد های موجود برای برقراری و حفظ ارتباط بین کامپیوترها میباشد. یک بسته برای ارسال در شبکه های کامپیوتری تنها از یک پروتکل استفاده نمیکند. در واقع هر packet از چندی پروتکل برای ارسال استفاده میکند تا به مقصد نهایی خود برسد.
پروتکل TCP نیز همواره از پروتکل IP یا Internet Protocol برای برقراری ارتباط ها استفاده میکند. در مورد ساختار TCP و packet هایی که با استفاده از این پروتکل ارسال میشوند مطالب زیادی میتوان گفت.
در ای پروتکل برای ارسال هر گونه اطلاعات یک ارتباط ایجاد شده و تا زمانی که اطلاعات بطور کامل انتقال پیدا نکرده و گیرنده پیام دریافت اطلاعات را به فرستنده ارسال نکرده؛ ارتباط حفظ میشود.
در واقع شما زمانی که میخواهید یک فایل دانلود کنید از پروتکل TCP استفاده میکنید چون تمام اطلاعات برای شما مهم هستند. تصور کنید که شما در حال دانلود یک نرم افزار هستید؛ در صورتی که بخشی از این نرم افزار ناقص دانلود شود، شما در بیشتر موارد موفق به نصب آن نخواهید بود.
کلا در مواردی که مهم هستند اطلاعات دقیق و درست به مقصد برسند از پروتکل TCP استفاده میشود. تصور کنید به هر دلیلی در ارسال یک packet مشکلی بوجود میآید و این packet بدرستی به مقصد خود نمیرسد.
در اینجا پروتکل TCP وظیفه شناسایی و رفع مشکل را در packet دریافتی دارد. در واقع این پروتکل packet را drop کرده و مجددا درخواست ارسال همان packet را به فرستنده میدهد.
از طرفی این پروتکل هر چند packet را که دریافت میکند، پیامی مبنی بر تایید دریافت آن به فرستنده میفرستند. در سمت فرستنده نیر پس از ارسال هر چند packet، پروتکل TCP منتظر دریافت پاسخ میماند.
UDP
Session layer
لایه Session در مدل OSI سه وظیفه مهم در قبال Session یا جلسههای کاری در شبکههای کامپیوتری دارد. در واقع همانطور که از نام این لایه مشخص است وظیفه این لایه فقط مربوط به Sessionها میباشد.
تصور کنید شما قصد انجام عملیاتی را بر روی شبکه دارید. در اولین مرحله باید یک Session یا جلسه برای این کار ایجاد شود. پس وظیفه اول این لایه ایجاد یا Initiate یک Session میباشد.
دومین کار این است که Session ایجاد شده باید حفظ و نگهداری شود. قطعا شما نمیخواهید در وسط یک کار مهم، ارتباط شما با سرور ارائه دهنده خدمات قطع شود؛ به همین دلیل عملیات بعدی که این لایه برای ما انجام میدهد، Maintain یا حفظ و نگهداری Session ایجاد شده میباشد.
سومین دلیلی که شما به این لایه نیاز خواهید داشت از بین بردن Sessionهای ایجاد شده میباشد. در شبکههای کامپیوتری سازندگان تمام سعی خد را نمودهاند تا همه چیز بر پایه یک منطق یا Logic اتفاق بیوفتد.
به نظر شما منطقی است که یک Session زمانی که ایجاد میشود، همیشه باز بماند؟
این موضوع علاوه بر این که مشکلات امنیتی در بر خواهد داشت، ممکن است ترافیک شبکه شما را نیز افزایش دهد. پس بهترین کار این است که زمانی که یک Session ایجاد میشود و عملیاتی در شبکه انجام میگیرد؛ پس از اتمام عملیات Session بسته شود و یا End Session اتفاق بیوفتد.
علاوه بر عملیاتهایی که در بالا به شما توضیح دادم لایه Session وظیفه Check Points را بر عهده دارد. در کلاسهای حضوری و آنلاین زمانی که یک معلم یا کنفرانس دهنده مطلبی را به شما میآموزد، از شما این سوال را میکند که آیا متوجه شدهاید؟
این سوال به این معنا میباشد که آیا شما تمامی این اطلاعاتی را که او توضیح داده است دریافت کرده و آن را فهمیدهاید یا خیر…
Check Points نیز در شبکههای کامپیوتری به همین معنا میباشد. تصور کنید که دو کامپیوتر قرار است هزاران packet را با یکدیگر تبادل نمایند. البته برای انتقال یک فایل حجیم ممکن است این عدد واقعا ناچیز باشد.
برای مثال زمانی که شما از یک سرور Backup تهیه میکنید و بر روی سختافزار دیگری در شبکه ذخیرهسازی میکنید، ترافیک شبکه شما خیلی بیشتر از این حرفها خواهد بود.
در این حالت Check Points وظیفه این را بر عهده دارد که در هر تعداد مشخصی که packet ارسال میشود، آن را با کامپیوتر مقصد check نماید تا از اینکه همه packetها به درستی به دست او رسیده اطمینان حاصل نماید.
در واقع در لایه Session برسی میشود که کامپیوتر مقصد اطلاعات را تا کدامیک از Check Pointها دریافت نموده است. تصور کنید که شما در حال دانلود یک فیلم بر روی مرورگر خود هستید. چیزی که در ایران خیلی شایع هست این است که ممکن است شما به دلایل مختلف مشکل در تداخل اینترنت داشته باشید.
یا به هر دلیلی Session ایجاد شده بین شما و سروری که از آن دانلود میکنید، قطع شود. در این حالت اگر شما مجددا به سرور متصل شوید لزومی ندارد که فایل را از اول دانلود نمایید.
سرور ارائه دهنده میتواند اطلاعات را از آخرین Check Point به بعد در اختیار شما قرار دهد. این امر باعث افزایش سرعت در شبکههای کامپیوتری میشود.
پروتکلهای معروف لایه Session
NetBios
NetBios یک پروتکل خیلی قدیمی هستش و شما در واقع قبل از بوجود اومدن پروتکل TCP از NetBios استفاده میشد. در واقع اگر امروزه از NetBios صحبت میکنیم منظورمون NetBios over TCP هست.
منظورم اینه که NetBios در گذشته از مکانیزمهای دیگری برای تشخیص و برقراری ارتباط استفاده میکرده که اگه دوست داشتید میتونید در اینترنت در موردش مطالعه کنید.
NetBios یک پروتکل برای برقراری ارتباط بین برنامههای کامپیوترهای مختلف بود. البته امروز دیگه در شبکههای استاندارد از NetBios استفاده نمیشود.
برای همین یه جملهای که بین هکرهای شبکه مرسوم است این هستش که اگه شما موفق شدید به یک شبکه دست پیدا کنید که در آن NetBios مورد استفاده قرار میگرفت احتمالا به جاهای جالبی رسیدید چون بصورت استاندارد از NetBios استفاده نمیشود.
معمولا یکی از کارهایی که مدیران شبکه انجام میدهند بستن پورتهای مربوط به NetBios در شبکههای کامپیوتری است. در واقع این کار میتواند باعث امنیت بیشتر کامپیوترهای شبکه شما شود.
در صورتی که NetBios در یک شبکه کامپیوتری فعال باشد؛ شما میتوانید با استفاده از آن متوجه نام کامپیوترها، برخی از سرویس ها، و… شوید که در یک شبکه برای هکرها اطلاعات مهمی محسوب میشود به همین دلیل اسکن کردن NetBios یکی از فعالیتهای هکرها محسوب میشود.
تا جایی که من میدانم تمامی سیستم عاملهای قدیمی از NetBios پشتیبانی میکنند. حتی سیستم عاملهای جدید Microsoft نیز برای برقراری ارتباط با یک کامپیوتر قدیمی از این پروتکل پشتیبانی میکند. اما در سیستم عاملهای جدید لینوکس شما دیگر NetBios نخواهید داشت.
اگه دیده باشید معمولا توصیه میشود در فایروالهای سیستم عاملها پورتهای ۱۳۸ و ۱۳۹ پروتکل TCP و پورت ۱۳۷ UDP را همیشه Disable یا Block کنید. این پورتها مربوط به NetBios میباشند.
خروجی NetBios شامل یک جدول میباشد که در آن NetBios name و Service ID وجود دارد. در واقع شما از طریق NetBios میتوانید متوجه اسم کامپیوترها و سرویسی که در شبکه ارائه دهند شوید.
PPTP
پروتکل PPTP یا Point-to-Point Tunneling Protocol یکی از پروتکلهای ارتباط VPN در شبکههای کامپیوتری میباشد. البته از این پروتکل بدلیل وجود مشکلات امنیتی در شبکههای استاندارد استفاده نمیشود و معمولا از پروتکل L2TP بجای این پروتکل کمک گرفته میشود.
این پروتکل در سال ۱۹۹۹ توسط چندین شرکت از جمله Microsoft طراحی شد و سرعت و پایداری بینظیری را در بین پروتکلها از خود نشان داد. بیشتر PPTP زمانی مورد استفاده قرار میگرفت که قرار بود دو router مستقیما با هم ارتباط داشته باشند.
PPTP از نظر ساختار یکی از سادهترین پروتکلهای موجود میباشد ولی از نظر محرمانگی اطلاعات ارسالی توسط این پروتکل دارای نقاط ضعف شناختهشدهای میباشد.
دلیل امنیت پایین این پروتکل این است که PPTP از رمزنگاری RC4 استفاده میکند که دارای آسیبپذیریهای شناخته شده است. به همین دلیل در حال حاضر تنها در مواردی از این پروتکل استفاده میشود که امنیت مهم نباشد.
PAP
PAP یا Password Authentication Protocol یگ پروتکل امنیتی برای احراز هویت پسوردها در شبکههای کامپیوتری میباشد.
پروتکلهایی مانند PPP وجود دارند که وضیفه آنها ایجاد یک ارتباط امن از راه دور میباشد. این پروتکلها نمیتوانند بصورت مستقل فعالیت کنند و برای انجام وظایف خود به پروتکلهای دیگری جهت احراز هویت کاربران نیازمند هستند.
در گذشته پروتکلی به نام SLIP یا Serial Line Interface Protocol وجود داشت که از آن برای Password Authentication استفاده میشد ولی با گذشت زمان کمکم این پروتکل بدلیل وجود ضعفهایی که داشت کنار گذاشته شد و پروتکل PAP جایگزین آن شد.
پس از برقراری ارتباط یک Client با Server توسط پروتکل PPP، کامپیوتر Client از پروتکل PAP برای ارسال اطلاعات حساس مانند username و password استفاده میکند.
البته امروزه از این پروتکل در یک شبکه استاندارد استفاده نمیشود، چراکه این پروتکل باعث بروز یکسری مشکلات امنیتی میشود. یکی از این مشکلات این است که پروتکل PAP اطلاعات کاربران را بصورت Plain text یا متن باز ارسال میکند.
این باعث میشود که در یک شبکه کامپیوتری هکر پس از نفوذ به شبکه و شنود اطلاعات به راحتی بتواند اطلاعات حساس را بدون هیچگونه دردسر استخراج نماید و از آن برای اهداف خود استفاده کند.
معمولا در شبکههای استاندارد تلاش میکنند از پروتکلهایی استفاده کنند که اطلاعات حساس را بصورت رمزنگاری شده ارسال کنند. در واقع در حال حاضر که هر روز شما خبری جدید راجب هکرها میشنوید، دغدغه بیشتر شرکتها حفظ امنیت است.
Presentation layer
یکی از مهمترین وظایف لایه Presentation، انجام عملیات Encryption و Compression میباشد. تصور کنید یکسری packet در شبکه شما بصورت Encrypt یا رمزنگاری شده ارسال شود. در این صورت لایه Presentation سمت فرستنده فرایند Encryption را برای هر packet انجام میدهد.
و سمت لایه Presentation گیرنده نیز packetهای دریافت شده؛ decrypt شده و سپس به لایه بالاتر، یعنی Application تحویل داده میشود.
در مورد فرایند Compression نیز همین اتفاق رخ میدهد؛ اگر میگوییم لایه Presentation فشردهسازی را انجام میدهد، در سمت دیگر همین لایه فرایند Extract صورت میگیرد تا packetهای دریافتی برای لایه Application قابل فهم باشد.
در این لایه به packetها و بستههای ارسالی و دریافتی Message گفته میشود. در کل در سه لایه بالایی مدل OSI یعنی Session، Presentation و Application جنس اطلاعات از نوع Data میباشد و به packetهای ارسالی و دریافتی در این لایهها Message گفته میشود.
در برخی از منابع و مقالات مربوط به شبکههای کامپیوتری لایه Presentation بنام Translation نیز شناخته میشود.
پروتکلهای معروف لایه Presentation
SSL
پروتکل SSL یا Secure Socket Layer، یک پروتکل برای ایجاد ارتباط امن بین Server و Client بود که در سال ۱۹۹۴ توسط شرکت Netscape معرفی گردید. البته در نسخه اولیه این پروتکل به دلیل وجود باگهای امنیتی هیچکس حاضر به استفاده از آن نشد.
ولی با ارائه نسخه دوم در سال ۱۹۹۵ و نسخه سوم در سال ۱۹۹۶ اوضاع کمی فرق کرد. SSL باعث ایجاد امنیت میشد و کاربران برای داشتن امنیت و همچنین حفظ حریم خصوصی از SSL استفاده مینمودند.
هنوز هم که هنوزه زمانی که شما یک سایت میسازید برای آن یک گواهینامه SSL دریافت میکنید. در واقع فکر میکنید که گواهینامه SSL دریافت میکنید.
ورژن دوم پروتکل SSL در سال ۲۰۱۱ و ورژن سوم این پروتکل در سال ۲۰۱۵ منسوخ اعلام شد. داستان اینجا بود که این پروتکل آنقدر قدیمی بود که استفاده از آن باعث مشکلات امنیتی میشد.
در واقع اگر شما در حال حاضر برای وبسایت خود گواهینامه SSL دریافت میکنید، سایت شما از پروتکل TLS برای ارتباط امن استفاده میکند. در سال ۱۹۹۹ اولین نسخه از پروتکل TLS بعنوان یک بروزرسانی از پروتکل SSL v۳ منتشر شد.
پروتکل SSL از چندین الگوریتم از جمله الگوریتمهای رمزنگاری نامتقارن (asymmetric encryption) برای ایجاد یک ارتباط امن استفاده میکند. توضیح این الگوریتمها و نحوه کارکرد هر کدام از این موارد بسیار زمانبر میباشد.
پس از ارائه نسخههای مختلف از پروتکل SSL بسیاری از پروتکلهای دیگر مثل http، SIP، SMTP، POP3 و FTP برای ایجاد امنیت در ارسال و دریافت اطلاعات از این پروتکل استفاده کردند.
استفاده از پروتکلهای SSL و TLS مستلزم آن بود که چه Client و چه Server گواهینامههای دیجیتالی داشته باشند. برای همین یکسری مراکز جهت صدور گواهینامههای دیجیتالی (Certificate authorities) بوجود آمد.
وظیفه Certificate authorities یا CA این بود که هویت طرفین ارتباط، اطلاعات حساب، تاریخ انقضای گواهینامه و… را بداند و طبق مواردی که در آن ثبت شده کامپیوترها را احراز هویت نماید.
TLS
پروتکل TLS یا Transfer Layer Security همانطور که بالاتر توضیح دادم یکی از نسخههای SSL بود. در سال ۱۹۹۹ اولین نسخه از پروتکل TLS معرفی شد. در سال ۲۰۰۶ میلادی نیز نسخه ۱.۱ از این پروتکل به بازار عرضه شد. امروزه از پروتکل TLS برای کاربریهای زیر استفاده میشود:
- اطمینان از صحت دادههای ارسالی وعدم تغییر اطلاعات
- اطمینان از صحت هویت طرفین مبادله کننده اطلاعات
- اطمینان از امنیت اطلاعات وعدم دسترسی شخص ثالث به اطلاعات در حال تبادل
در TLS سه اتفاق اصلی رخ میدهد که امنیت تبادل اطلاعات را برای ما در شبکهها فراهم میسازد. همانطور که در پروتکل SSL به شما توضیح دادم ما برای صدور گواهینامههای دیجیتال (Certificate) به یکسری Certificate authorities یا CA نیازمند بودیم.
حال در TLS با استفاده از Certificate ابتدا هویت سرویس دهنده و سرویس گیرنده تایید میشود. در واقع اولین اتفاقی که رخ میدهد این است که Client برسی میکند آیا Server ارائه دهنده خدمات همان کسی است که ادعا میکند.
سپس سرور ارائه دهنده خدمات هویت سرویس گیرنده را با استفاده از Certificate او تایید میکند. در صورتی که این دو مرحله با موفقیت انجام شد، Server و Client اطلاعات را با استفاده از رمزنگاری خاصی با یکدیگر تبادل میکنند.
Application layer
همانطور که بالاتر توضیح دادم این لایه نزدیکترین لایه به کاربر میباشد. در این لایه ارتباط بین کاربران با شبکه برقرار میشود و نرمافزارهای کاربردی همانند مرورگرها و ابزارهای ارتباط با شبکه در این لایه فعالیت میکنند.
به لایه Application در برخی از مقالات User Interface نیز گفته میشود. در واقع چون این لایه نزدیکترین لایه به کاربر یا User هست و تمامی درخواستهای کاربر بصورت مستقیم روی این لایه ایجاد میشود، به آن User Interface هم گفته میشود.
Application layer بطور اختصاصی مربوط به نرمافزارها و ابزارهایی میباشد که توسط برنامه نویسان، برنامه ریزی شدهاند که در شبکههای کامپیوتری فعالیت کنند.
برای مثال تمامی نرمافزارها و ابزارهایی که مانند Wireshark یا حتی نرمافزارهای شبکههای اجتماعی مانند واتساپ و… که در شبکه فعالیت میکنند، در اصل درون لایه Application قرار میگیرند.
به این نکته هم توجه کنید که لایههای OSI تنها مربوط به پروتکلها، ابزارها و نرمافزارهایی میباشد که در بستر شبکههای کامپیوتری فعالیت میکنند. برای مثال یک نرمافزار Notpad در زیر مجموعه هیچکدام از لایههای OSI قرار نمیگیرد.
یا برای مثال نرمافزار Microsoft Word در هیچ یک از لایههای OSI قرار نمیگیرد ولی اگر شما با یک نرمافزار Word رو به رو بودید که فایلهای شما را در بستر یک حافظه ابری (Cloud) ذخیرهسازی میکرد، میتوان گفت این نرمافزار در لایه Application فعالیت میکند.
تصور شما این نباشد که هر نرمافزاری که بر روی کامپیوتر فعالیت میکند قطعا در یکی از لایههای OSI فعالیت دارد. –یکی از اتفاقاتی که در لایه Application رخ میدهد، Request initiating میباشد.
Request initiating به این معناست که یک از وظایف این لایه ایجاد درخواست میباشد. تصور کنید شما یک مرورگر را باز کرده و داخل اینترنت یک واژه را جستوجو میکنید. یا از طریق پروتکل SMB قصد دارید به یک کامپیوتر دیگر متصل شوید و File Sharing آن را چک کنید.
در تمامی این موارد شما یک درخواست ایجاد میکنید و چون کاربر تمامی این درخواستها را ایجاد میکند، در اصل این درخواستها بر روی لایه هفتم یعنی Application ایجاد میشود.
یا برای مثال زمانی که شما یک صفحه اینترنتی را باز میکنید در واقع از پروتکل Http برای باز گردن یک صفحه استفاده میکنید. به packetهای ارتباطی لایه Application، Message گفته میشود. پس از ایجاد یک درخواست و تولید Message، این packetها برای لایه پایینتر یعنی Presentation ارسال میشود.
پروتکلهای معروف لایه Application
FTP
پروتکل FTP یا File Transfer Protocol یک پروتکل بسیار معروف برای انتقال فایل میباشند. این پروتکل یکی از پر استفادهترین پروتکلها میباشد و وظیفه آن انتقال فایل از یک هاست به هاست دیگر است.
زمانی که شما قصد دارید در شبکه انتقال فایل بین سرور و کلاینت را انجام دهید میتوانید از پروتکل FTP استفاده کنید. قبل از این پروتکل از روشهای دیگری برای انتقال فایلها به یک سرور استفاده میشد.
برای مثال اطلاعات بر روی یک فلاپی دیسک قرار میگرفت و به سرور منتقل میشد. در سال ۱۹۸۵، پس از استانداردسازی پروتکل FTP (RFC ۹۵۹) برای انتقال دادهها از FTP کمک گرفته میشد.
FTP به کاربران اجازه دانلود و آپلود را بر روی سرورها میداد. علاوه بر آن امکان حذف یا ایجاد دایرکتوری یا پوشه و گزارشگیری از فایلهای روی سیستم نیز برای کاربران فراهم بود.
از دیگر قابلیتهای این پروتکل میتوان به حذف، جابجایی و جستوجو بین فایلها نیز اشاره نمود که همه این قابلیتها باعث محبوبیت بیشتر پروتکل FTP شد. پروتکل FTP با استفاده از سه روش زیر قابل دسترس هست:
- ترمینال سیستم عاملها و یا خط فرمان ویندوز
- مرورگرها
- نرمافزارهای FTP client همانند File Zilla
البته پروتکل FTP دارای نواقصی هم بود که از جمله این نواقص میتوان بهعدم رمزنگاری اطلاعات بین Client و Server اشاره نمود. به همین دلیل امروزه در شبکهها سعی میشود از پروتکل SFTP یا SSH File Transfer Protocol استفاده میشود.
در ادامه همین مقاله در مورد پروتکل SSH بیشتر توضیح خواهم داد.
http
پروتکل http یا Hyper Text Transfer Protocol یک پروتکل استاندارد برای تبادل اطلاعات در شبکههای کامپیوتری میباشد. پس از تولد اولین سایت ها، پروتکل http بوجود آمد و امکان انتقال اطلاعات را برای کاربران فراهم ساخت.
قبل از ساخت و معرفی پروتکل http در سال ۱۹۹۱ میلادی، در شبکههای کامپیوتری هیچگونه روش استانداردی برای تبادل اطلاعات وجود نداشت.
با وجود این پروتکل انتقال اطلاعات فقط به متن و تصاویر محدود نمیشد و http امکان انتقال Audio و Video را نیز برای کاربران فراهم میساخت. همچنین برخی از پروتکلهای دیگر همانند FTP نیز قادر بودند با استفاده از پروتکل http فعالیت کنند.
در مورد نحوه کارکرد این پروتکل میتوان ساعتها صحبت نمود ولی بصورت خیلی ساده و خلاصه؛ زمانی که شما یک صفحه اینترنتی را باز میکنید، یک درخواست به Server آن وبسایت ارسال میکنید.
در نتیجه درخواست ارسال شده توسط هر Client یک Response از سمت Server ارسال میشود. درخواستهای شما میتواند چندین نوع باشد. همه این موارد اتفاقاتی هستند که در Background رخ میدهند و نتیجه آنها باز شدن یک صفحه اینترنتی در مرورگر شماست.
هر Request Message که از سمت Client به Server ارسال میشود شامل یک خط درخواست، header و Body میباشد. و هر Response Message که از سمت Server به Client ارسال میشود حاوی Status Line، Header و Body میباشد.
در دورههای CEH شما با تمامی این اجزا آشنا خواهید شد همچنین یادگیری انواع درخواستهای Http در دورههای امنیت شبکه الزامی هست. ولی با توجه به اینکه شما هنوز با خیلی مفاهیم آشنایی ندارید یادگیری این بخشها کمکی به شما نخواهد کرد.
پروتکل Http مشکلاتی هم داشت که از جمله این مشکلات میتوان به امن نبودن ارتباط اشاره کرد. حتما شنیدهاید که درون سایتهایی که از http استفاده میکنند login نکنید. در واقع در پروتکل http هیچ تدبیری برای امن کردن ارتباطات سنجیده نشده بود.
در یک شبکه کامپیوتری یک هکر میتوانست با شنود شبکه به راحتی متوجه اطلاعاتی شود که بین Client و Server با پروتکل Http در حال تبادل است. به همین دلیل برای امنسازی این ارتباط از پروتکلهایی مثل SSL و TLS کمک گرفته شد.
داستان فقط به هکرها محدود نمیشد؛ در بسیاری از کشورها مثل آمریکا ISPها یا شرکتهای ارائه دهنده اینترنت اجازه داشتند اطلاعات کاربران را رصد و این اطلاعات را به شرکتهای تبلیغاتی بفروشند.
به همین دلیل کاربران برای حفظ حریم شخصی خود مجبور بودند به سمت پروتکل Https بروند. منطقی هست که هیچکس دوست ندارد افراد دیگر بدانند در اینترنت مشغول چه کاری است.
در واقع پروتکل Http با SSL ترکیب و نتیجه آن پروتکل Https بود که با استفاده از certificate امنیت اطلاعات بین Server و Client را تضمین میکرد. به همین دلیل نه هکر و نه هیچکس دیگر متوجه اطلاعات دریافتی و ارسالی نمیشد.
POP3
POP3 یکی از معروفترین پروتکلهای ارسال ایمیل در شبکههای کامپیوتری میباشد. POP3 یا Post Office Protocol وظیفه ارسال یک ایمیل به مقصد را برعهده دارد.
نکته آنجاست که پس از اینکه ایمیل به دست گیرنده رسید این پروتکل، پیام را از روی سرور POP3 حذف میکند تا دیگر اطلاعاتی از پیام بر روی سرورها در دسترس نباشد و این کار در حقیقت برای افزایش امنیت انجام میشود.
در مورد پروتکل POP چیزی که باید بدانید این است که نسخههای بروزتری از این پروتکل ساخته و ارائه داده شده است ولی با این وجود پروتکل POP3 بسیار معروف است و همچنان بسیاری از کاربران در شبکههای مختلف از آن استفاده میکنند.
پروتکلهای دیگری هم برای انتقال پستهای الکترونیکی به سمت مقصد وجود دارند. برای مثال یکی از این پروتکلها IMAP هست که ساختار و مکانیزم پیچیدهتری نسبت به POP3 دارد. ولی چیزی که باعث شده پروتکل POP3 معروف شود سادگی کار با آن میباشد.
عملکرد POP3 به این صورت میباشد که ارسال کنندگان ایمیل، پیامهای خود را به سرورهای POP3 ارسال میکنند و سرور بصورت موقت ایمیلها را درون خود ذخیرهسازی میکند و منتظر اتصال کاربران میماند.
پس از این که کامپیوترها به این سرور POP3 متصل میشوند، سرور پیامها را برای دریافت کنندگان ارسال کرده و پس از مطمئن شدن از اینکه ایمیل بدرستی به مقصد رسیده، آنها را از روی سرور حذف مینماید.
با وجود محبوبیت POP3 امروزه در شبکههای کامپیوتری سعی میکنند دیگر از این پروتکل استفاده نکنند چون دارای معایب بسیار زیادی است. در واقع چون این پروتکل قدیمی است مشکلات امنیتی بسیاری برای آن وجود دارد و راه اندازی آن در یک شبکه میتواند اطلاعات کاربران را به خطر بیندازد.
معمولا سعی میشود بجای پروتکل POP3 از پروتکل IMAP برای ایمیل در شبکهها استفاده شود چون این پروتکل امنیت بیشتری نسبت به POP3 دارد. همچینین وجود یکسری امکانات و مزایا در پروتکل IMAC باعث میشود امنیت ایمیلها افزایش پیدا کند.
SMTP
SMTP یا Simple Mail Transfer Protocol یک پروتکل قدیمی برای انتقال ایمیل هست. این پروتکل، یک پروتکل قدیمی برای ارسال ایمیل از یک حساب به حساب دیگر میباشد. البته یکسری پروتکلهای دیگر نیز مانند POP3 و IMAP نیز برای ایمیل استفاده میشوند.
زمانی که شما یکی ایمیل ارسال میکنید در واقع به یک سرور ایمیل متصل میشوید. این سرور SMTP وظیفه ارسال ایمیل شما را به مقصد مورد نظر دارد. حالا در صورتی که مقصد شما در همان شبکه باشد این سرور SMTP ایمیل ارسالی شما را مستقیماً به سرورهای POP3 و IMAC همان شبکه انتقال میدهد تا به مقصد برسند.
در صورتی که مقصد ایمیل شما در همان شبکه نباشد سرور SMTP باید ایمیل ارسالی شما را بدست یک SMTP دیگر در یک شبکه دیگر برساند تا آن سرور وظیفه ارسال ایمیل شما را به مقصد انجام دهد.
برای مثال زمانی که شما یک ایمیل به info@mixseda. com ارسال میکنید، سرور SMTP شما ایمیل شما را به سرور SMTP دامین mixseda. com میرساند. در این میان سرور SMTP ارسال کننده ایمیل برای شناسایی سرور SMTP گیرنده ایمیل باید از DNS Server کمک بگیرد.
پس از رسیدن ایمیل به سرور SMTP مقصد، این سرور ایمیل دریافت شده را به سرورهای IMAP و POP3 تحویل میدهد تا این پروتکلها ایمیل را به مقصد مورد نظر خود برسانند.
IRC
پروتکل IRC یا Internet Relay Chat یک پروتکل قدیمی برای انتقال پیام در بستر شبکه میباشد. در گذشته شبکههای اجتماعی به اندازه فعلی قدرتمند و قابل دسترس نبودند. برای همین از پروتکل IRC برای Chat با دیگران استفاده میشد.
پروتکل IRC در سال ۱۹۸۸ توسط Jakko Oikarninen ساخته شد. شما با استفاده از این پروتکل قادر خواهید بود که به یک IRC Server متصل شوید. در واقع IRC Clientها با استفاده از nickname، username و IP Address در IRC Server احراز هویت میشوند.
برای استفاده از این پروتکل شما به یک نرمافزار IRC Client نیاز داشتید. برای مثال در گذشته نرمافزار mIRC یکی از معروفترین نرمافزارها برای اتصال به یک IRC Server بود.
در واقع آن چیزی که شما امروزه در بسیاری از پیام رسانها مشاهده میکنید، اولین بار توسط پروتکل IRC به کاربران ارائه داده شده است.
حتی در برخی از سرورهای IRC امکان تماس صوتی، تماس تصویری، انتقال فایل، کنفرانس و… نیز برای کاربران فعال هست شما میتوانید با استفاده از این پروتکل با کاربران دیگر ارتباط برقرار کنید.
اولین پیام رسان رسانها از ترکیب پروتکل IRC با یکسری پروتکل دیگر برای انتقال فایل یا قابلیتهای دیگر استفاده میکردند. خیلی راحت بخوام بگویم ساخت این پروتکل آن هم در سال ۱۹۸۸ واقعا یک دستاورد بزرگ محسوب میشد.
SSH
پروتکل SSH یا Secure Shell یک ساختار و مکانیزم برای ارتباط امن است که در سال ۱۹۹۵ توسط Tatu Ylönen ساخته شد. Tatu Ylönen پروتکل SSH را برای بهبود ارتباط در پروتکلهای Telnet و rLogin ساخت.
ولی پروتکل آن به قدری خوب طراحی شده بود که بعدهها از این پروتکل برای امن ساختن بقیه پروتکلها نیز استفاده شد. بصورت خیلی ساده این پروتکل با استفاده از الگوریتم RSA اطلاعات را در کامپیوتر مبدا رمزنگاری میکند.
وجود اطلاعات رمزنگاری شده در بستر شبکه باعث میشد چنانچه این اطلاعات شنود شود یا تحت حملات MITM قرارگیرد، امکان استفاده از آن وجود نداشته باشد.
MITM مخفف Man In The Middle به معنای مرد میانی؛ یکی از روشهای حملات در شبکههای کامپیوتری میباشد که امروزه بسیار مورد استفاده قرار میگیرد.
در صورتی که شما از اطلاعات رمزنگاری شده بین کامپیوتر خود و سرور مورد نظر استفاده نکنید و یک هکر اطلاعات را شنود کند به راحتی میتواند متوجه این اطلاعات شود.
البته در صورتی که این اطلاعات رمزنگاری شده باشد نیز امکان شکستن رمز با استفاده از یافتن رمز خصوصی کامپیوترها وجود دارد ولی به هر حال امنیت با استفاده از پروتکل SSH بیشتر است.
البته که این پروتکل نیز همانند بسیاری از پروتکلهای دیگر نقاط ضعفهای بسیاری دارد و معمولا مدیران شبکه سعی میکنند با استفاده از اعمال یکسری محدودیتها در فایروالها اتصالات SSH امنتری داشته باشند.
برای مثال در برخی از شبکهها شماره پورت (Port number) پروتکل SSH را تغییر میدهند. یا بعضا در مواردی بر روی فایروالهای شبکه تعیین میشود که فقط IP Addressهای مشخصی اجازه استفاده از پورت SSH را دارند تا اینگونه امنیت این پروتکل افزایش یابد.
اگه دوست داشتید میتوانید در مورد نحوه ایجاد پروتکل SSH و اینکه چگونه پورت ۲۲ به این پروتکل اختصاص داده شد در اینترنت مطالعات بیشتری داشته باشید.
DNS
در شبکههای کامپیوتری شما به یک DNS Server یا Domain Name System Server نیازمند هستید تا کامپیوترها بتوانند سوالات خود را از این سرور بپرسند.
شما در دنیای واقعی ممکن است خیلی از اطلاعات را نداشته باشید. برای مثال شما تمامی شماره تلفنها را حفظ نیستید و برای اینکه بخواهید یک شماره تلفن مربوط به یک مکان عمومی را بدانید ممکن است با ۱۱۸ تماس حاصل کنید.
در شبکههای کامپیوتری نیز همین اتفاق رخ میدهد و کامپیوتر شما برای دانستن یک اطلاعات در شبکه، نیازمند آن است که به DNS Server خود درخواست ارسال کند.
ممکن است DNS شما نیز پاسخ آن سوال را نداند و نیاز باشد از DNS Server دیگری سوال را بپرسد و یا شما را به سراغ یک DNS دیگر بفرستد که جواب این سوال را میداند.
DNS Server در شبکههای کامپیوتری سه وظیفه مهم بر عهده دارد که من در مقالهای در آینده تک تک این وظایف را توضیح خواهم داد:
- تبدیل FQDN به IP
- تبدیل IP به FQDN
- Service Locator
در مورد DNS خیلی میتوان توضیحات زیادی داد. در واقع DNS یکی از موضوعاتی هست که شما روزها میتوانید بر روی آن بحث نمایید. همچنین اگر وارد دنیای امنیت شده باشید، و با حملاتی که با استفاده از DNS صورت میگیرد آشنایی داشته باشید میدانید DNS یکی از مهمترین بحثهای جذاب دنیای شبکه است.
یک DNS Server بصورت پیشفرض از پورت ۵۳ برای ارائه سرویس به کلاینتها استفاده میکند.
Network Admin & Engineering
ممکن است در برخی از مصاحبههای کاری از شما سوال شود که تفاوت Network Admin و Network Engineering چیست. شما میتوانید لایههای OSI را از نظر نوع اطلاعاتی که در آن وجود دارد و وظایفشان دستهبندی نمایید.
این هم یک نوع دستهبندی لایههای OSI میباشد. Network Admin شامل سه لایه بالایی مدل OSI میباشد. در واقع Network Admin شامل Application Layer، Presentation Layer و Session Layer میباشد که معمولا Adminها وظیفه مدیریت آن را بر عهده دارند.
در دورههای CCNA و CCNP که از دورههای شرکت سیسکو میباشد، تمرکز بر روی چهار لایه اول مدل OSI میباشد. این لایه ها، لایههای ارتباطی بین Workstationها میباشند و به افرادی که بر روی این لایهها کار میکنند Network Engineering گفته میشود.
در واقع در Network Engineering بستری برای ارتباط در شبکههای کامپیوتری ایجاد میشود ولی سه لایه بالایی یعنی لایههای Network Admin هدف ارتباط مشخص میشود.