اگرچه لایه Physical از تنوع استاندارد زیادی برخوردار است، اما قسمتهای دیگر استانداردهای اترنت شبیه به هم و بدون درنظر گرفتن نوع لینکهای فیزیکی اترنت، کار میکنند. دراین درس میخواهیم با این پروتکلها و وظایف آنها با صرف نظر از نوع لینکهای اترنت آشنا شویم. در این درس به صورت ویژه جزئیات پروتکلهای لایه Data-link اترنت شرح داده میشود، به علاوه این که چگونه نودهای اترنت، سوئیچها و هابها کار انتقال فریمها را انجام میدهند.
یکی از بزرگترین نقاط قوت پروتکلهای خانواده اترنت این است که این پروتکلها از پروتکل یکسانی در لایه Data-Link استفاده میکنند.
پروتکلهای اترنت لایه Data-Link، موجب ایجاد فریم اترنت میشوند. این فریم شامل یک هدر در ابتدای فریم، سپس اطلاعات بستهبندی شده توسط لایه بالاتر، و در آخر هم فریم با یک تریلر تمام میشود. در واقع اترنت دارای چند هدر مختلف میباشد، شکل ۱-۱۲ ساختار فریمی که امروزه استفاده میشود را نشان میدهد.
اگرچه تمام فیلدهای نشان داده شده در شکل بالا مهم هستند، اما در این دوره فقط با تعدادی از مهمترین آنها و وظایف آنها آشنا میشویم. جدول ۱-۱۲ فیلدهای هدر و تریلر یک فریم و توضیحی مختصر از هر کدام را شامل میشود، در ادامه این درس نیز با جزئیات بیشتری با برخی از این فیلدها آشنا میشویم.
نام فیلد | اندازه (بایت) | توضیحات |
---|---|---|
Preamble | 7 | برای هماهنگ سازی استفاده میشود. |
Start Frame Delimiter (SFD) | 1 | نشان میدهد که آدرس MAC مقصد از بایت بعدی شروع میشود. |
Destination MAC Address | 6 | آدرس MAC مقصد را نشان میدهد. |
Source MAC Address | 6 | آدرس MAC مبدا را نشان میدهد. |
Type | 2 | نوع پروتکلی که در لایه بالاتر استفاده شده را مشخص میکند، امروزه بیشتر از IPv4 و IPv6 به کار گرفته میشود. |
Data and Pad | 46 – 1500 | اطلاعات لایه بالاتر را نگه میدارد، در صورتی که انداز این قسمت از 46 بایت کمتر باشد، مبدا آن را پر میکند. |
Frame Check Sequence (FCS) | 4 | کارت شبکه مقصد با استفاده از اطلاعات این قسمت و فرمولهای خاصی، متوجه میشود که در هنگام ارسال خطایی رخ داده یا نه. |
نکته: استاندارد IEEE 802.3 اندازه اطلاعات یک فریم (اطلاعات بستهبندی شده توسط لایه بالاتر) را در این استاندارد محدود کرده است. اندازه این اطلاعات میتواند از ۴۶ تا ۱۵۰۰ بایت متغیر باشد. واژه Maximum Transmission Unit (MTU) به این محدودیت اشاره میکند.
فیلدهای آدرس مبدا و مقصد اترنت نقش بسیار بزرگی را در شبکههای LAN مبتنی بر اترنت ایفا میکنند. ایده اصلی هر کدام از این آدرسها نسبتا ساده بود، فرستنده آدرس مربوط به خودش را در فیلد آدرس مبدا، و آدرس مربوط به گیرنده را در فیلد آدرس مقصد قرار میدهد. سپس فرستنده فریم را بر روی شبکه ارسال میکند، با این انتظار که شبکه اترنت این بسته را به مقصد مورد نظر تحویل میدهد.
آدرسهای اترنت، که به آنها Media Access Control یا به اختصار آدرس MAC هم گفته میشود، اندازهای به طول ۶ بایت یا ۴۸ بیت دارند. برای راحتی، کامپیوترها آدرسهای MAC را به صورت کاراکترهای مبنای ۱۶ نشان میدهند. تجهیزات سیسکویی برای خوانایی بیشتر مابین این کاراکترها از نقطه استفاده میکند. برای مثال در دستگاههای سیسکویی یک آدرس MAC به صورت ۰۰۰۰.۰c12.3456 نشان میدهند.
اکثر آدرسهای MAC نمایانگر یک کارت شبکه یا پورت اترنت منحصر به فرد میباشند. از این رو به این آدرسها، آدرس Unicast اترنت هم گفته میشود. کلمه Unicast در واقع این مفهوم را میرساند که آدرس مورد نظر به یک کارت شبکه در شبکه اشاره میکند. در واقع انواع دیگری از آدرسهای اترنت هم وجود دارند، از جمله آدرسهای Broadcast و Multicast، که در ادامه همین درس با آنها آشنا میشویم.
این ایده که اطلاعات را به آدرس Unicast MAC مقصد ارسال کنیم به خوبی کار میکند، اما فقط در صورتی درست کار میکند که این آدرسها منحصر به فرد باشد. اگر دو کارت شبکه بخواهند از یک آدرس واحد برای خود استفاده کنند، باعث گمراهی میشود. درست مثل این میماند که در یک شهر، دو خانه از یک آدرس پستی یکسان استفاده کنند در این صورت نمیتوان تشخیص داد که بسته مورد نظر، متعلق به کدام خانه میباشد. اگر دو کامپیوتر سعی کنند در یک شبکه LAN از یک آدرس یکسان استفاده کنند، فریم باید به کدام یک از آنها تحویل داده شود؟
اترنت این مشکل را با یک پروسه مدیریتی برطرف کرده است، به این صورت که سازندگان کارت شبکه، برای هر کارت شبکه از یک آدرس محنصر به فرد جهانی استفاده میکنند. قبل از این که یک سازنده، بتواند کارت شبکه تولید کند، باید از موسسه IEEE برای شرکت خود یک کد ۳ بایتی منحصر به فرد جهانی را درخواست کند، به این کد Organizationally Unique Identifier (OUI) گفته میشود. سازنده توافق میکند که آدرس MAC تمام کارت شبکههایی که تولید میکند با این ۳ بایت (OUI) شروع شود. همچنین برای ۳ بایت باقیمانده هم به صورت منحصر به فرد به هر کارت شبکه یک آدرس تخصیص میدهد. در نتیجه آدرس MAC تمام کارت شبکههای جهان منحصر به فرد میشود.
شکل ۲-۱۲ ساختار آدرسهای Unicast MAC را به همراه OUI مربوطه نشان میدهد.
آدرسهای اترنت نامهای زیادی دارند، از جمله آدرس LAN، آدرس اترنت، آدرس سختافزاری، Burned-in address، آدرس فیزیکی، و آدرس MAC. برای مثال، Burned-in address به این موضوع اشاره دارد که آدرس MAC بر روی چیپ ROM به صورت کد، حک شده است.
علاوه بر آدرسهای Unicast، اترنت از آدرسهای گروهی هم استفاده میکند. این آدرسها، آدرسهایی هستند که به بیش از یک کارت شبکه اشاره میکنند. فریمی که به یک آدرس گروهی ارسال میشود، ممکن است که به مجموعهای از دستگاههای موجود در LAN یا همه آنها تحویل داده شود. در واقع، موسسه IEEE دو دسته کلی برای آدرسهای گروهی تعیین کرده است که به شرح زیر میباشد:
جدول ۲-۱۲ خلاصهای از اکثر جزئیات آدرسهای MAC را شرح میدهد.
قابلیت یا واژه مربوط به آدرسهای اترنت | توضیحات |
---|---|
MAC | Media Access Control با استاندارد 802.3 (اترنت). زیرلایه MAC پروتکل اترنت را تعریف میکند. |
آدرس اترنت، آدرس کارت شبکه، آدرس LAN | نامهای دیگری که اغلب به جای آدرس MAC استفاده میشود. این واژهها شامل همان آدرس 6 بایتی مربوط به کارت شبکه میباشند. |
آدرس Burned-in | آدرس 6 بایتی که سازنده به کارت شبکه اختصاص میدهد. |
آدرسهای Unicast | واژهای برای آدرسهای MAC که به یک کارت شبکه اشاره میکند. |
آدرسهای Broadcast | یک آدرس که به همه دستگاههایی که در شبکه فعلی هستند، اشاره میکند. |
آدرسهای Multicast | آدرسهایی که به برخی از دستگاههایی که در شبکه فعلی هستند، اشاره میکند. |
از آنجایی که فیلدهای آدرس در هدر اترنت نقش مهم و مشخصی را در شبکه اترنت ایفا میکنند، فیلد Type از اهمیت کمتری نسبت به فیلدهای آدرس برخوردار است. فیلد Type اترنت یا EtherType در هدر اترنت لایه Data-Link مینشیند، اما هدف آن این است که مستقیما به روند کاری روترها و کلاینتها کمک کند. اساسا، فیلد Type، نوع بسته لایه Network (لایه ۳) را تعیین میکند که درون فریم اترنت قرار میگیرد.
در واقع، درون فریم اترنت، یک بسته یا به اصطلاح یک پکت (Packet) قرار میگیرد که توسط پروتکل لایه Network در همان دستگاه ایجاد میشود. در سالهای گذشته از پروتکلهایی نظیر Systems Network Architecture (SNA) شرکت IBM، NetWare شرکت Novell، DECnet شرکت Digital Equipment Corporation، و AppleTalk شرکت Apple هم به عنوان پروتکل لایه ۳ استفاده میشد. امروزه، عمومیترین پروتکلهایی که در لایه ۳ استفاده میشوند، پروتکلهای IPv4 و IPv6 میباشند.
کامپیوتری که شروع کننده ارسال اطلاعات میباشد، عددی را (در مبنای شانزده) درون فیلد Type برای شناسایی اطلاعات بستهبندی شده درون فریم، قرار میدهد. حالا سوال اینجاست که برای پروتکل IPv4 چه عددی درون این فیلد قرار میگیرد؟ برای پروتکل IPv6 چطور؟ شاید حدس زده باشید که موسسه IEEE مسئول مشخص کردن کد EtherType مربوط به هر پروتکل است. پس از این رو هر پروتکل لایه Network که نیاز به یک EtherType منحصر به فرد دارد، موسسه IEEE اقدام به تخصیص آن میکند. کلاینت فرستنده نیز فقط نیاز دارد تا لیستی از این EtherTypeها و پروتکل متناظر آن داشته باشد. (برای مشاهده لیست EtherTypeها، میتوانید به سایت www.ieee.org مراجعه کرده و کلمه EtherType را جستجو کنید)
همچنین یک کامپیوتر میتواند یک فریم را با EtherType پروتکل IPv4 ارسال کند و برای فریم بعدی از IPv6 استفاده کند. هر کدام از این فریمها از یک مقدار متفاوتی برای فیلد EtherType استفاده میکنند، و مقدار آنها برابر مقداری است که موسسه IEEE برای هر پروتکل اعلام کرده است، همانطور که در شکل ۳-۱۲ نشان داده شده است.
اترنت همچنین راهی را در نظر گرفته تا تشخیص دهد بیتهای فریم حین عبور از کابل، تغییر نکردهاند. (معمولا، بیتها میتوانند توسط تداخلهای الکتریکی یا کارت شبکه نامناسب تغییر کنند.) اترنت هم مانند سایر پروتکلهای لایه Data-Link، با استفاده از تریلر این لایه روند تشخیص خطا را انجام دهد.
فیلد Frame Check Sequence یا به اختصار FCS در تریلر پروتکل اترنت (که تنها فیلد موجود در تریلر میباشد) به نود گیرنده این امکان را میدهد تا اطلاعات دریافتی را با فرستنده بررسی کند، و تشخیص دهد که آیا خطا رخ داده یا نه. فرستنده قبل از ارسال فریم، آن را درون یک فرمول ریاضی پیچیده قرار میدهد و نتیجه آن را درون فیلد FCS قرار داده و سپس فریم را به سمت مقصد ارسال میکند. در مرحله بعد گیرنده هم، فیلد FCS را از فریم جدا کرده و فریم را درون همان فرمول ریاضی قرار میدهد، و نتیجه را با FCS ارسالی از سمت فرستنده مقایسه میکند. اگر این دو مقدار با یکدیگر برابر بود به این معناست که بسته بدون خطا به مقصد تحویل داده شده است. در غیر این صورت، گیرنده بسته را دور میاندازد
توجه داشته باشید که تشخیص خطا به معنای بازیابی آن نیست. اترنت میتواند فریمی را که دچار مشکل شده را شناسایی کند اما این فریم باید دور انداخته شود، و تلاشی برای بازیابی این فریم انجام نمیدهد.
شبکههای LAN اترنت، بسته به نوع دستگاههایی که درون شبکه استفاده میشود، ممکن است رفتارهای متفاوتی داشته باشد. اگر در شبکه از دستگاههای مدرنتری مانند سوئیچ استفاده شود، رفتار شبکه، نسبت به زمانی که در آن از دستگاههای قدیمیتری به نام هاب استفاده شود، تغییر میکند. اساسا، به کارگیری از سوئیچها، این امکان را ایجاد میکند تا بتوان از مفهومی به نام full-duplex استفاده کرد، که از سرعت بسیار بالاتری نسبت به half-duplex برخوردار است.
LANهای اترنت مدرن از استانداردهای فیزیکی اترنت متنوعی استفاده میکنند، این موضوع، قابلیت استفاده از لینکهای مختلف با سرعتهای متفاوت را ایجاد میکند. اما هر لینک اجازه میدهد تا هر نود به نود مقابل خود فریم را ارسال کند. این دو نود باید با یکدیگر کار کنند تا اطلاعات را به مقصد مورد نظر برسانند.
این روند نسبتا ساده است، و این سادگی به هر دستگاه اجازه میدهد تا در طول یک ثانیه تعداد زیادی فریم را ارسال کند. شکل ۴-۱۲ مثالی را نشان میدهد که در آن PC1 یک فریم اترنت را به سمت PC2 ارسال میکند.
شکل فوق از مراحل زیر تشکیل شده است:
شبکه اترنتی که در شکل ۴-۱۲ نشان داده شده است، از لینکهای full-duplex در تمام شبکه تشکیل شده است.
Half Duplex: در این حالت، دستگاه برای ارسال اطلاعات باید منتظر بایستد فریمی که در حال دریافت است تکمیل شود، به زبان دیگر در حالت half-duplex نمیتوان همزمان هم دریافت و هم ارسال را انجام داد.
Full Duplex: در این حالت، دستگاه برای ارسال اطلاعات، نیازی به صبر کردن ندارد، و میتواند عمل ارسال و دریافت اطلاعات را به صورت همزمان انجام دهد.
بنابراین، تمام کامپیوترها و سوئیچهای شبکه و تمام دستگاههای شبکه، البته غیر از هابها، میتوانند از حالت full-duplex استفاده کنند و ارسال و دریافت اطلاعات را به صورت همزمان انجام دهند. برای مثال در شکل ۴-۱۲، کامپیوترهای PC1 و PC2 میتوانند فریمها را به صورت همزمان به یکدیگر ارسال کنند، بدون اینکه محدودیتهای حالت half-duplex را داشته باشند.
برای درک اینکه حالت half-duplex در چه زمانهایی به کار میرود، باید کمی در مورد دستگاههایی به نام هاب (Hub) بدانید. زمانی که موسسه IEEE برای اولین بار استاندارد ۱۰BASE-T را در سال ۱۹۹۰ ارائه کرد، سوئیچهای اترنت هنوز به وجود نیامده بودند. در عوض، در شبکه از دستگاههایی شبیه به سوئیچ، به نام هاب استفاده میشد. یک هاب، از تعدادی پورت RJ-45 برای اتصال کامپیوترها به یکدیگر، تشکیل شده است. از این رو، هابها از روشهای متفاوتی نسبت به سوئیچها برای ارسال اطلاعات استفاده میکنند.
هابها، برای اطلاعات به جای استفاده از لایه Data-Link، از لایه Physical استفاده میکنند، و از این رو به عنوان دستگاه لایه یک شناخته میشوند. وقتی یک سیگنال الکتریکی به یک هاب میرسد، هاب این سیگنال را بر روی تمامی پورتهایش تکرار میکند (البته به جز پورتی که این سیگنال را از آن دریافت کرده است). با انجام این کار، اطلاعات به همه نودهای متصل به هاب میرسد، بنابراین امیدواریم اطلاعات به مقصد مورد نظر هم برسد. هابها هیچ تصوری از فریم، آدرسهای MAC، و تصمیمگیری براساس این آدرسها و … ندارند. نکته منفی استفاده از هابها این است که، اگر دو یا چند دستگاه به صورت همزمان شروع به ارسال اطلاعات کنند، سیگنالها به یکدیگر برخورد کرده و از بین میروند. هابها تمام سیگنالهای دریافتی را روی پورتهای دیگر تکرار میکنند، حتی اگر چند سیگنال به صورت همزمان به هاب برسند. برای مثال، در شکل ۵-۱۲، کامپیوتر Archie و Bob هر کدام به صورت همزمان یک سیگنال الکتریکی را ارسال میکنند (بستههای ۱A و ۱B) و هاب هم هر دو سیگنال را به سمت Larry ارسال میکنند که منجر به برخورد این دو سیگنال میشود.
توجه داشته باشید که هابها هر فریم را بر روی تمام پورتهایشان ارسال میکنند (البته به جز پورتی که این فریم را ارسال کرده)، بنابراین فریم Archie هم به Larry و هم به Bob ارسال و در سمت دیگر هم فریم Bob هم به Larry و هم به Archie ارسال میشود.
اگر در شکل ۵-۱۲ به جای استفاده هاب، از یک سوئیچ اترنت استفاده میشد، در قسمت چپ تصویر، سیگنالها به یکدیگر برخورد نمیکردند. سوئیچها به عنوان دستگاههای لایه ۲ عمل میکنند، این به این معناست که به هدر و تریلر لایه Data-Link نگاه میکنند. یک سوئیچ به آدرس MAC نگاه میکند و حتی اگر قرار است هر دو فریم به Larry ارسال شود، سوئیچ یکی از فریمها را ارسال کرده و دیگری را در صف انتظار قرار میدهد تا ارسال فریم اول به اتمام برسد.
زمانی که از حالت half-duplex استفاده میشود، باید از برخورد سیگنالها جلوگیری شود. مشکل زمانی به وجود میآید که ئ. یا چند دستگاه به طور همزمان شروع به ارسال اطلاعات میکنند. در حالت half-duplex به نودها اعلام میشود که اگر کسی در حال ارسال اطلاعات است، تا پایان این پروسه منتظر بمانند.
برای مثال، در شکل ۵-۱۲، فرض کنید کامپیوتر Archie شروع به ارسال فریم خود کند و Bob اولین بیت فریم Archie رادریافت کند، قبل از این که خودش شروع به ارسال فریم خود کند. در این حالت، Bob متوجه میشود که کامپیوتر دیگری در حال ارسال فریم بر روی شبکه میباشد، و از حالت half-duplex استفاده میکند که Bob را مجبور میکند تا برای ارسال فریم خود، صبر کند تا بستر شبکه که توسط دیگران اشغال شده، آزاد شود.
نودهایی که از half-duplex استفاده میکنند، در واقع به کمک الگوریتم Carrier Sense Multiple Access with Collision Detection یا به اختصار CSMA/CD برای تشخیص آزاد بودن یا نبودن بستر شبکه استفاده میکنند. این الگوریتم سناریوهای مختلفی را بررسی میکند، همچنین سناریوهایی که در زمانهای نادرست رخ میدهند. برای مثال، دو نود میتوانند در یک زمان، بستر شبکه را چک کنند تا اگر آزاد بود فریم خود را ارسال کنند، هر دو متوجه میشوند که بستر آزاد است و هر دو همزمان شروع به ارسال فریم میکنند، که باعث رخ دادن تصادم یا برخود سیگنالها میشود. الگوریتم CSMA/CD برای این حالت هم راه حلهایی را در نظر گرفته است.
۳-۱- تمام نودها شروع به ارسال سیگنال JAM میکنند تا به سایرین اطلاع دهند که برخورد رخ داده است
۳-۲- هر نود به طور مستقل یک مدت زمان تصادفی را انتخاب کرده و صبر میکند، و مجدد شروع به ارسال فریمهای خود میکند، تا از زمانبندی نادرست جلوگیری کند.
۳-۳- مجدد از قدم اول تمام مراحل بررسی میشود.
اگرچه در شبکههای امروزی به ندرت از هاب استفاده میشود، از این رو شما هم نیازی به استفاده از half-duplex ندارید، اما هنوز هم در شبکههای تجاری بزرگ هابها دیده میشوند، پس شما نیاز دارید تا با مفاهیم و مشکلات half-duplex آشنا باشید. هر کارت شبکه و پورت سوئیچ دارای تنظیمات مربوط به duplex میباشد. برای تمام لینکهای مابین کامپیوترها و سوئیچ، یا مابین دو سوئیچ، از لینکهای full-duplex استفاده میشود. با این حال، برای لینکهایی که یک سمت آن به یک هاب، و سمت دیگر آن به یک کامپیوتر یا سوئیچ وصل شده است، این لینکها به صورت half-duplex ایجاد میشوند. توجه داشته باشید که خود هاب از مفهوم half-duplex استفاده نمیکند، بلکه فقط سیگنال دریافتی را بر روی تمام پورتهای خود تکرار میکند.
شکل ۶-۱۲ مثالی از یک شبکه که در آن از لینکهای full-duplex و half-duplex استفاده شده، را نشان میدهد. در سوئیچ SW2 به دلیل اینکه پورت F0/2 به هاب وصل شده است، برای این پورت، تنظیمات duplex به صورت half-duplex تنظیم میشود، همین کار را کامپیوتر C نیز انجام میدهد.