اینترنت مجموعهای متشکل از شبکههایی است که هر یک از این شبکهها میزبان مولفههای مختلفی مثل روترها، سوئیچها، سرورها، ایستگاههای کاری و غیره هستند. اگر قرار است بستهای از یک میزبان به میزبان دیگر منتقل شود باید از این شبکهها عبور کند تا به مقصد برسد. در شکل۱ ارتباط بین آلیس و باب را میبینید. این شکل بهخوبی نشان میدهد هنگامیکه قصد ارسال بسته اطلاعاتی را دارید، این بسته باید از چه دستگاهها، شبکهها و ارائهدهندگان خدمات اینترنتی عبور کند تا به مقصد برسد. فارغ از تجهیزات مختلفی که درون این شبکهها مستقر شدهاند، این لایه پیوند دادهها است که وظیفه برقراری ارتباط را دارد. بنابراین هرگونه مشکلی در این لایه مانع ارسال یا دریافت درست اطلاعات میشود. در شکل ۱ لایه پیوند داده در رایانه آلیس با لایه پیوند داده در روتر R2 ارتباط برقرار میکند. لایه پیوند داده در روتر R2 با لایه پیوند داده در روتر R4 ارتباط برقرار کرده و این روال ادامه پیدا میکند تا در نهایت، لایه پیوند داده در روتر R7 با لایه پیوند داده در رایانه باب ارتباط برقرار کند.
شکل 1
گرهها و پیوندها
اگرچه ارتباط در لایههای اپلیکیشن، انتقال و شبکه حالت سراسری یا بهعبارت دقیقتر، End-To-End دارد، اما ارتباط در لایه پیوند داده گره به گره است. هنگامی که یک بسته اطلاعاتی از یک نقطه در اینترنت ارسال میشود، باید از میان شبکههای محلی و گسترده مختلفی عبور کند تا به مقصد برسد. این شبکههای LAN و WAN توسط روترها بههم متصل میشوند. به دو میزبان پایانی و روترها، گرهها و شبکههای بین آنها پیوندها گفته میشود. اگرچه دو گره از نظر فیزیکی توسط یک رسانه انتقال مثل کابل یا امواج رادیویی به یکدیگر متصل میشوند، اما باید بهخاطر داشته باشیم که لایه پیوند داده نحوه استفاده از رسانه را کنترل میکند. ما میتوانیم یک لایه پیوند داده داشته باشیم که از کل ظرفیت رسانه استفاده کند. علاوه بر این، میتوانیم یک لایه پیوند داده داشته باشیم که تنها بخشی از ظرفیت پیوند را استفاده کند. بهعبارت دیگر، میتوانیم لینک نقطهبهنقطه یا پیوند پخشی داشته باشیم. در پیوند نقطهبهنقطه، پیوند به دو دستگاه اختصاص داده شده است. در یک پیوند پخشی، پیوند بین چند جفت دستگاه بهاشتراک گذاشته میشود. بهعنوان مثال، زمانی که دو دوست از اینترنت خانه برای چت استفاده میکنند، از یک پیوند نقطه به نقطه استفاده میکنند. وقتی همان دو دوست از تلفنهمراه خود استفاده میکنند از پیوند پخشی استفاده میکنند که مبتنی بر امواج رادیویی است.
دو لایه فرعی
برای درک بهتر عملکرد و خدمات ارائه شده توسط لایه پیوند داده، میتوان آن را به دو زیرلایه تقسیم کرد: کنترل پیوند داده (DLC) سرنام Data-Link Control و کنترل دسترسی رسانه (MAC) سرنام Media Access Control. جالب آنکه پروتکلهای LAN نیز از همین خطمشی راهبردی استفاده میکنند. زیرلایه کنترل پیوند داده (DLC) مسئولیت رسیدگی به تمامی موارد مرتبط با پیوندهای نقطهبهنقطه و پیوندهای پخشی را دارد، در حالی که زیرلایه MAC فقط با مسائل خاص پیوندهای پخشی در ارتباط است؛ بهعبارت دیگر، همانگونه که در شکل ۲ مشاهده میکنید، ما این دو نوع فناوری را در لایه پیوند داده از یکدیگر تفکیک میکنیم.
شکل 2
کنترل پیوند داده
کنترل پیوند داده (DLC) از طریق بهکارگیری خطمشیها و روالهای مشخصی ارتباط بین دو گره مجاور (ارتباط گره با گره) را برقرار میکند. بهبیان دقیقتر، برای کنترل پیوند داده اهمیتی ندارد لینک ارتباطی از نوع اختصاصی یا همهپخشی باشد. این مولفه لایه پیوند داده است که مسئولیت فریمبندی و کنترل خطاها را بر عهده دارد.
فریمبندی
انتقال داده در لایه فیزیکی بهمعنای انتقال بیتها بهصورت سیگنال از مبدا به مقصد است. لایه فیزیکی همگامسازی بیتها را مدیریت میکند تا مطمئن شود از زمانبندی و بیت یکسانی استفاده میکنند.
از سوی دیگر، لایه پیوند داده باید بیتها را در فریمها بستهبندی کند؛ بهطوری که هر فریم از فریم دیگر قابل تشخیص باشد. عملکرد این لایه شبیه به ارسال یک نامه اداری است. شما عمل ساده درج یک نامه در پاکتنامه را انجام میدهید و نامه را به اداره پست تحویل میدهید. در اداره پست هر نامه اطلاعات مخصوص به خود را دارد که متمایز از اطلاعات نامه دیگر است. در اینجا، پاکت نقش جداکننده را دارد. علاوه بر این، هر پاکت آدرس فرستنده و گیرنده مشخصی دارد که به شرکت پست کمک میکند نامه را به مقصد درست برساند و در صورت عدم دریافت نامه توسط گیرنده، فرستنده قادر به پیگیری عدم ارسال باشد. همین قاعده در دنیای شبکهها نیز صادق است. فریمبندی در لایه پیوند داده، اطلاعاتی که بیانگر آدرس فرستنده و آدرس مقصد هستند را از یکدیگر متمایز میکند. آدرس مقصد مشخص میکند که بسته بهکجا میرود. آدرس فرستنده به گیرنده کمک میکند تا بداند چه کسی بسته را ارسال کرده است.
اگرچه کل پیام را میتوان در یک فریم بستهبندی کرد، اما معمولا اینکار انجام نمیشود. یکی از دلایل این است که یک فریم میتواند بسیار بزرگ باشد که فرایند کنترل جریان و شناسایی خطا را ناکارآمد میکند. هنگامی که یک پیام در یک فریم بسیار بزرگ انتقال داده میشود، حتا یک خطای تکبیتی باعث میشود تا مجبور شوید یک فریم را دومرتبه ارسال کنید. هنگامی که یک پیام به فریمهای کوچکتر تقسیم میشود، یک خطای تکبیتی تنها بر آن فریم کوچک تأثیر میگذارد.
اندازه فریم
فریمها میتوانند اندازه ثابت یا متغیر داشته باشند. در فریمبندی با اندازه ثابت، نیازی به تعیین مرزهای فریم نیست، زیرا از اندازه خود بسته بهعنوان تفکیککننده استفاده میشود. نمونهای از این نوع فریمبندی ATM WAN است که از فریمهایی با اندازه ثابت بهنام سلول استفاده میکند.
بنابراین، این فریمبندی با اندازه متغیر است که در شبکههای محلی رایج است و اهمیت زیادی دارد. در فریمبندی با اندازه متغیر به روشی نیاز داریم تا انتهای یک فریم و ابتدای فریم بعدی را تعریف کنیم. در اینجا دو تکنیک بیت-گرا (Bit-Oriented) و کاراکتر-گرا (Character-Oriented) در دسترس است.
فریمبندی کاراکتر-گرا
در فریمبندی کاراکتر-گرا (یا بایتگرا)، دادههایی که باید انتقال داده شوند کاراکترهای 8 بیتی مبتنی بر یک سیستم کدگذاری مثل اسکی (ASCII) هستند. در این مکانیزم، سرآیند معمولا آدرسهای مبدا، مقصد و دیگر اطلاعات کنترلی را انتقال میدهد و دنباله (trailer) بیتهای اضافی تشخیص خطا را انتقال میدهد که مضربی از 8 بیت دارد. برای تفکیک یک فریم از فریم بعدی، یک پرچم 8 بیتی (1 بایتی) در ابتدا و انتهای یک فریم اضافه میشود. پرچم که از کاراکترهای ویژه مرتبط با یک پروتکل تشکیل شده، شروع یا پایان یک فریم را نشان میدهد. شکل۳ فرمت یک فریم در یک پروتکل کاراکتر-گرا را نشان میدهد.
شکل 3
فریمبندی کاراکتر-گرا زمانی کاربرد گستردهای داشت که اطلاعاتی که قرار بود توسط لایههای پیوند داده انتقال داده شوند حالت متنی داشتند. در اینجا پرچم را میتوانستیم بهعنوان هر کاراکتری انتخاب کنیم که برای ارتباط متنی استفاده نمیشد، اما اکنون که انواع دیگری از اطلاعات مانند نمودار، صدا و تصویر را ارسال میکنیم، هر الگوی استفاده شده برای پرچم میتواند بخشی از اطلاعات باشد. اگر این اتفاق بیفتد، پروتکلهای سمت گیرنده وقتی چنین الگویی را دریافت کنند، تصور میکنند به انتهای یک ارتباط رسیدهاند و ارتباط با خاتمه ناگهانی روبرو میشود. برای رفع این مشکل، استراتژی پر کردن بایت (Byte Stuffing) به رویکرد فریمبندی کاراکتر-گرا اضافه شد. در مکانیزم پر کردن بایت، هنگامیکه یک کاراکتر با همان الگوی پرچم وجود داشته باشد، یک بایت خاص به بخش داده فریم اضافه میشود. این بایت معمولاً کاراکتر فرار (ESC) نامیده میشود و یک الگوی بیت از پیش تعریف شده دارد. هنگامیکه گیرنده با کاراکتر ESC روبرو میشود، آن را از بخش داده حذف میکند و با کاراکتر بعدی بهعنوان داده و نه بهعنوان یک پرچم تعیینکننده رفتار میکند. با اینحال، تکنیک Byte Stuffing که کاراکتر escape را به پرچم در بخش داده فریم اضافه میکرد، خود باعث بروز مشکل دیگری شد. چه اتفاقی میافتد اگر متن حاوی یک یا چند کاراکتر فرار باشد که بایتی با الگوی مشابه پرچم دارد؟ گیرنده کاراکتر فرار را حذف میکند، اما بایت بعدی را که بهاشتباه بهعنوان انتهای فریم تفسیر میشود، نگه میدارد. در این حالت مشکل یک اتصال بیپایان بهوجود میآید. برای حل این مشکل، کاراکترهای فرار که بخشی از متن هستند باید متمایز از کاراکتر فرار باشند. بهعبارت دیگر، اگر کاراکتر فرار بخشی از متن باشد، باید یک کاراکتر مضاعف اضافه شود تا نشان دهد که کاراکتر دوم بخشی از متن است. شکل ۴ این وضعیت را نشان میدهد.
شکل 4
پروتکلهای کاراکتر-گرا مشکل دیگری در ارتباطات دادهای بهوجود میآورند. سیستمهای کدگذاری جهانی که امروزه استفاده میشوند، مثل یونیکد، دارای کاراکترهای 16 و 32 بیتی هستند که با کاراکترهای 8 بیتی مغایر هستند. بهدلیل وجود مشکلات این چنینی، شرکتها به سراغ پروتکلهای بیتگرا رفتند.
فریمبندی بیتگرا
در فریمبندی بیتگرا، بخش دادههای یک فریم، دنبالهای از بیتها است که توسط لایه بالایی بهصورت متن، گرافیک، صدا، ویدئو و غیره تفسیر میشود. با این حال، علاوه بر سرایندها (و دنبالههای احتمالی)، همچنان به یک تفکیککننده برای جدا کردن یک فریم از دیگری نیاز داریم. همانگونه که شکل 5 نشان میدهد، بیشتر پروتکلها از یک پرچم الگوی 8 بیتی ویژه، 01111110، بهعنوان جداکننده تعریف ابتدا و انتهای فریم استفاده میکنند. با اینحال، پرچم مذکور میتواند همان مشکلی را ایجاد کند که در پروتکل کاراکتر-گرا شاهد آن بودیم، یعنی اگر الگوی پرچم در دادهها ظاهر شود باید بهنحوی به گیرنده اطلاع دهیم که این انتهای فریم نیست. ما این کار را با پر کردن یک بیت (به جای یک بایت) انجام میدهیم تا الگوی شبیه یک پرچم نداشته باشیم. این استراتژی پر کردن بیتی (Bit Stuffing) نام دارد. در رویکرد بیتی، اگر یک بیت 0 و پنج بیت 1 متوالی داشته باشیم، یک 0 مضاعف به بسته اضافه میشود. شکل 6 الگوی استفاده شده در این تکنیک را نشان میدهد.
شکل 5
شکل 6
کنترل خطا
کنترل خطا هر دو فرایند تشخیص و تصحیح خطا را انجام میدهد. رویکرد فوق به گیرنده اجازه میدهد تا فرستنده را از گم شدن یا آسیب دیدن فریمها در زمان انتقال مطلع کند و ارسال مجدد آن فریمها توسط فرستنده را هماهنگ میکند. در لایه پیوند داده، کنترل خطا بهروشهای تشخیص خطا و ارسال مجدد اشاره دارد.
انواع خطاها
هنگامیکه بیتها از نقطهای به نقطه دیگر انتقال داده میشوند در معرض تغییرات غیرقابل پیشبینی قرار میگیرند که در نهایت ماهیت و شکل سیگنال را تغییر میدهد. اصطلاح خطای تکبیتی به این معنا است که فقط 1 بیت از یک واحد داده معین (مانند یک بایت، کاراکتر یا بسته) از 1 به 0 یا از 0 به 1 تغییر میکند. در این زمینه اصطلاح مهمی بهنام «خطای انفجاری» وجود دارد که به این معنا است که دو یا چند بیت در واحد داده از 1 به 0 یا از 0 به 1 تغییر کرده است. شکل ۷ اثر خطای تکبیتی و خطای انفجاری را بهترتیب روی یک واحد داده نشان میدهد.
شکل 7
خطای انفجاری بیشتر از خطای تکبیتی اتفاق میافتد، زیرا مدت زمان تاثیرگذاری سیگنال نویز بیشتر از مدت زمان یک بیت است؛ به این معنا که وقتی نویز بر دادهها تأثیر میگذارد، مجموعهای از بیتها را تحت تاثیر قرار میدهد. تعداد بیتهای تحت تاثیر قرار گرفته بهسرعت رسانه انتقال و مدت زمان نویز بستگی دارد. بهعنوان مثال، اگر دادهها را با سرعت 1 کیلوبیت در ثانیه ارسال کنیم، نویز 1/100 ثانیه میتواند 10 بیت را تحت تاثیر قرار دهد. اگر دادهها را با سرعت 1 مگابیت در ثانیه ارسال کنیم، همان نویز میتواند 10000 بیت را تحت تأثیر قرار دهد.
افزونگی
عامل مهمی که روند تشخیص یا تصحیح خطاها را تسهیل و امکانپذیر میکند، افزونگی است. برای اینکه بتوانیم خطاها را شناسایی یا تصحیح کنیم، باید چند بیت اضافی را همراه با دادهها ارسال کنیم. این بیتهای اضافی، توسط فرستنده اضافه شده و توسط گیرنده حذف میشوند. وجود آنها به گیرنده اجازه میدهد بیتهای خراب را شناسایی یا تصحیح کند.
تشخیص در مقابل تصحیح
تصحیح خطاها دشوارتر از تشخیص است. در تشخیص خطا، فقط بهدنبال بررسی این موضوع هستیم که آیا خطایی اتفاق افتاده یا خیر. پاسخ یک بله یا خیر ساده است و حتا به تعداد بیتهای خراب اهمیتی نمیدهیم. در تصحیح خطا، باید تعداد دقیق بیتهای خراب و مهمتر از آن مکان آنها در پیام را بدانیم. تعداد خطاها و اندازه پیام عوامل مهم دیگری هستند که باید به آنها دقت کنیم. اگر بخواهیم یک خطا را در یک واحد داده 8 بیتی تصحیح کنیم، باید هشت محل خطای احتمالی در نظر بگیریم. اکنون تصور کنید که گیرنده در یافتن 10 خطا در یک واحد داده 1000 بیتی با چه مشکل بزرگی روبرو است.
کدگذاری
افزونگی از طریق طرحهای کدگذاری مختلف بهدست میآید. فرستنده بیتهای اضافی را از طریق فرآیندی اضافه میکند که رابطهای بین بیتهای اضافی و بیتهای داده واقعی ایجاد میکند. گیرنده روابط بین دو مجموعه بیت را برای تشخیص خطاها بررسی میکند. نسبت بیتهای اضافی به بیتهای داده و انسجام فرآیند از عوامل مهم در هر طرح کدگذاری هستند. ما میتوانیم طرحهای کدگذاری را به دو گروه کلی تقسیم کنیم: کدگذاری بلوکی و کدگذاری کانولوشن که پرداختن به آنها خارج از حوصله این مقاله است.
کلام آخر
ما میتوانیم لایه پیوند داده را بهعنوان دو لایه فرعی در نظر بگیریم. زیرلایه بالایی که مسئول کنترل پیوند داده است و زیرلایه پایینی که مسئول دسترسی به رسانه است. در اینجا کنترل پیوند داده (DLC) با طراحی و روالهایی که ارتباط بین دو گره را امکانپذیر میکند در ارتباط است. این زیرلایه وظیفه فریمبندی و کنترل خطا را برعهده دارد. همانگونه که متوجه شدید، کنترل خطا با خرابی دادهها در حین انتقال ارتباط مستقیم دارد؛ بنابراین ضروری است بهعنوان کارشناس شبکه دانش خود در ارتباط با پروتکلهای لایه پیوند و بهویژه دو پروتکل HDLC و PPP را ارتقاء دهید. کنترل پیوند داده سطح بالا (HDLC) سرنام High-level Data Link Control یک پروتکل بیتگرا برای برقراری ارتباط از طریق پیوندهای نقطهبهنقطه و چندنقطه است. با اینحال، رایجترین پروتکل برای دسترسی دو گره، پروتکل نقطهبهنقطه (PPP) است که یک پروتکل بایتگرا است. امروزه پروتکلهای مختلفی برای مدیریت دسترسی و برقراری ارتباطات پدید آمدهاند که میتوان آنها را به سه گروه پروتکلهای دسترسی تصادفی، پروتکلهای دسترسی کنترل شده و پروتکلهای کانالسازی تقسیم کرد. در روشهای دسترسی تصادفی، هیچ ایستگاهی نسبت به ایستگاه دیگر برتری ندارد و به هیچیک از ایستگاهها کنترل بر دیگری واگذار نمیشود. در دسترسی کنترل شده، ایستگاهها با یکدیگر تعامل دارند تا دریابند کدام ایستگاه حق ارسال را دارد. کانالسازی یک روش دسترسی چندگانه است که در آن پهنای باند موجود یک پیوند، بین ایستگاههای مختلف بهاشتراک گذاشته میشود. در لایه پیوند داده، ما از آدرسدهی لایه پیوند استفاده میکنیم. سیستم معمولاً آدرس لایه پیوند گره بعدی را با استفاده از پروتکل ARP سرنام Address Resolution Protocol پیدا میکند. همانگونه که مشاهده میکنید، این لایه اهمیت بسیار زیادی در دنیای شبکه دارد و نباید بهسادگی از کنار آن عبور کرد. در این مقاله سعی کردیم اطلاعات کلی در ارتباط با عملکرد این لایه را نشان دهیم، اما اگر بهدنبال اطلاعات کاملتری هستید باید به سراغ منابع زبان اصلی بروید.
ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را میتوانید از کتابخانههای عمومی سراسر کشور و نیز از دکههای روزنامهفروشی تهیه نمائید.
ثبت اشتراک نسخه کاغذی ماهنامه شبکه
ثبت اشتراک نسخه آنلاین
کتاب الکترونیک +Network راهنمای شبکهها
- برای دانلود تنها کتاب کامل ترجمه فارسی +Network اینجا کلیک کنید.
کتاب الکترونیک دوره مقدماتی آموزش پایتون
- اگر قصد یادگیری برنامهنویسی را دارید ولی هیچ پیشزمینهای ندارید اینجا کلیک کنید.
نظر شما چیست؟