آشنایی با مفاهیم بنیادین در ارتباطات شبکه و ذخیره‌سازی داده

قسمت 22
Embedded EtherNet
مشاهده سایر جلسات آموزش
21 بازدید
۱۴۰۵-۰۱-۳۱
8 دقیقه
  • نویسنده: مجتبی داشخانه
  • درباره نویسنده: ---

هنگامی که ما در حال نوشتن اعداد بر روی کاغذ هستیم؛ بطور معمول نوشتن اعداد را از سمت چپ با نوشتن پرارزش ترین رقم شروع می کنیم. بعنوان مثال عدد هزار و سیصد و چهل و هفت بصورت 1347 نوشته می شود. این یک قرارداد است. براحتی میشد این قرار داد طور دیگری باشد؛ مثلا ما از سمت راست اعداد را بنویسیم که همان عدد بصورت 7431 نوشته می شد. از طرفی هنگام نوشتن اعداد با ارقام زیاد، تنها محدودیت ما عرض کاغذ زیر دست ماست و عملا هر عددی، با هر تعداد رقم را، میتوانیم بنویسیم. ولی در محاسبات کامپیوتری؛ اولا باید تعداد بایت هایی که یک عدد اشغال میکند (و در نتیجه گستره اعداد)، از قبل مشخص باشد؛ ثانیا باید بدانیم (کامپایلر بداند) که تفسیر صفرها و یک های درون این بایت ها، چگونه باید باشد. آیا این یک عدد اعشاری است یا صحیح؛ علامت دار است یا بدون علامت؛ یا اینکه تنها نمایشگر یک کاراکتر اسکی است.

تخصیص بایت برای ذخیره اعداد در حافظه

اعداد برای ذخیره شدن در حافظه؛ نیاز به اشغال یک یا چند بایت دارند؛ معمول این است که تعداد1؛ 2 ؛ 4 و یا 8 بایت، جهت این کار اختصاص می یابد (برای اعدادی که تعداد بایت بیشتری نیاز دارند؛ مثلا موجودی حساب یک نفر در بانک؛ از روش های دیگری مثل کلاس ها استفاده می شود). تعداد و تفسیر بایت ها در بسیاری از زبان های برنامه نویسی؛ توسط برنامه نویس با اعلان هایی مثل float یا unsigned int مشخص می شود (مابقی کامپایلرها مثل basic خود تشخیص میدهند چه تعداد بایت اختصاص دهند؛ ولی نتیجه کار فرقی نمیکند)

هنگام ذخیره سازی این بایت ها در حافظه RAM؛ باید از قبل مشخص باشد که کدام بایت ها در کدام خانه های حافظه قرار میگیرند و اشاره گر (Pointer) به داده مربوطه، به کدام بایت اشاره دارد و چه آدرسی را برمی گرداند.

نحوه قرارگیری بایت‌ها در حافظه (Endianess)

این عملیات در کامپیوترهای مبتنی بر معماری 8086 و سیستم عامل ویندوز به این ترتیب انجام می شود که بایت کم ارزش تر، در خانه حافظه با آدرس کوچکتر قرار می گیرد. به این حالت Little Endian می گویند. مثال زیر طریقه ثبت دو عدد بدون علامت 16 بیتی با محتوای 0xAA55 و 0x2344 را در حالت Little Endian نمایش می دهد. اشاره گر به داده اول مقدار(آدرس) 1001 و به داده دوم هم مقدار 997 را برمیگرداند. در حالت Big Endian، بایت پر ارزش در خانه با آدرس کوچکتر ذخیره می شود ولی همچنان اشاره گرها اولین آدرس اشغال شده (آدرس کوچکتر را بر می گردانند) در واقع تفاوت این دو حالت، در جابجایی محل ذخیره بایت های پرارزش و کم ارزش است.

در داده های 4 یا 8 بایتی نیز همین وضعیت برقرار است؛ مثل اینکه بایت ها بصورت آینه ای قرینه شده اند و بایت پرارزش در آدرس کوچکتر قرار میگیرد و توسط اشاره گر، اولین آدرس (کمترین آدرس اشغال شده) بر می گردد . در سیستم عامل ویندوز و البته عموم کامپایلرهای میکروکنترلرها؛ فرمت ذخیره Little Endian استفاده می شود؛ اما در تعریف پروتکل های اینترنتی، بنا به دلایلی از فرمت Big Endian استفاده شده است؛ بدین معنی که اگر بایت های دریافتی یا ارسالی را در یک آرایه از بایت ها ذخیره کنیم، بایت های پرارزش تر در خانه های با آدرس کوچکتر آرایه قرار می گیرند. این نحوه قرارگیری هنگام پردازش اطلاعات باید مورد توجه واقع شود وگرنه خطاهای زیادی خواهیم داشت.

 

مقدار

آدرس

متغیرهای دیگر

؟

1004

متغیرهای دیگر

؟

1003

متغیر از نوع

Uint16_t

0xAA

1102

0x55

1001

متغیرهای دیگر

؟

1000

متغیرهای دیگر

؟

999

متغیر از نوع

Uint16_t

0x23

998

0x44

997

متغیرهای دیگر

؟

996

متغیرهای دیگر

؟

995

متغیرهای دیگر

؟

994

   جدول : فرمت ذخیره Little Endian

کانکتور RJ45 و ساختار فیزیکی کابل اترنت

در بخش فیزیکال یک ارتباط اترنت، از کاکتورهای RJ45 استفاده می شود. RJ مخفف Registred Jack است. به این کانکتور اصطلاحا 8P8C یا 8Position,8Connection هم گفته می شود؛ بدین معنی که در این کانکتور 8 پین وجود داره و از هر 8 تای آن می توان استفاده کرد. برای سیم بندی، از زوج سیم های به هم تابیده (Twisted Pair) استفاده شده. همانطور که میدونیم؛ سیگنال ها بصورت دیفرانسیلی ارسال میشن. از خصوصیات سیم کشی تابیده؛ خنثی کردن نویز مشترک روی هر دو سیم هست.

استانداردهای سیم‌بندی کابل شبکه (TIA568A و TIA568B)

رنگ بندی سیم ها نیز در دو استاندارد TIA568A, TIA568B تعریف شده اند.  این دو استاندارد در شکل زیر نشان داده شده است.

استانداردهای سیم‌بندی کابل شبکه (TIA568A و TIA568B)

همچنین کابل های اترنت را؛ از  جهت نوع سیم بندی در دو سمت؛ میتوان به دو دسته تقسیم کرد. کابل مستقیم (Straghit یا یک به یک ) و کابل متقاطع یا ضربدری (Cross) تفاوت این دو نوع در اینه که در کابل مستقیم، هر پین کانکتور در یک سمت، به پین مشابه در کانکتور سمت دیگر رفته است. در حالی که در کابل کراس، سیگنال های TX در یک سمت، به سیگنال های RX در سمت دیگر متصل شده اند و بالعکس. قبلا گفته ایم که با توجه به دو قابلیت Auto Polarity و Auto MDIX انتخاب هر دو کابل میسر است.

شاید برای شما مفید باشد:
استفاده از DMA برای ارسال اطلاعات از حافظه توسط واحد USART در STM32 | قسمت شانزدهم آموزش STM32 با توابع LL

دسته‌بندی کابل‌های شبکه (CAT) و انواع شیلد

خود کابل ها نیز با توجه به نوع پوشش و سطح محافظت از آنها؛ به 7 بخش یا نوع (Category) تقسیم شده و به کابل های CAT معروف هستند. کابل هایی که پوشش محافظتی ندارند، به نام UTP(Unshielded Twisted Pair) ؛ کابل های که پوشش محافظتی دارند به نام STP (shielded Twisted Pair ) و کابل هایی که دارای فویل محافظتی هستند؛ بنام FTP (Foil Twisted Pair) شناخته می شوند.

در CAT های بالاتر، علاوه بر اینکه هر زوج سیم، روکش محافظ مخصوص دارد، تمام کابل نیز دارای ورقه فلزی محافظت از نویز می باشد. نوع لایه محافظ نیز در کیفیت یک ارتباط موثر خواهد بود، لذا ممکن است در یک کابل از یک لایه ورقه آلومینیومی برای محافظت استفاده شده باشد و در دیگری از یک توری فلزی پیچیده شده. هر چه سرعت ارتباط بالاتر باشد یا ارتباط در فاصله بیشتری استفاده گردد؛ ناچار به استفاده از کابل های با CAT بالاتر خواهیم بود. در ارتباط 10Mbps؛ بایستی حداقل کابل نوع CAT3 انتخاب گردد؛ در حالی که مثلا در ارتباط با یک دوربین صنعتی، نوع کابل باید حداقل از نوع CAT5e (Enhanced CAT5 ) یا CAT6 انتخاب گردد. همچنین سعی کنید از کابل های کمتر از یک متر استفاده نکنید و در مسافت های زیاد، از کابل های با کیفیت تر استفاده کنید. در شکل زیر تفاوت بعضی از این کابل ها را مشاهده می کنید.

آشنایی با مفاهیم بنیادین در ارتباطات شبکه و ذخیره‌سازی داده

کلاس های آدرس IP

همونطور که میدونید؛ آدرس IP یک آدرس منطقی به اندازه 4 بایت هست. با این تعداد بایت میشه تعداد 2 به توان 32 هاست رو آدرس دهی کرد؛ یعنی تقریبا 4.3 میلیارد هاست. این 4 بایت به دو بخش شماره ی شبکه و شماره ی هاست در شبکه تقسیم میشه و شامل کلاس های 5 گانه ای هست. بسته به اینکه پرارزشترین بیت های هر کلاس دارای چه مقداری باشند (و در نتیجه آدرس هر شبکه با چه عددی شروع بشه) کلاس ها از هم متمایز میشن. جدول زیر رو ببینید:

کلاس

بیت پرارزش اولین بایت

از

تا

A

0

0.0.0.0

126.255.255.255

B

10

128.0.0.0

191.255.255.255

C

110

192.0.0.0

223.255.255.255

D (Multicast)

1110

224.0.0.0

239.255.255.255

E (Exprimental)

1111

240.0.0.0

255.255.255.255

آدرس‌های رزرو شده و Loopback

همونطور که میبینید بعضی از آدرس ها در جدول نیستند و رزور شده اند. بعنوان مثال آدرس 127.0.0.1 بعنوان آدرس local host شناخته میشه و آدرس همون کامپیوتر یا هاستیه که در حال ارسال پکت هست. از این آدرس برای ارتباط بین دو سرویس در یک هاست استفاده میشه؛ مثلا وقتی دو نرم افزار روی یک کامپیوتر با هم ارتباط تحت شبکه می گیرند. اصطلاحا به این آدرس، لوپ بک (loopback) هم گفته میشه. اینگونه پیام ها روی کارت شبکه نمیرن و مستقیم از بافر ارسال به بافر دریافت منتقل میشن. فریم بندی این پیام ها رو در wireshark ببینید!

از طرفی؛ معمول اینه که اولین آدرس در شبکه یعنی آدرس 0 رو به عنوان آدرس خود شبکه رزرو میکنند و برای آدرس دهی به یک هاست استفاده نمیشه و شما مثلا آدرس 192.168.1.0 رو در جایی به عنوان آدرس هاست نمی بینید. آدرس خاص دیگه در یک شبکه؛ آدرس تمام ‘1’  است. این آدرس هم به عنوان آدرس عمومی در اون شبکه درنظر گرفته میشه؛ به عنوان مثال؛ در شبکه بالا، آدرس 192.168.1.255 آدرس عمومی در شبکه ست. تمام هاست های موجود در یک شبکه؛ پیام های آدرس عمومی رو دریافت خواهند کرد. پس برای آدرس دهی مستقیم به یک هاست؛ از اعداد بین آدرس شبکه و آدرس عمومی استفاده میشه.

گفتیم که قسمت سمت چپ (بایت های پرارزش) آدرس شبکه رو مشخص می کنند و مابقی بایت ها، آدرس host در شبکه رو مشخص میکنند؛ پس در آدرس دهی کلاس A ما میتوانیم بیش از 16 میلیون هاست رو در یک شبکه آدرس دهی بکنیم. در کلاس B این تعداد به 65535 هاست کاهش پیدا می کنه و در نهایت در کلاس C ما حداکثر 255 هاست در شبکه خواهیم داشت. بسته به اینکه در شبکه مون چه تعداد هاست نیاز داریم؛ باید از یکی از این کلاس ها استفاده کنیم و اگر تعدادی از آدرس ها بدون استفاده باشن؛ میشه اون محدوده رو در اختیار دیگران گذاشت. با استفاده از مفهوم زیرشبکه؛ یک شبکه به چند بخش تقسیم میشه که هر بخش تعداد کافی آدرس برای شبکه مورد نیاز رو داشته باشه. اینکه کدام بخش از آدرس، به عنوان آدرس شبکه و کدام بخش به عنوان آدرس هاست استفاده میشه؛ با مفهومی بنام subnet mask مشخص میشه. Subnet mask هم عددی 4 بایتی ست و معمول اینه که بیشتر از اعداد 255 یا 0 در اون استفاده میشه؛ پس subnet mask برای شبکه های کلاس A عدد 255.0.0.0 خواهد بود؛ برای کلاس B عدد 255.255.0.0 و برای کلاس C عدد 255.255.255.0

  • بعضی مواقع subnet mask رو همراه با آدرس آیپی مشخص می کنند؛ به عنوان مثال آدرس هاست به صورت 168.1.10/24 نوشته میشه؛ بدین معنی که آدرس هاست ما 192.168.1.10 هست و 24 بیت ابتدایی از این آدرس؛ آدرس شبکه هست.
شاید برای شما مفید باشد:
هر آن چه نیاز است در مورد JTAG و SWD بدانید.

زیرشبکه‌بندی (Subnetting) با مثال

در صورتی که بخواهیم یک شبکه رو به چند زیرشبکه تقسیم کنیم (برای بهبود سرعت مسیریابی؛ ایجاد امنیت و یا جداسازی دو زیربخش مثلا زیرشبکه بخش مالی و زیرشبکه بخش فنی در یک شرکت) میشه تعداد بیشتری بیت رو به زیرشبکه اختصاص بدیم. فرض کنید در شبکه ای با آدرس 192.168.1.X تعداد تقریبی 250 هاست رو میخوایم به دو گروه مساوی در دو زیرشبکه تقسیم کنیم. در این وضعیت بیت بیست و پنجم از آدرس رو هم به subnet mask اختصاص می دهیم؛ لذا فرم آدرسمون میشه 192.168.1.x/25. آدرس زیرشبکه اول رو 192.168.1.0/25 و دومی رو 192.168.1.128/25 معرفی می کنیم. مجددا در هر زیرشبکه؛ آدرس اول؛ آدرس شبکه است و آدرس آخر؛ آدرس عمومی در زیرشبکه. لذا در مثال بالا آدرس 192.168.1.0 آدرس زیرشبکه اول و آدرس 192.168.1.127 آدرس عمومی این زیرشبکه خواهد بود. در زیر شبکه دوم؛ آدرس شبکه 192.168.1.128 و آدرس عمومی آن 192.168.1.255. نوشتن بایت آخر در این آدرس ها بصورت بیتی؛ در فهم بهتر موضوع کمک کننده ست.

  • 0    =”00000000”
  • 127=”01111111”
  • 128=”10000000”
  • 255=”11111111”
اطلاعات
21
0
0
اشتراک و حمایت
جلسات دیگر
آموزش

آموزش NAT، Wireshark و مقایسه مدل OSI و...

profile نویسنده: مجتبی داشخانه متخصص الکترونیک

ویراستار: حسین زنجانی زاده
مقالات بیشتر

slide

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند. فروش در پالت
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. جستجو در آیسی
family

سیسوگ‌شاپ | فروشگاه محصولات Quectel

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند. برو به فروشگاه سیسوگ
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند. پرسش در سیسوگ فرم
family

سیکار | اولین مرجع متن باز ECU در ایران

بررسی و ارائه اطلاعات مربوط به ECU (واحد کنترل الکترونیکی) و نرم‌افزارهای متن باز مرتبط با آن برو به سیکار
become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله

خانواده سیسوگ

سیسوگ‌شاپ

فروشگاه محصولات Quectel

پالت
سیسوگ فروم

محلی برای پاسخ پرسش‌های شما

سیسوگ جابز
سیسوگ
سیسوگ فروم
سی‌کار

اولین مرجع متن باز ECU در ایران

سیسوگ مگ
آی‌سی

موتور جستجوی قطعات الکترونیکی

سیسوگ آکادمی
پالت

بازار خرید و فروش قطعات الکترونیک

دیدگاه ها

become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله