Ethernet
پروتکلهای لایه دو OSI
در لایه اول TCP/IP یا لایه دوم OSI فرایند فریم بندی و تشخیص خطا اتفاق میافتد. در این لایه تعدادی از پروتکلها فعالیت میکنند که با توجه به نوع ارتباطات میتوان آنها را به دو دسته تقسیم بندی کرد. اگر ارتباطات از نوع LAN باشد، پروتکلهایی این لایه از این قرارند: Ethernet و Token Ring و FDDI. پروتکل لایه دو در ارتباطات امروزی پروتکل Ethernet و مشتقات آن است. داده به کدام دستگاه ارسال شود؟ و آیا دستگاه مقصد، داده را برای خود تحویل بگیرد یا آن را به دستگاه دیگری بفرستد؟ اینها سوالاتی هستند که باید پروتکل Ethernet به آنها پاسخ دهد. اگر نوع ارتباطات WAN باشد، باز برحسب اینکه ارتباطات از نوع point-to-point هستند یا multi-point ممکن است پروتکلهای لایه دوم فرق داشته باشند. برای ارتباطات point-to-point پروتکلهای لایه دویی از این قرارند:PPP و HDLC برای ارتباطات multi-point پروتکلهای لایه دویی عبارتند از: Frame-Relay و X.25 و ATM
Ethernet Digital, Intel, Xerox(DIX)
پروتکل Ethernet اولیه توسط سه کمپانی Digital و Intel و Xerox ایجاد شد که به Ethernet DIX (بخوانید اترنت دیکسی) یا Ethernet 802.2 موسوم گشت اما به دلیل آن که این نسخه اترنت به صورت اختصاصی برای سه کمپانی مذکور استفاده میشد بنابراین IEEE نسخه خود را تحت عنوان Ethernet 802.3 توسعه داد.
ساختار Ethernet 802.2
در این پروتکل فرایند Framing و Error Detection و نیز Addressing انجام میشود. سیستم از کجا بفهمد داده جاری کجا شروع شده و کجا پایان مییابد؟ پروتکل Ethernet هدری با نام preamble با اندازه 8 بایت را به دادهای که از لایه سوم آمده اضافه میکند. بدین ترتیب شروع و پایان بسته اطلاعاتی را که درلایه دوم، فریم مینامیم تعیین میکند.مرحله بعد اضافه کردن 12 بایت برای تعیین آدرس فیزیکی مبدأ و مقصد است. به شکل زیر توجه کنید
Preamble | Destination Mac | Source Mac | Type | Data | FCS |
8 byte | 6 byte | 6 byte | 2 byte | 46-1500 | 4 byte |
خب با preamble آشنا شدیم. با اضافه شدن این 8 بایت درواقع فرایند فریم بندی انجام میشود و آغاز و پایان فریمها تعیین میشود. با Destination Mac و Souce Mac آدرس فیزیکی مبدا و مقصد تعیین میشود. ممکن است پرسیده شود که آدرس فیزیکی چیست؟ آدرس فیزیکی (Physical Address یا Mac Address) آدرسی است که به فریم ارسالی اضافه میشود تا دستگاهی که باید فریم را تحویل بگیرد، تعیین گردد. اما ممکن است که بسته اطلاعاتی برای دستگاه جاری نباشد و این دستگاه تنها ملزم به دریافت و سپس ارسال بسته به سیستم دیگری باشد. اینجاست که آدرس منطقی وارد میشود. آدرس منطقی(Logical Address یا IP Address) توسط لایه سوم مدل OSI به بسته اضافه میشود. به شکل زیر توجه کنید:
System 1 | System 2 | |
---|---|---|
IP 1 Mac 1 |
-----------------------------> | IP 2 Mac 2 |
سیستم با IP 1 و MAC 1 بسته را برای سیستم با IP 2 و MAC 2 میفرستد. سیستم مقصد بسته را دریافت میکند و با بررسی آدرس فیزیکی بسته میفهمد که باید بسته را تحویل بگیرد. سپس باید مشخص شود که بسته برای سیستم جاری است یا باید به سیستمی دیگر ارسال شود. این کار از طریق آدرس IP مشخص میشود. همانطور که میبینید سیستم مقصدبعد از بررسی IP میفهمد که بسته برای خود او فرستاده شده است و نیازی به ارسال بسته به سیستم دیگر نیست. اما اگر اطلاعات همراه بسته به صورت IP 3 و Mac 2 باشد، بسته به سیستم دومی رفته و در آنجا آدرس فیزیکی بررسی میشود و سیستم میفهمد که باید بسته را تحویل بگیرد اما با مشاهده آدرس منطقی میفهمد که بسته برای او نیست و تنها باید بسته را به سیستمی دیگر با IP 3 تحویل دهد.
برای انجام عمل تشخیص خطا یا Error Detection، پروتکل Ethernet یک دنباله را به فریم میچسباند. این دنباله را FCS میگویند.(Frame Check Sequency) اندازه این دنباله 4 بایت است و از طریق الگوریتمی ریاضی به نام CRC مخفف (Cyclic Redundancy Check) محاسبه میشود. پی از دریافت بسته اطلاعاتی در مقصد، الگوریتم CRC بر روی دیتای بسته اجرا شده و درصورتی که با FCS همراه بسته مساوی باشد، بسته بدون خطا است در غیر اینصورت بسته دورانداخته میشود. بخش دیگری که به فریم اضافه میشود، Type است. این فیلد به سیستم مقصد میفهماند که پس از بررسی آدرس فیزیکی، در صورتی که بسته اطلاعاتی برای همان سیستم باشد، این بسته باید به کدام پروتکل تحویل داده شود که در اینجا باید پروتکل IP با کد 0x800 تعیین شود. دادهای که از لایههای بالاتر به لایه دوم میرسد حداقل 46 و حداکثر 1500 بایت است. پس هر بسته اطلاعاتی که فرستاده میشود (بدون احتساب preamble) حداقل 18+46=64 بایت و حداکثر 18+1500=1518 بایت است و اگر بسته از مقدار 64 بایت کوچکتر باشد اصطلاحاً Runt Error پیشآمده است و اگر بزرگتر از 1518 بایت باشد اصطلاحاً Giant Error پیش آمده است.
پروتکل Ethernet 802.3
این پروتکل توسط IEEE توسعه داده شده است. این پروتکل وظایف لایه دو را به دو زیر لایه LLC (Logical Link Control) و Mac (Media Access Control) تقسیم کرده است. پکت پس از ورود به لایه دو در اختیار LLC قرار میگیرد. این زیر لایه هدر نوع پروتکل مبدا را به بسته اضافه میکند و آن را به همراه LLC Header به زیر لایه Mac تحویل میدهد. لایه Mac هم هدر خاص خود را که بسیار به هدر Ethernet 802.2 شبیه است به بسته اضافه میکند. به شکل زیر توجه کنید:
Preamble | SOF | Destination Mac | Source Mac | Length | Data | FCS |
7 byte | 1 byte | 6 byte | 6 byte | 2 byte | 46-1500 Data+802.2 Header | 4 byte |
در این زیر لایه MAC به جای 8 بایت Preamble ، از 7 بایت Preamble و یک بایت SOF(Start Of Frame) استفاده میشود که تقریبا با ورژن قبلی یکسان است. در این زیر لایه به جای type مقدار length افزوده شده است که اندازه فریم را مشخص میکند(length < 1518) و در بخش Data دادهای که از لایههای بالاتر آمده به همراه هدر زیر لایه LLC قرار میگیرد. در سیستم مقصد مقدار length بررسی میشود اگر مقدار کوچکتر از 1518 باشد، سیستم درمیابد که با پروتکل Ethernet 802.3 سروکار دارد و پس از دیکپسولیشن، داده را تحویل زیرلایه LLC میدهد اما اگر مقدار فیلد بزرگتر از 1518 باشد،سیستم میفهمد که با Ethernet 802.2 سروکار دارد و پس از دیکپسولیشن، داده را به پروتکلی که در فیلد type تعیین شده است، میفرستد.
تفاوت Preamble در 802.2 و 802.3
در اترنت دو، preamble به صورت شصتودو صفرویک و درنهایت دو یک است اما در اترنت سه، preamble به صورت پنچاه و شش صفر و یک و SOF به صورت شش صفرویک و دو یک است.
در مقصد
در مقصد، بسته دریافت میشود. ابتدا preamble از آن جدا شده و CRC انجام شده و با FCS بسته مقایسه میشود. سپس آدرس مبدا و مقصد جدا میشوند. با مشاهده فیلد length سیستم ورژن اترنت استفاده شده را درمییابد.