خب یکم بریم عقب تر، اگه یادتون باشه؛ گفتیم که برای ارتباط تنها دو روج سیم برای TX و RX استفاده شدن! و سيگنال كلاك نداريم! از طرفی، درون شبکه، تجهیزات مختلفي با سرعت های مختلف هستند. این ها چطور با هم سنکرون میشن؟
اینجاست که لایه دوم تعدادي بایت که بهشون میگن preamble هم در ابتدای frame و قبل از ارسال مک آدرسها میفرسته.
Preamble شامل 7 بایت با مقدار 0x55 و یک بایت هشتم با مقدار 0xD5 که به نام SFD (Start of Frame Delimiter) شناخته میشه. اگر این اعداد رو بصورت باینری بنویسید متوجه میشید که بصورت یک در میان ‘0’ و ‘1’ میشن.
(در بعضی مراجع SFD رو هم جزو Preamble به حساب میارن و اونو 8 بایتی در نظر میگیرند) یادمون هست که هر بایت از کمارزشترین بیت ارسال میشد. پس، ارتباط با ارسال یک بیت با مقدار ‘1’ شروع میشه (کمارزشترین بیت از پرارزشترین بایت که 0x55 هست) و بعد به ترتیب صفرها و یکها ارسال میشن تا آخرین بیت از بایت هشتم که به جای اینکه ‘0’ باشه دارای مقدار ‘1’ هست. تا اينجا کلاک دو سمت با هم سنكرون شده ن. هنگام ارسال آخرين بيت از بايت هشتم، طرف گیرنده، متوجه شروع ارسال مک آدرسها میشه.
بعد از ارسال فریم هم خط برای زمان مشخصی ساکت میشه که بهش IPG(InterPacket Gap) میگن. در حالت سکوت اصطلاحاً خط در حالت Idle (توقف) هست و سیگنالی از نوع ‘0’ یا ‘1’ روی خط نیست. دو وضعيت ‘0’ و ‘1’ و همچنين Idle باتوجهبه اختلاف سطوح ولتاژ روي پینهای TX+,TX- تعريف شده است (توجه داشته باشید که در سرعت 100Mb وضعیت Preamble کمی متفاوت هست نسبت به 10Mhz).
این نوع بستهبندی؛ استاندارد Ethernet ii یا همون اترنت دو هست. بیاید این اطلاعات رو درون جدول ببینیم.
نام | Preamble | SFD | Destination MAC Address | Source MAC Address | Ether Type/Length | Payload (data)+pad(0x00) | FCS | IPG |
تعداد بایت | 7 | 1 | 6 | 6 | 2 | 46~1500 | 4 | 12 |
مقدار | 0x55 | 0xD5 | مک آدرس مقصد | مک آدرس مبدا | نوع/ طول پروتکل | داده دریافتی از لایه سوم | CRC | Idle |
در مراجع؛ دو بخش Preamle و SFD رو به همراه بخش IPG، جزو بخش های اصلی فریم در نظر نمی گیرند. در دو بخش DA, SA مک آدرس گیرنده و فرستنده قرار دارد. پرارزش ترين بايت در هر مك آدرس، ابتدا ارسال مي شود. به عنوان مثال در صورتی که مک آدرس مقصد 0A:55:4C:12:AF:B3 باشد؛ ارسال با 0x0A آغاز و با 0xB3 خاتمه مي يابد. مك آدرس مبدا نیز به همین منوال بعد از مک ادرس مقصد نوشته و ارسال خواهد شد. یادمون هم هست که گفتیم هر بایت از کم ارزشترین بیت ارسال میشه!
بعد از مک آدرسها دو بایت با عنوان Ether type/Length ارسال میشود. با استفاده از این دو بایت؛ گیرنده متوجه میشود که داده ارسالی، تحت چه پروتکلی (از لايه 3) ارسال شده یا شامل چه تعداد بایت هست. سپس دادههای اصلی قرار دارند.
طبق استاندارد؛ بخش دادهها، حداقل باید دارای 46 بایت باشد. اگر تعداد داده های واقعی کمتر از آن باشد؛ باید در انتهای داده ها، تعدادی بایت با مقدار 0x00 قرار دهیم تا تعداد آن به 46 بایت برسد و به آن padding گویند. در انتهای پکت هم، 4 بایت برای بررسی صحت دریافت قرار دارند که به نام FCS(Frame Check Syquence) شناخته میشه و محاسبات آن با روش CRC (از ابتدای DA تا انتهای دادهها) انجام می شود. این محاسبات عموما توسط سخت افزار انجام میشه و ما ازش عبور می کنیم. تنها نکتهای که در این بخش، بهتره یادمون باشه؛ اینه که در هنگام ارسال CRC؛ برعکس مابقی بایت ها؛ از پرارزشترین بیت یعنی بیت شماره 31 شروع و با ارسال بیت شماره 0 تمام می شود.
در انتهاي فريم هم به اندازه 12 بایت (96us در ارتباط 10Mb) روی خط سکوت برقرار میشود (خروجی در حالت Idle قرار میگیرد) که به آن IPG یا IFG گفته میشود (Inter Packet/Frame Gap). IPG و در سرعت 100Mb کمی متفاوت انجام میشود.
اگر بخشهای Preamble,SFD,IPG رو در نظر نگيريم؛ تعداد بایتهای کل فریم اترنت، حداقل 64 و حداکثر 1518 بایت هست. 12 بایت برای مک آدرسها؛ 2 بایت برای Ether type/Length و 4 بایت برای CRC. مجموعاً 18 بایت از کل فریم، سربار هست؛ لذا حداقل داده ارسالی میشه 64-18=46
از سوی دیگر، حداکثر داده ارسالی هم ميشه 1518-18=1500 که برای استفاده در عموم پروتکلهای تعریف شده؛ کافیه. چنانچه بیش از این مقدار، نیاز باشه (مثلاً برای ارسال یک فایل) دادههای اصلی توسط پروتکلهای مربوطه شکسته و خرد میشه و بعد ارسال میشن. همینجا چند اصطلاح دیگه رو معرفی کنیم:
“Octet” که در لغتنامه اینترنتی، نام دیگر “بایت” هست!
PDU(Protocol Data Unit) بهطورکلی به دادههایی که توسط یک پروتکل ارسال میشه؛ گفته میشه. MTU(Maximum Transmission Unit) حداکثر داده ارسالی بر حسب بایت هست. در استاندارد بعضی از پروتکلها، این الزام هست که گیرندهها باید بتونن یک حداقلی از داده رو دریافت کنن. از طرفی حداکثر مقدار ارسالی هم توسط تنظیمات اولیه یا در مرحله مذاکره (Negotiation) یا هندشیک (دست دهی، Handshake) ممکنه مورد توافق قرار بگیره. همچنین ماکزیمم اندازه دادههای هر پیغام توسط فریم اصلی Ethernet ii هم محدود میشه (1500 بایت).
مهمترین بخش هر فریم، قسمت Ether Type/Length هست. اگر در این قسمت عددی کوچکتر یا مساوی 1500 معادل 0x05DC نوشته شده باشه؛ این عدد؛ اندازه بخش payload یا همون طول داده های ارسالی (Length) رو نشون میده. به این حالت میگن استاندارد IEEE 802.3 ؛ برای اطلاعات بیشتر در مورد نامگذاری و تاریخچه این استاندارد میتونید از لینک زیر استفاده کنید:
https://en.wikipedia.org/wiki/IEEE_802
اعداد 1501–1535 تعریف نشده اند و نباید استفاده بشوند. اما اگر در این قسمت، عددی بزرگتر/مساوی 1536 یا همان 0x0600 قرار داده شده باشه، این عدد نشانگر پروتکلیه که داده ها تحت اون ارسال شده ن. این حالت رو میگیم استاندارد Ethernet ii. چیزی که ما نیاز داریم و از ابتدا هم بارها بهش اشاره کردیم، در واقع این استاندارد هست. در اسناد موجود در اینترنت؛ در موارد زیادی منجمله در دیتاشیت ENC به جای Ethernetii از IEEE802.3 استفاده میشه؛ ولي شما باید متوجه تفاوت این دو حالت باشید. استاندارد مدنظر ما Ethernet ii هست و از IEEE802.3 موقعی میتوانید استفاده کنید که بخواهید داده ها رو بدون استفاده از پروتکل های تعریف شده، ارسال کنید و یا خودتون پروتکل شخصی ایجاد کنید مثل magic packet.
تا اینجا چی یاد گرفتیم؟ اگر در قسمت Ethe type عددی کمتر از 1501 نوشته شده باشه؛ داریم از استاندارد IEEE802.3 استفاده میکنیم و در واقع اطلاعات این دو بایت Ether Length هست. این حالت برای ما کارایی نداره. مدنظر ما حالتیه که در قسمت Ether Type عددی بزرگتر از 1535 نوشته شده. این حالت همون استاندارد Ethernet ii (اترنت دو) هست. اعدادی که در این قسمت نوشته میشه از قبل تعریف شده ن و ما برای استفاده از هر پروتکلی مبتنی بر Ethernet ii باید در این قسمت اعداد مشخصی رو قرار بدیم. این اعداد توسط سازمانی بنام IANA(Internet Assigned Numbers Authority) اختصاصدادهشدهاند. جدول زیر تعدادی از این اعداد رو مشخص کرده.
Ether Type | Protocol |
0x0800 | Internet Protocol Version4(Ipv4) |
0x0806 | Address Resolution Protocol(ARP) |
0x8035 | Reverse Address Resolution Protocol(RARP) |
0x86DD | Internet Protocol Version6(Ipv6) |
0x8100 | Tagged VLAN |
0x88A4 | EtherCAT Protocol |
تعداد پروتکلهای تعریف شده، بسیار بیشتر از این جدوله اما چیزی که برای ما اهمیت دارد؛ دو عدد 0x0800 و 0x0806 (که در جدول پررنگتر نوشته شده ن) هست که با نام پروتکلهای IPv4 و ARP شناخته میشوند. اگه یادتون باشه در ابتدا گفتیم که چند تا پروتکل؛ نیاز حتمی هست که یاد بگیریم تا اصول رو بفهمیم.
سه پروتکل Ethernetii ؛ IP و ARP جزو اون ها هستند. پروتکل Ethernet ii که در لایه دوم قرار داره رو تعریف کردیم و دوتای دیگه که جزو لایه سه از مدل OSI هستند رو خواهیم گفت.
RFC سرنام (acronym) اصطلاح Request For Comment هست. (خودتون رو زیاد درگیر این اصطلاحات و مخففها (abbreviation) نكنيد وگرنه بیشتر گیج میشد. کمکم همه شون رو یاد میگیرید؛ بدون حفظکردن)
نویسنده شو !
سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.