لایه پیوندداده
| مدل مرجع اتصال داخلی سیستمهای باز | |
|---|---|
| ۷ | لایه برنامه en |
| ۶ | لایه ارائه en |
| ۵ | لایه جلسه en |
| ۴ | لایه انتقال |
| ۳ | لایه شبکه |
| ۲ | لایه پیوندداده |
| ۱ | لایه فیزیکی |
لایه پیوند داده دومین سطح از مدل مرجع OSI میباشد. در این لایه بر روی الگوریتمهای دستیابی به ارتباطات قابل اعتماد بین دو کامپیوتر همسایه بحث میشود.این لایه دارای وظایفی به قرار زیر است:
- ارائه سرویسهای مشخص به لایهٔ شبکه
- مدیریت خطاهای انتقال
- تنظیم جریان داده ها
برای تحقق این اهداف این لایه اقدام به فریم بندی اطلاعات می نمایید.
محتویات |
[ویرایش] ارائه سرویسهای مشخص به لایه شبکه
از مهمترین وظایف لایه پیوند داده انتقال دادهها از لایه شبکهٔ ماشین مبدا به لایه شبکه ماشین مقصد میباشد. این ارتباط (بخش الف) در شکل مقابل نشان داده شده است. البته این اتصال ارتباطی همچون بخش (ب) که ارتباطی واقعی است، را دنبال می نماید. سرویس هایی که لایه پیوند داده ارائه میکند، از سیستمی تا سیستم دیگر متفاوت است. اما از مهمترین سرویسها عبارتاند از:
- سرویس غیر متصل بدون تصدیق دریافت: این سرویس در اکثر LANها مورد استفاده قرار میگیرد.
- سرویس غیر متصل با تصدیق دریافت: این سرویس برای کانالهای غیر اعتمادی مثل سیستمهای بسیم مناسب است.
سرویس اتصال گرا با تصدیق دریافت:این سرویس که مناسبترین سرویس این لایه است در سه مرحله انجام میگیرد.
- مقدار دهی متغییرهای لازم برای شمارش فریمها و غیره.
- انتقال فریم ها.
- قطع اتصال و آزاد سازی متغییرها و بافر ها.
[ویرایش] فریم بندی
جهت فریم بندی روشهای زیر وجود دارد:
- شمارش کاراکتر ها: در این روش تعداد کاراکترهای فریم در یکی از فیلدهای سرآیند آن نوشته میشود. وقتی این فریم به مقصد برسد، لایه پیوند داده مقابل به کمک آنها فریم دادهای را مشخص میکند. شکل زیر مثالی از فریم بندی به کمک شمارش کاراکترها میباشد.
البته در این روش ممکن است بیت مشخص کننده آغاز و انتهای فریم هم آسیب ببیند. در این صورت راهی باقی نمی ماند جز اینکه به فکر روش مورد اعتماد دیگری باشیم.
- بایتهای پرچم، با لاگذاری بایت: در این روش فلگ هایی (نشانه) برای مشخص کردن ابتدا و انتهای فریم دادهای استفاده میشود.این روش هم مشکلات خاص خود را دارد چونکه ممکن است بخشی از دادهها شامل بایتهای پرچم قراردادی باشد.
- پرچمهای شروع و پایان، با لاگذاری بیت: در این شیوه هر فریم با طرح بیتی ۰۱۱۱۱۱۱۰ شروع میگردد و در سمت فرسنده به محض مشاهده ۵ بیت ۱ پشت سرهم یک ۰ قرار میدهد. عکس این رویداد در قسمت گیرنده رخ میدهد.
- حالتهای غیر مجاز کُدگذاری لایهٔ فیزیکی: در این روش در اصل نوعی افزونگی داریم. مثلاً در برخی LANها هر بیت داده با دو بیت فیزیکی نشان داده میشود: بیت ۱ با زوج بالا-پایین و بیت ۰ با زوج پایین-بالا.
در بسیاری از پروتکلهای لینک داده برای اطمینان بیشتر از ترکیب روشهای گفته شده استفاده میشود.
[ویرایش] کنترل خطا
جهت کنترل خطای دریافت اطلاعات معمولاً از دو مکانیزم استفاده میشود.
- تصدیق دریافت: گیرنده دریافت بسته را تصدیق میکند.
- استفاده از زمانسنج: هر بسته اگر در مدت زمان معینی به مقصد نرسید، دوباره ارسال میشود.
[ویرایش] کنترل جریان
برای یکی کردن سرعت ارسال و دریافت بستههای اطلاعاتی معمولاً از راهکارهای کنترل جریان استفاده میشود. در زیر چند راهکار را بیان می کنیم.
- کنترل جریان بر اساس بازخور: گیرنده آمادگی خود را برای دریافت بستهها اعلام میکند.
- کنترل جریان بر اساس نرخ
[ویرایش] پروتکلهای لینک داده
- پروتکل یکطرفه نا مقید
- پروتکل توقف-انتظار یکطرفه
- پروتکل یکطرفه برای کانالهای نویز دار
- پروتکل پنجره لغزنده ۱-بیتی
- پروتکل N تا به عقب برگرد
- پروتکل تکرار انتخابی
در این بخش پروتکل یکطرفه نا مقید که سادهترین این پروتکل ها(و البته ناقصترین آنها) را ارائه می کنیم:
/* Protocol 1 (utopia) provides for data transmission in one direction only, from
sender to receiver. The communication channel is assumed to be error free
and the receiver is assumed to be able to process all the input infinitely quickly.
Consequently, the sender just sits in a loop pumping data out onto the line as
fast as it can. */
typedef enum {frame_arrival} event_type;
#include "protocol.h"
void sender1(void)
{
frame s; /* buffer for an outbound frame */
packet buffer; /* buffer for an outbound packet */
while (true) {
from_network_layer(&buffer); /* go get something to send */
s.info = buffer; /* copy it into s for transmission */
to_physical_layer(&s); /* send it on its way */
} /* Tomorrow, and tomorrow, and tomorrow,
Creeps in this petty pace from day to day
To the last syllable of recorded time.
- Macbeth, V, v */
}
void receiver1(void)
{
frame r;
event_type event; /* filled in by wait, but not used here */
while (true) {
wait_for_event(&event); /* only possibility is frame_arrival */
from_physical_layer(&r); /* go get the inbound frame */
to_network_layer(&r.info); /* pass the data to the network layer */
}
}
[ویرایش] ارزیابی پروتکلها
تکنیک هایی جهت ارزیابی پروتکلهای شبکه وجود دارد. این تکنیکها بایستی دقیق و مبتنی بر اصول ریاضی باشد. دو روش زیر از مهمترین این روشها هستند.
[ویرایش] پیوند به بیرون
مدل مرجع OSI
مقایسه مدلهای OSI و TCP/IP
مدل مرجع TCP/IP
شبکههای کامپیوتری - آندرواس. تَنن بام - ویراست چهارم۲۰۰۳