مهندسی اینترنت: لایههای سوم و چهارم
لایه سوم: لایه شبکه (Network Layer)
لایه شبکه مسئول جابجایی بستههای اطلاعاتی از مبدأ به مقصد است. این لایه به عنوان پلی بین لایه انتقال و لایه پیوند داده عمل میکند.
وظایف اصلی لایه شبکه:
-
تبدیل فریم به بسته (Packet Formatting): دادهها در لایه پیوند داده (لایه 2) به صورت فریم هستند. لایه شبکه، تمام هدر و تریلر فریمها را برداشته و آنها را به یک بسته (Packet) تبدیل میکند. پروتکل IP، هدر این بسته را مشخص میکند که شامل چه فیلدها و اطلاعاتی باشد.
-
آدرسدهی (Addressing): آدرسدهی فرستنده و گیرنده، یکی از وظایف اصلی لایه شبکه است. این کار با استفاده از آدرسهای IP انجام میشود که شناسهای منحصر به فرد برای هر دستگاه در شبکه است.
-
مسیریابی (Routing): لایه شبکه مسئول انتخاب مناسبترین مسیر برای انتقال بستهها از مبدأ به مقصد است. این کار با استفاده از الگوریتمهای مسیریابی و جداول مسیریابی در روترها انجام میشود.
-
تطبیق پروتکل (Internetworking): اگر پروتکلهای لایههای زیرین (لایه 1 و 2) فرستنده و گیرنده متفاوت باشند، لایه شبکه مسئول هماهنگی و تطبیق آنهاست. برای مثال، اگر فرستنده از روش Hamming برای کنترل خطا و گیرنده از CRC استفاده کند، لایه 3 وظیفه هماهنگ کردن آنها را دارد.
-
کنترل ازدحام (Congestion Control): اگرچه کنترل ازدحام عمدتاً وظیفه لایه انتقال است، اما مکانیزمهایی برای جلوگیری از ازدحام در لایه شبکه نیز وجود دارد.
-
کیفیت سرویس (Quality of Service - QoS): لایه شبکه میتواند خدمات مختلفی را بر اساس نیازهای بستهها ارائه دهد ، مانند اولویتبندی ترافیک، کاهش تأخیر، تضمین قابلیت اطمینان، و مدیریت پهنای باند.
پروتکل IP (Internet Protocol) IP، پروتکل اصلی لایه شبکه است و وظیفه اصلی آن آدرسدهی و رساندن بستهها به مقصد در شبکههای مختلف است. دو نسخه اصلی IP، یعنی IPv4 و IPv6، وجود دارند.
هدر IPv4 (32-bit): یک بسته IP از دو قسمت سرآیند (Header) و قسمت حمل داده (Payload) تشکیل شده است. مجموعه اطلاعاتی که در قسمت سرآیند بسته IP درج میشود، توسط مسیریابها مورد استفاده و پردازش قرار میگیرد.
-
Version (نسخه): 4 بیت، نسخه IP را مشخص میکند (مثلاً 4).
-
IHL (Internet Header Length - طول سرآیند اینترنت): 4 بیت، طول سرآیند IP را بر اساس کلمات 32 بیتی (4 بایت) مشخص میکند. حداقل طول آن 20 بایت (عدد 5) و حداکثر 60 بایت (عدد 15) است.
-
Type of Service (نوع سرویس - TOS): 8 بیت، نوع سرویس را مشخص میکند و توسط آن ماشین میزبان یا فرستنده از مجموعه مسیریابهای بین راه، تقاضای سرویس ویژهای (مثلاً ارسال با حداقل تأخیر) برای ارسال یک بسته مینماید. دو بیت آن رزرو شده و 6 بیت آن در حال حاضر استفاده میشود.
-
Precedence (اولویت): سه بیت (P0, P1, P2) در فیلد TOS، اولویت پردازش بسته را نشان میدهند. فرستنده در لحظه ارسال این لیبل را روی بسته میزند و در کل مسیر با توجه به این لیبل (اولویت)، پهنای باند و سایر منابع تخصیص داده میشود. این اولویتبندی میتواند شامل “Gold”, “Silver”, “Bronze” باشد که Gold بالاترین اولویت را دارد.
-
Delay (تأخیر): این بیت نشان میدهد که بسته چقدر به تأخیر حساس است. ترافیک به دو دسته “Delay Sensitive Traffic” (حساس به تأخیر) مانند برنامههای Real-time (استریمها، ویدئو کنفرانس) که دارای Deadline هستند، و “Delay Tolerant Traffic” (مقاوم به تأخیر) مانند SMTP (ایمیل) و دانلود فایل (FTP) تقسیم میشود.
-
Reliability (قابلیت اطمینان): نشان میدهد که قابلیت اطمینان چقدر برای ارسال بسته مهم است. این مربوط به Packet loss (نرخ از دست رفتن بستهها) است. برای مثال در FTP، این فیلد باید حتماً 1 باشد.
-
Throughput (توان عملیاتی): نشان میدهد که بسته از مسیری با نرخ گذردهی بالا منتقل میشود. توان عملیاتی، نرخ عبور پاکتها از یک لینک در واحد زمان را مشخص میکند. پهنای باند بیشتر لزوماً به معنای نرخ گذردهی بیشتر نیست.
-
-
Total Length (طول کل): 16 بیت، طول کل بسته IP (هدر + داده) را بر حسب بایت مشخص میکند. بستهها باید در قالب کلمات (Word) با اندازه مشخص (32 یا 64 بیت) ارسال شوند.
-
Identification (شناسایی): 16 بیت، شماره یک دیتاگرام واحد را مشخص میکند. این فیلد برای تمام قطعاتی که متعلق به یک بسته IP هستند و در بین مسیر fragment شدهاند، یکسان است. هر جریان ترافیکی (Traffic Flow) به قسمتهای کوچکتری به نام Packet شکسته میشود و هر Packet دارای یک شماره شناسایی (Identification) است. این لیبل برای جداسازی قسمتهای مختلف یک Flow که به Packetها تقسیم شدهاند، استفاده میشود تا در زمان دریافت به هم متصل نشوند.
-
Flags (پرچمها): 3 بیت.
-
DF (Don’t Fragment - قطعه قطعه نشود): با 1 شدن این بیت در یک بسته IP، هیچ مسیریابی حق ندارد آن را قطعه قطعه کند. اگر این بیت به 1 تنظیم شده باشد و مسیریابی نتواند آن را به دلیل بزرگی اندازه انتقال دهد، به ناچار آن را حذف خواهد کرد.
-
MF (More Fragments - قطعات بیشتر): این فیلد نشان میدهد که آیا بسته IP آخرین قطعه از یک دیتاگرام محسوب میشود یا باز هم قطعه بعدی وجود دارد. در آخرین قطعه، بیت MF صفر خواهد بود و در بقیه الزاما 1 است. زمانی که MF صفر شود، گیرنده اجازه مونتاژ (Reassembly) را دارد.
-
-
Fragment Offset (آفست قطعه): 13 بیت، شماره ترتیب هر قطعه در یک دیتاگرام شکسته شده را مشخص میکند. عددی که در این فیلد قرار میگیرد ضریب 8 دارد.
-
Time To Live (TTL - طول عمر): 8 بیت، طول عمر بسته در واقع Hop count را مشخص میکند. فرستنده یک مقدار اولیه داخل این فیلد قرار میدهد و هر یک از مسیریابهای بین راه یک واحد از مقدار آن کم کرده و آن را به سمت مقصد هدایت میکنند. هرگاه مقدار این فیلد به صفر رسید، مسیریابهای بین راه بسته را دور میریزند. حداکثر TTL میتواند 255 باشد.
-
Protocol (پروتکل): 8 بیت، نوع پروتکلهای لایه بالاتر را مشخص میکند. در واقع گیرنده بسته IP از روی این فیلد تشخیص میدهد که Payload بسته را به کدام پروتکل لایه انتقال باید تحویل دهد. (مثلاً TCP با کد 6 یا UDP با کد 17).
-
Header Checksum (چکسام سرآیند): 16 بیت، برای کشف خطای سرآیند IP استفاده میشود.
-
Source Address (آدرس مبدأ): 32 بیت، آدرس IP فرستنده.
-
Destination Address (آدرس مقصد): 32 بیت، آدرس IP گیرنده.
-
Options (اختیارات): این فیلد اختیاری است و حداکثر میتواند 40 بایت باشد و شامل اطلاعاتی است که میتواند به مسیریابها در مورد یافتن مسیر مناسب کمک کند.
-
Payload (داده): در این فیلد دادههای دریافتی از لایه بالاتر قرار میگیرد.
هدر IPv6 (128-bit): IPv6 آدرسدهی 128 بیتی را معرفی میکند.
- Version (نسخه): 4 بیت، نسخه IP را مشخص میکند (مثلاً 6).
- Traffic Class (کلاس ترافیک): 8 بیت، معادل فیلد Type of Service در IPv4 است و کلاس ترافیک را مشخص میکند (مثلاً Gold, Silver, Bronze).
- Flow Label (برچسب جریان): 20 بیت، معادل فیلد Identification در IPv4 است و شماره جریان را مشخص میکند. این فیلد به روترها کمک میکند تا بستههایی که به یک جریان داده تعلق دارند را شناسایی کنند.
- Payload Length (طول محموله): 16 بیت، طول داده IP را مشخص میکند.
- Next Header (هدر بعدی): 8 بیت، معادل فیلد Protocol در IPv4 است و پروتکل لایه انتقال را مشخص میکند.
- Hop Limit (محدودیت گام): 8 بیت، معادل فیلد TTL در IPv4 است و طول عمر بسته را مشخص میکند.
- Source Address (آدرس مبدأ): 128 بیت، آدرس IP فرستنده.
- Destination Address (آدرس مقصد): 128 بیت، آدرس IP گیرنده.
آدرسهای IP - کلاسبندی و مفاهیم مرتبط: آدرسهای IP سلسله مراتبی هستند، یعنی از دو بخش NetID (شماره شبکه) و HostID (شماره میزبان) تشکیل شدهاند. تمام آدرسهایی که بخش NetID آنها با هم برابرند مربوط به یک شبکه هستند.
-
Class A: رنج 0.0.0.0 تا 127.255.255.255. اولین 8 بیت برای NetID و 24 بیت بعدی برای HostID است.
-
Class B: رنج 128.0.0.0 تا 191.255.255.255. اولین 16 بیت برای NetID و 16 بیت بعدی برای HostID است.
-
Class C: رنج 192.0.0.0 تا 223.255.255.255. اولین 24 بیت برای NetID و 8 بیت بعدی برای HostID است.
-
Class D: رنج 224.0.0.0 تا 239.255.255.255، برای ارتباطات چندپخشی (Multicast) به کار میروند.
-
Class E: رنج 240.0.0.0 تا 255.255.255.255، رزرو شده و برای استفاده در آینده هستند.
-
Subnet Mask (ماسک زیرشبکه): یک عدد 32 بیتی دیگر است که مشخص میکند چه بخشی از آدرس IP مربوط به NetID و چه بخشی مربوط به HostID است. برای به دست آوردن آدرس شبکه، آدرس IP و Subnet Mask با هم AND منطقی میشوند. بیتهای 1 در Subnet Mask مشخصکننده بیتهای مربوط به NetID و بیتهای صفر مشخصکننده بیتهای مربوط به HostID هستند.
آدرسهای خاص:
-
0.0.0.0: زمانی استفاده میشود که فرستنده آدرس IP خودش را نمیداند. اگر تمام بیتهای مربوط به شماره شبکه و HostID را صفر قرار دهیم، آدرس به معنی آدرس خود میزبان (فرستنده) است.
-
255.255.255.255: آدرس Broadcast است و به معنی آن است که مقصد بسته تمام میزبانهای داخل آن شبکه میباشند. اگر تمام بیتهای بخش NetID و HostID را 1 قرار دهیم، آدرس به معنی آدرس Broadcast در تمام شبکهها است.
-
127.x.x.x (Loop Back): این آدرس میزبانی را تعیین نمیکند بلکه به صورت قراردادی به عنوان آدرس “حلقه بازگشت” جهت اهداف اشکالزدایی و نیز تست نرمافزارهای تحت شبکه کاربرد دارد. وقتی آدرس مقصد بستهای *. *.127 باشد، پروتکل IP آن بسته را تحویل لایه پایینتر نمیدهد بلکه آن را دوباره به لایه بالایی (انتقال) برمیگرداند.
-
Default Gateway (دروازه پیشفرض): اگر فرستنده و گیرنده در دو شبکه مجزا قرار داشته باشند، فرستنده داده را به دروازه پیشفرض ارسال میکند. آدرس IP گیرنده در کل مسیر ثابت است ولی آدرس MAC گیرنده گام به گام (Hop by Hop) تغییر میکند.
-
آدرسهای Valid IP و Private IP: آدرسهای Valid IP آدرسهایی هستند که در کل شبکه اینترنت شناخته شدهاند. آدرسهای Private IP آدرسهایی هستند که تنها در شبکه محلی معتبر هستند و در اینترنت اعتبار ندارند. محدوده آدرسهای شخصی (Private IP) عبارتند از: 10.0.0.0/8، 172.16.0.0/12 (یعنی 172.16.0.0 تا 172.31.255.255)، 192.168.0.0/16.
Big Endian و Little Endian: این مفاهیم به نحوه ذخیرهسازی بایتهای یک کلمه چند بایتی در حافظه کامپیوتر مربوط میشوند:
-
Big Endian: در این معماری، پرارزشترین بایت (Most Significant Byte - MSB) در آدرس حافظه پایینتر (اولین آدرس) ذخیره میشود و بایتهای کمارزشتر در آدرسهای بالاتر قرار میگیرند. کامپیوترهای سری SUN از این روش استفاده میکنند.
-
Little Endian: در این معماری، کمارزشترین بایت (Least Significant Byte - LSB) در آدرس حافظه پایینتر (اولین آدرس) ذخیره میشود و بایتهای پرارزشتر در آدرسهای بالاتر قرار میگیرند. کامپیوترهای شخصی با پردازنده سری 80X86 و پنتیوم از این روش استفاده میکنند.
-
استاندارد TCP/IP: پروتکل TCP/IP، استاندارد Big Endian را مبنا قرار داده است. این بدین معناست که وقتی یک بسته IP از یک ماشین Big Endian به یک ماشین Little Endian یا برعکس ارسال میشود، باید تبدیل بایتها صورت گیرد تا محتوای بسته دریافتی فاقد ارزش نشود.
پروتکل ICMP (Internet Control Message Protocol) ICMP پروتکل مدیریتی (کنترلی) لایه IP است و در کنار پروتکل IP برای گزارش انواع خطا و ارسال پیام به مبدأ بسته در هنگام بروز مشکلات استفاده میشود. پیامهای ICMP در داخل یک بسته IP حمل میشوند.
فیلدهای ICMP:
-
Type (نوع): 8 بیت، نوع پیام را مشخص میکند و ساختار فیلدهای پارامتر و دیتا به این فیلد بستگی دارد.
-
Code (کد): 8 بیت، هر نوع پیام ممکن است چندین زیرگروه داشته باشد.
-
Checksum (چکسام): 16 بیت، همانند IP عمل میکند و برای کنترل خطا است.
-
Parameters (پارامترها): فیلدی اختیاری است.
-
Data (Payload - داده): دادهای که قرار است ارسال شود.
انواع پیامهای ICMP:
-
Destination Unreachable (مقصد غیرقابل دسترس): Type 3. بسته نمیتواند به مقصد تحویل داده شود (مثلاً بافر پر است یا گیرنده خاموش است).
-
Time Exceeded (زمان منقضی شده): Type 11. یعنی در زمان پیشبینی شدهی TTL به مقصد نمیرسد پس دور ریخته میشود و در نتیجه یک پیام ICMP فرستاده میشود.
-
Parameter Problem (مشکل پارامتر): Type 12. زمانی که مقدار یک یا چند فیلد از هدر IP نامعتبر باشد.
-
Source Quench (توقف فرستنده): Type 4. با دریافت این پیام مبدأ یا مسیریاب باید حجم و سرعت ارسال بستهها را پایین بیاورد. این پیام زمانی ارسال میشود که فرستنده سرعت ارسال زیادی دارد و گیرنده به علت پر شدن بافر نمیتواند دریافت کند.
-
Redirect (تغییر مسیر): Type 5. زمانی ارسال میشود که یکی از مسیریابهای شبکه بسته دریافتیاش را باید به همان مسیریاب یا گرهای که بسته را از آن دریافت کرده است بازگرداند.
-
Echo Request (درخواست اکو) و Echo Reply (پاسخ اکو): Type 8 و 0. در دستور Ping استفاده میشود ، فرستنده این پیام را میفرستد و گیرنده همان پیام را بازمیگرداند. برای بررسی فعال بودن یک ماشین در شبکه استفاده میشود.
-
Timestamp Request (درخواست زمانسنج) و Timestamp Reply (پاسخ زمانسنج): Type 13 و 14. علاوه بر موارد بالا، زمان دریافت و ارسال مجدد بسته را نیز درج میکند. برای محاسبه زمان رفت و برگشت بسته (Round Trip Time - RTT) استفاده میشود.
پروتکل ARP (Address Resolution Protocol) و RARP (Reverse ARP)
-
ARP: هرگاه بخواهیم آدرس MAC یک کامپیوتر را از روی آدرس IP آن به دست آوریم، از پروتکل ARP استفاده میکنیم. کامپیوتر فرستنده یک ARP Request تولید کرده و داخل آن پیامی با مضمون “چه کسی آدرس MAC کامپیوتری با آدرس IP … را دارد؟” را در شبکه Broadcast مینماید. تنها کامپیوتری به آن پاسخ میدهد که صاحب آدرس IP فوق است.
-
RARP: برعکس ARP عمل میکند؛ یعنی آدرس MAC را به IP تبدیل میکند.
-
محدودیت: هدر (Header) این دو پروتکل برای روترها تعریف نشده است. بنابراین بستههای این پروتکلها نمیتوانند از روتر عبور کرده و فقط در شبکه محلی کار میکنند.
-
راهحل: برای عبور از روتر و ارتباط با شبکههای دیگر، باید از پروتکل Bootp (Bootstrap Protocol) استفاده کرد که هدر آن برای روترها تعریف شده است.
DHCP (Dynamic Host Configuration Protocol) پروتکلی است جهت تخصیص دادن آدرسهای IP و سایر تنظیمات شبکه (نظیر دروازه پیشفرض، الگوی زیرشبکه، آدرس سرور DNS، آدرس سرور WINS و …) به تجهیزات شبکه به صورت خودکار (Automatic) و پویا. آدرس IP میتواند به صورت دائمی تخصیص بیابد یا برای مدت زمانی معین در اختیار Client قرار بگیرد. این پروتکل از پروتکل UDP جهت انتقال پیامهای خود استفاده میکند. Client روی پورت 68 و Server روی پورت 67 کار میکند.
مکانیزم کاری DHCP:
-
DHCP Discover: Client در هنگام بوت شدن، یک پیغام DHCP Discover را Broadcast میکند.
-
DHCP Offer: تمام DHCP Serverهای شبکه آدرس پیشنهادی خود را درون یک پیام به Client ارسال میکنند.
-
DHCP Request: Client پس از جمعآوری تمام پیشنهادها، یکی را انتخاب کرده و یک پیام DHCP Request تولید میکند و آدرس را از سرور درخواست مینماید. این پیام Broadcast میشود تا تمام سرورها مطلع شوند.
-
DHCP ACK: سروری که به آن درخواست داده، با دادن پیام DHCP ACK به صورت Unicast، IP را به Client تخصیص میدهد. در اینجا مراحل تخصیص آدرس کامل شده است. Client میتواند با دادن درخواست DHCP Release به سرور، IP گرفته شده را آزاد کند.
مکانیزم تمدید IP در DHCP:
-
زمان T1: معمولاً 1/2 زمان T (حداکثر زمان تعیین شده برای اجاره IP) است. پس از زمان T1، Client سعی میکند با ارسال پیام DHCP Request به سروری که IP را از آن اجاره کرده، مدت زمان اجاره را تمدید کند.
-
زمان T2: معمولاً 7/8 زمان T است. اگر سرور در پاسخ به درخواست تمدید، DHCP ACK بفرستد، IP برای مدت زمان معین دوباره در اختیار Client باقی میماند. در صورتی که زمان T2 سپری شود و Client موفق به تمدید اجاره IP از سرور نشود، یک پیام به تمام سرورها به صورت Broadcast ارسال میکند تا IP جدیدی دریافت کند.
-
DHCP Relay: معمولاً مسیریابها به پیامهای Broadcast اجازه عبور نمیدهند (از جمله پیامهای DHCP). بنابراین اگر لازم بود که به Nodeهای یک شبکه که توسط روترها به چندین زیرشبکه تقسیم شده است، توسط DHCP آدرس IP به صورت خودکار تخصیص داده شود، مسیریابها باید پیامهای DHCP را به سمت DHCP Server عبور دهند. به این کار DHCP Relay گویند. مسیریاب پیام DHCP را به صورت Unicast به سرور میفرستد.
مسیریابی (Routing) - مفاهیم، الگوریتمها و استراتژیها مسیریابی فرآیند انتخاب بهینه مسیر برای انتقال بسته از مبدأ به مقصد است. این کار بر اساس معیارهایی مانند هزینه (تعداد هاپ، تأخیر، پهنای باند و غیره) انجام میشود.
مراحل مسیریابی:
- Routing: الگوریتمهای مسیریابی را اجرا میکنند و اطلاعات شبکه بین مسیریابها مبادله میشود و بر اساس این اطلاعات جداول مسیریابی را تشکیل میدهند.
- Forwarding: در این فاز تنها پورت خروجی بر اساس اطلاعات موجود در جداول مسیریابی انتخاب میشود.
روشهای عمده مسیریابی در شبکههای کامپیوتری:
- مدار مجازی (Virtual Circuit Switching - VC): در این روش برای اولین ارسال عملیات مسیریابی انجام میگیرد و یک مسیر بین فرستنده و گیرنده برقرار میشود و بستههای بعدی همگی از این مسیر عبور خواهند کرد.
- دیتاگرام یا سوئیچینگ بسته: در این روش به ازای هر بسته عملیات مسیریابی صورت میگیرد و ممکن است مسیر بستههای مختلف متفاوت باشد.
تقسیمبندی الگوریتمهای مسیریابی از دیدگاه هوشمندی و تصمیمگیری:
-
Static (ایستا): مسیر به صورت دستی تنظیم میشود و هیچ اعتنایی به توپولوژی شبکه و وضعیت ترافیکی مسیرها صورت نمیگیرد.
-
Dynamic (پویا): مسیریابی بر اساس آخرین وضعیت توپولوژی شبکه و ترافیک شبکه انجام میشود و جداول مسیریابی به صورت دورهای بهروزرسانی میشوند.
تقسیمبندی الگوریتمهای مسیریابی از دیدگاه جمعآوری و پردازش اطلاعات:
-
متمرکز (Centralized / Link State - LS): به الگوریتمهایی که برای مسیریابی به اطلاعات کاملی از شبکه و هزینه ارتباط بین دو مسیریاب نیازمندند، الگوریتمهای متمرکز گفته میشود. این الگوریتمها را Link State نیز میگویند. هر مسیریاب اطلاعات کاملی از کل شبکه (تمامی مسیریابها و مسیرها) را در اختیار دارد. معروفترین الگوریتم آن Link State است.
-
مراحل LS:
-
مسیریابهای مجاور را شناسایی کرده و آدرس آنها را به دست آورد.
-
تأخیر (هزینه) مسیریابهای مجاور خود را اندازه گیری نماید.
-
یک بسته (LS Packet) حاوی اطلاعات را ساخته و تمامی اطلاعاتی را که از مسیریابهای مجاور خود به دست آورده است را در آن قرار دهد.
-
بستههای ایجاد شده را برای تمامی مسیریابهای شبکه ارسال کند (با استفاده از Flooding).
-
با استفاده از الگوریتمی مناسب بهینهترین مسیر را بین هر دو مسیریاب در شبکه به دست آورد.
-
-
محتوای بستههای LS: آدرس جهانی مسیریاب تولیدکننده بسته، شماره ترتیب هر بسته، طول عمر بسته (TTL)، آدرس مسیریابهای مجاور و هزینه رسیدن به آنها.
-
نمونه الگوریتم LS: OSPF (Open Shortest Path First).
-
-
توزیع شده (Distributed / Distance Vector - DV): در این الگوریتمها مسیریاب اطلاعات کاملی از شبکه ندارد بلکه فقط قادر است هزینه ارتباط به مسیریابهایی که به طور مستقیم با آنها در ارتباط است را به دست آورد. هر مسیریاب جداول مسیریابی خود را برای مسیریابهای مجاور ارسال میکند. هر مسیریاب فقط اطلاعات مورد نیاز خود (هزینه ارتباط با مسیریابهای مجاور) را دارد و جداول مسیریابی خود را برای همسایگانش ارسال میکند. معروفترین الگوریتم آن Distance Vector است.
-
مراحل DV:
- هر مسیریاب هزینه خطوطی را که به صورت فیزیکی با مسیریابهای دیگر دارد حساب کرده و جدول خود مینویسد.
- هر مسیریاب به صورت دورهای جداول مسیریابی خود را برای مسیریابهای مجاور ارسال میکند.
- هر مسیریاب پس از دریافت جداول مسیریابی از مسیریابهای همسایه طبق یک الگوریتم ساده هزینه مسیرها را محاسبه میکند.
-
مشکل: مشکل پروتکل DV عدم همگرایی سریع جداول مسیریابی در هنگام خرابی یک مسیر است (شمارش تا بینهایت).
-
نمونه الگوریتم DV: RIP (Routing Information Protocol).
-
تقسیمبندی الگوریتمهای مسیریابی بر اساس زمان اجرا:
- Proactive (پیش دستانه): در پروتکلهای مسیریابی proactive اطلاعات کنترلی مسیریابی در دورههای معین زمانی مبادله میشوند تا گرهها قادر باشند اطلاعات مناسبی از توپولوژی شبکه به دست آورند.
- Reactive (واکنشی): پروتکلهای مسیریابی واکنشی یا reactive به روش پاسخ به تقاضا (On demand) عمل میکنند.
مسیریابی سلسله مراتبی (Hierarchical Routing): در این نوع مسیریابی مسیریابها در گروههایی به نام ناحیه (Area) دستهبندی میشوند و هر مسیریاب فقط نواحی و مسیریابهای درون ناحیه خود را میشناسد. این روش تعداد رکوردهای جدول مسیریابی را کاهش میدهد.
-
Interior Gateway Protocol (IGP): پروتکلهای مسیریابی درونی (درون یک AS - Autonomous System). مانند RIP (DV-based) و OSPF (LS-based).
-
Exterior Gateway Protocol (EGP): پروتکلهای مسیریابی بین ناحیهای (بین ASها). نمونه الگوریتم EGP: BGP (Border Gateway Protocol).
استراتژیهای مسیریابی:
-
Fixed (ثابت): مسیریابی فقط برای اولین بسته یک جریان داده (Data Flow) انجام میشود و سپس تمام بستههای آن جریان از همان مسیر منتقل میشوند.
- مزیت: سرعت مسیریابی بالا و تأخیر انتقال پایین، چون مسیریابی فقط یک بار انجام میشود.
- عیب: ایستا است و تغییرات ترافیکی و توپولوژی شبکه بر آن تأثیر نمیگذارد.
-
Flooding (سیلآسا): در مسیریابی سیلآسا هر بسته ورودی روی تمام لینکهای خروجی غیر از لینکی که بسته از آن وارد شده است ارسال میشود. تمام روترهای بعدی نیز همین کار را انجام میدهند تا بسته در تمام شبکه پخش شود. این روش بیشتر برای ارسالهای Broad Cast (پخش فراگیر) استفاده میشود.
- مزیت: سریعترین الگوریتم مسیریابی است و اگر مسیری وجود داشته باشد آن را پیدا میکند. برای اعمال تنظیمات یا پیکربندی در تمام دستگاههای شبکه استفاده میشود.
- عیب: ایجاد ترافیک ناگهانی (Burst Traffic) در شبکه.
-
Random (تصادفی): هر بسته (Packet) از یک مسیر تصادفی ارسال میشود.
- مزیت: مسیریابی بسیار سریع انجام میشود.
- عیب: همیشه یک مسیر خوب انتخاب نمیشود. تضمینی برای ارائه خدمات و تحویل بسته به گیرنده وجود ندارد و ممکن است ترتیب بستهها به هم بخورد.
-
Adaptive (تطبیقی): بر اساس نیازهای QoS بسته، مناسبترین مسیر برای آن انتخاب میشود. مثلاً اگر بسته Real-time باشد، از مسیر با تأخیر کم ارسال میشود، یا اگر Multimedia باشد، از مسیر با پهنای باند زیاد ارسال میشود.
- مزیت: مسیر کاملاً مطابق نیازهای بسته انتخاب میشود و میتوان مسیر را برای بسته رزرو کرد تا نیازهای QoS تأمین شود.
- عیب: مسیریابی کند انجام میشود.
مفاهیم کنترل ازدحام (Congestion Control) در لایه شبکه:
-
Leaky Bucket (سطل چکه کننده): یک الگوریتم کنترل ترافیک است که برای هموار کردن نرخ ترافیک ارسالی به شبکه استفاده میشود. این الگوریتم شبیه یک سطل با یک سوراخ در پایین است که آب (بستهها) با نرخ ثابت از آن خارج میشود. اگر نرخ ورود بستهها از ظرفیت خروج سطل بیشتر شود، بستهها بافر میشوند و اگر بافر پر شود، بستههای اضافی دور ریخته میشوند. این مکانیزم جریان ترافیک را به یک نرخ ثابت محدود میکند، حتی اگر نرخ ورود ترافیک متغیر باشد.
-
Token Bucket (سطل توکن): یک الگوریتم کنترل ترافیک انعطافپذیرتر از Leaky Bucket است. در این مکانیزم، توکنها (مجوزهای ارسال بسته) با نرخ ثابتی به سطل اضافه میشوند. هر بسته برای ارسال به یک توکن نیاز دارد. اگر توکن در سطل موجود باشد، بسته ارسال میشود و توکن مصرف میشود. اگر توکن موجود نباشد، بسته باید منتظر بماند تا توکن جدیدی به سطل اضافه شود. این مکانیزم اجازه میدهد که ترافیک در بازههای زمانی کوتاه (که سطل پر از توکن است) با نرخ بالاتری ارسال شود، اما در بلندمدت، نرخ متوسط ترافیک به نرخ تولید توکنها محدود میشود.
لایه چهارم: لایه انتقال (Transport Layer)
لایه انتقال، خدمات سازماندهی شده، مطمئن و مبتنی بر اصول سیستم عامل را برای برنامههای کاربردی در لایه بالاتر فراهم میکند. همچنین مشکلات و ناکارآمدیهای لایه شبکه (مانند پروتکل IP) را جبران و ترمیم میکند.
وظایف اصلی لایه انتقال:
-
تبدیل Packet به Segment: لایه انتقال، دادهها را از Packet به Segment تبدیل میکند. هر Segment شامل یک هدر (Header) با اطلاعات کنترلی مانند شماره پورت (Port Number) و شماره ترتیب (Sequence Number) است.
-
برقراری ارتباط مطمئن برای ارسال داده: تضمین تحویل Segment به گیرنده.
-
حفظ ترتیب دادهها: اطمینان از رسیدن دادهها به ترتیب صحیح به مقصد.
-
تضمین خدمات کیفیت سرویس (QoS): ارائه خدمات بر اساس نیازهای ترافیک.
-
کنترل جریان (Flow Control): تطبیق سرعت ارسال فرستنده با سرعت دریافت گیرنده.
-
کنترل ازدحام (Congestion Control): مدیریت بار ترافیکی شبکه برای جلوگیری از پر شدن بیش از حد خطوط ارتباطی یا بافر تجهیزات.
-
قطعهقطعه کردن داده (Fragmentation) و مونتاژ داده (Reassembly): تقسیم دادههای بزرگ به قطعات کوچکتر برای ارسال و بازسازی آنها در مقصد.
-
پشتیبانی از زمانسنجها: مدیریت زمانبندی عملیات.
این وظایف در لایه انتقال به صورت End-to-End (فقط بین فرستنده و گیرنده) انجام میشوند، برخلاف لایههای پایینتر که Hop-by-Hop (در هر گام توسط روترها) عمل میکنند.
مفاهیم پورت و سوکت:
-
Port Number (شماره پورت): شماره شناسایی برنامه یا پروسهای است که در ماشین مبدأ دادهها را تولید میکند یا باید دادهها به آن تحویل داده شود.
-
پورتهای Well-Known (معروف) از 1 تا 1024 رزرو شدهاند (و در منبع دیگر 0 تا 1023). (مثلاً پورت 80 برای HTTP، پورت 25 برای SMTP، پورت 20 و 21 برای FTP).
-
پورتهای بالای 1024 برای استفاده موقت و اختصاصی برنامهها هستند.
-
-
Socket Address (آدرس سوکت): زوج آدرس IP و شماره پورت است (IP Address: Port Number) که یک پروسه منحصر به فرد روی یک ماشین خاص در شبکه را مشخص میکند. مثال: 192.168.1.5:1099, 192.168.1.7:80.
پروتکل TCP (Transmission Control Protocol) TCP عمدهترین پروتکل مورد استفاده لایه انتقال در اینترنت است. این پروتکل اتصالگرا (Connection-oriented) و قابل اعتماد (Reliable) است. TCP تضمین میکند تمام Segmentها به درستی به گیرنده تحویل داده شوند.
کاستیهای IP و راهکارهای TCP:
-
کاستیهای IP: عدم تضمین در آماده بودن ماشین مقصد جهت دریافت بسته، عدم تضمین در به ترتیب رسیدن بستههای متوالی و صحت آنها، عدم تنظیم سرعت ارسال و تحویل بستهها، عدم تمایز در دریافت بستههای تکراری در مقصد (Duplication Problem)، عدم توزیع بستهها بین پروسههای مختلف اجرا شده بر روی یک ماشین واحد.
-
راهکارهای TCP:
-
برقراری یک ارتباط و اقدام به هماهنگی بین مبدأ و مقصد قبل از ارسال هرگونه داده (Three-Way Handshake).
-
قراردادن شماره ترتیب برای دادهها.
-
تنظیم کد 16 بیتی کشف خطا در مبدأ و بررسی مجدد آن در مقصد جهت اطمینان از صحت دادهها.
-
استفاده از الگوریتم پویا جهت تنظیم مجموعه زمانسنجها.
-
قراردادن آدرس پورت پروسه فرستنده و گیرنده در سرآیند بسته ارسالی.
-
Acknowledgements (تأیید دریافت).
-
Window Size (اندازه پنجره) برای کنترل جریان داده و اعلام فضای خالی بافر گیرنده.
-
هدر TCP (TCP Header):
-
Source Port (پورت مبدأ): 16 بیت، آدرس پورت پروسه مبدأ.
-
Destination Port (پورت مقصد): 16 بیت، آدرس پورت پروسه مقصد.
-
Sequence Number (شماره ترتیب): 32 بیت، مشخصکننده شماره ترتیب آخرین بایت قرارگرفته شده در فیلد داده از بسته جاری. برای مشخص کردن ترتیب بستههای ارسالی و تشخیص تکراری بودن یا جدید بودن بسته دریافتی.
-
Acknowledgement Number (شماره تصدیق): 32 بیت، مشخصکننده شماره ترتیب بایتی است که فرستنده بسته منتظر دریافت آن است.
-
TCP Header Length (طول هدر TCP): 4 بیت، مشخصکننده طول سرآیند بسته TCP بر مبنای کلمات 32 بیتی. حداقل مقدار آن 5 است.
-
Reserved (رزرو شده): 6 بیت، برای استفاده در آینده.
-
Flags (پرچمها): 6 بیت کنترلی.
-
URG (Urgent): اگر مقدار فیلد = 1 باشد، نشاندهنده معتبر بودن مقدار موجود در فیلد Urgent Pointer است.
-
ACK (Acknowledgement): اگر مقدار فیلد = 1 باشد، نشاندهنده معتبر بودن مقدار موجود در فیلد Acknowledgement Number است.
-
PSH (Push Function): اگر مقدار فیلد = 1 باشد، نشاندهنده تقاضای فرستنده اطلاعات از گیرنده اطلاعات جهت بافرنکردن دادهها و تحویل سریع بسته به برنامههای کاربردی به منظور انجام پردازشهای بعدی است.
-
RST (Reset the Connection): اگر مقدار فیلد = 1 باشد، نشاندهنده قطع ارتباط به صورت یکطرفه و ناهماهنگ است.
-
SYN (Synchronize Sequence Numbers): تغییر مقدار این فیلد جهت برقراری ارتباط توسط ماشین است.
-
FIN (No More Data from Sender): اگر مقدار فیلد = 1 باشد، مشخصکننده قطع و پایان ارسال اطلاعات هنگام اتمام دادههای ارسالی توسط طرفین است.
-
-
Window Size (اندازه پنجره): 16 بیت، مشخصکننده مقدار ظرفیت خالی فضای بافر گیرنده است.
-
Checksum (چکسام): 16 بیت، حاوی کد کشف خطا است. برای کشف خطا در هدر و داده استفاده میشود.
-
Urgent Pointer (اشارهگر اضطراری): 16 بیت، اشارهگر به موقعیت دادههای اضطراری موجود در بسته TCP است.
-
Options (اختیارات): فیلد اختیاری است و شامل مقدار حداکثر طول بسته است. (متغیر (0 یا بیشتر کلمات 32 بیتی)، فیلد اختیاری برای اطلاعات اضافی).
-
Data (Optional): دادههای اختیاری.
روش برقراری ارتباط در پروتکل TCP (Three-Way Handshake): این روش سه مرحلهای است.
-
SYN (Connection Request): ارسال یک بسته TCP خالی از داده از طرف شروعکننده ارتباط با بیتهای SYN=1 و ACK=0 و قراردادن عدد x درون فیلد شماره ترتیب.
-
SYN-ACK (Connection Accepted): اگر طرف دریافتکننده بسته تقاضا را قبول کند، یک بسته خالی با SYN=1 و ACK=1، Acknowledgement Number=x+1 و Sequence Number=y ارسال میکند.
-
ACK (Connection Acknowledged): تصدیق شروع ارتباط از طرف شروعکننده ارتباط با قراردادن مقادیر SYN=1، ACK=1، Acknowledgement Number=y+1 و Seq.No=x+1 در بیتها.
روند خاتمه ارتباط TCP:
- ارسال بسته TCP با بیت FIN = 1 از طرف درخواستکننده اتمام ارسال.
- موافقت طرف مقابل با اتمام ارتباط یکطرفه و ادامه ارسال داده توسط آن.
- قطع ارتباط دوطرفه با 1 نمودن مقدار بیت FIN در آخرین بسته ارسالی و تصدیق پایان ارتباط از طرف مقابل.
روش کنترل جریان دادهها در پروتکل TCP (Flow Control): TCP از بافر جهت کنترل جریان دادهها استفاده میکند. دادهها قبل از ارسال به برنامه کاربردی لایه بالاتر بافر شده و به صورت دستهای تحویل خواهد شد. حجم فضای آزاد بافر در فیلد Window Size در هنگام ارسال بسته TCP به طرف مقابل اعلام میشود. فرستنده حداکثر به اندازه این مقدار میتواند داده ارسال کند. اگر Window Size صفر شود، فرستنده متوقف میشود تا گیرنده مجدداً آمادگی خود را اعلام کند.
الگوریتم Slow Start در کنترل ازدحام TCP:
-
Congestion Window (پنجره ازدحام): مقداری که فرستنده نگهداری میکند و مربوط به ظرفیت حمل زیرشبکه در مسیر مبدأ به مقصد است.
-
Threshold (آستانه): مقدار Threshold برابر است با حداقل مقدار بافر گیرنده با ظرفیت خط (Threshold = Min(Window Size, Link Capacity)).
-
روند Slow Start:
-
فرستنده مقدار پنجره ازدحام را برابر یک سگمنت قرار میدهد. (طول سگمنت در حین اتصال توافق شده).
-
اگر اعلام وصول این قطعه قبل از انقضای مهلت مقرر دریافت شد، اندازه طول پنجره ازدحام به صورت نمایی دو برابر میشود (2, 4, 8, 16 و غیره). این افزایش نمایی تا جایی ادامه مییابد که اندازه پنجره ازدحام به مقدار Threshold برسد.
-
هنگامیکه طول پنجره ازدحام به اندازه Threshold رسید، با اعلام وصول تمام سگمنتها، تنها یک سگمنت به اندازه پنجره ازدحام اضافه میشود (افزایش خطی).
-
در صورتی که مهلت اعلام وصول منقضی شود (Timeout رخ دهد)، اندازه Threshold به اندازه نصف پنجره ازدحام فعلی تنظیم میشود و پنجره ازدحام مجدداً به یک سگمنت تنظیم میشود. (یک مدت تصادفی صبر میکند و سپس الگوریتم را Restart میکند: اندازه سگمنت را دوباره به اندازه اولیه (مثلاً 2) برمیگرداند و Threshold را نیز نصف مقدار قبلی میکند.).
-
زمانسنجها و عملکرد آنها در پروتکل TCP (TCP Timers): عملکرد صحیح پروتکل TCP به استفاده درست از زمانسنجها وابسته است.
-
Retransmission Timer (RT): پس از برقراری اتصال و ارسال بسته برای پروسه مقصد، زمانسنجی (RT) با مقدار پیشفرض تنظیم و فعال میگردد و شروع به شمارش معکوس مینماید که اگر در مهلت مقرر پیغام دریافت بسته (ACK) نرسید، رخداد انقضای زمان تکرار روی داده و ارسال مجدد بسته صورت گیرد.
-
Keep-Alive Timer: جهت تمایز بین توقف ارسال اطلاعات و قطع ارتباط، فرستنده با استفاده از زمانسنج Keep-Alive Timer بستههای خالی (معمولاً بین 5 تا 45 ثانیه) به طرف مقابل میفرستد تا از پابرجا بودن ارتباط اطمینان حاصل کند.
-
Persistence Timer: زمانی استفاده میشود که بافر گیرنده پر شده باشد (Window Size = 0) و فرستنده متوقف شود. Persistence Timer مدت زمانی را مشخص میکند که فرستنده باید منتظر آمادگی مجدد گیرنده باشد.
-
Quiet Timer (Time-Wait Timer): هنگام بسته شدن یک ارتباط TCP با شماره پورت خاص، تا مدت زمان معینی که زمانسنج Quiet Timer تعیین مینماید (مقدار پیشفرض = 30 تا 120 ثانیه)، هیچ پروسهای اجازه استفاده از شماره پورت بسته شده را ندارد. این برای رسیدن بستههای سرگردان ناشی از ارتباط پایانیافته به مقصد است.
-
Idle Timer: اگر تلاش برای تکرار ارسال یک بسته بیش از حد متعارف انجام شود (مقدار معمول آن 360 ثانیه)، ارتباط TCP به صورت یکطرفه رها کرده و قطع مینماید.
پروتکل UDP (User Datagram Protocol) UDP یک پروتکل بدون اتصال (Connectionless) و غیرقابل اعتماد (Unreliable) است. UDP هیچ مکانیزمی برای اطمینان از تحویل دادهها، حفظ ترتیب یا کنترل جریان ندارد. UDP ساده و سریع است.
کاربردهای UDP:
-
مناسبترین کاربرد پروتکل UDP برای پروسههایی است که عملیات آنها مبتنی بر یک تقاضا و یک پاسخ میباشد (مانند سیستم DNS و TFTP).
-
کاربردهای که میتوانند مقداری از دست رفتن داده را تحمل کنند اما به تأخیر کم یا بدون تأخیر نیاز دارند (مانند VoIP و Video Streaming).
-
ارتباطات یکطرفه که قابلیت اطمینان مورد نیاز نیست یا میتواند توسط برنامه مدیریت شود.
هدر UDP (UDP Header): هدر UDP بسیار سادهتر از TCP است و فقط 8 بایت طول دارد.
-
Source Port (پورت مبدأ): 16 بیت، مشخصکننده آدرس پورت پروسه مبدأ.
-
Destination Port (پورت مقصد): 16 بیت، مشخصکننده آدرس پورت پروسه مقصد.
-
UDP Length (طول UDP): 16 بیت، طول کل بسته UDP (سرآیند و دادهها) بر حسب بایت.
-
UDP Checksum (چکسام UDP): 16 بیت، درج کد کشف خطا در این فیلد است. این فیلد اختیاری است (جهت ارسال دیجیتال صدا و تصویر مقدار تمام بیتها صفر).
مفاهیم تکمیلی در شبکه
-
Bitrate (نرخ بیت): تعداد بیتهای منتقل شده در هر واحد زمان است که معمولاً با بیت بر ثانیه (bps) اندازهگیری میشود. این مفهوم به سرعت انتقال دادهها مربوط میشود.
-
Throughput (توان عملیاتی): نرخ واقعی انتقال دادههای مفید (نه شامل هدرها و بستههای تکراری) در یک دوره زمانی مشخص است. این مقدار اغلب کمتر از Bitrate یا پهنای باند تئوری است.
-
Delay (تأخیر): مدت زمانی که طول میکشد تا یک بسته از یک گره به گره دیگر برسد. تأخیر میتواند شامل تأخیر انتشار، تأخیر صف، تأخیر پردازش و تأخیر انتقال باشد.
-
Jitter (لرزش): تغییرات تصادفی در زمانبندی رسیدن بستههای داده (تأخیر) در یک جریان ترافیکی است. این پدیده بیشتر در برنامههای Real-time مانند VoIP و Video Streaming که به زمانبندی حساس هستند، مشکل ایجاد میکند.
تفاوتهای بین کلمات زیر در شبکه:
-
Availability (در دسترس بودن): به معنای درصد زمانی است که یک سیستم یا سرویس به درستی کار میکند و برای استفاده در دسترس است. این مفهوم بیشتر به خرابیهای سیستمی و قطعیها مربوط میشود.
-
Accessibility (قابلیت دسترسی): به معنای توانایی کاربر برای دسترسی و استفاده از یک سیستم یا منبع است. این ممکن است به موانع فیزیکی، نرمافزاری یا حتی محدودیتهای قانونی مربوط شود.
-
Reliability (قابلیت اطمینان): به معنای احتمال اینکه یک سیستم یا مؤلفه برای مدت زمان مشخصی در شرایط معین بدون شکست کار کند. در شبکه، این به معنی تضمین تحویل دادهها بدون خطا و از دست رفتن است. مثال: پروتکل TCP یک پروتکل قابل اعتماد است زیرا مکانیزمهایی برای اطمینان از رسیدن دادهها (مانند ACK و Retransmission) دارد. در مقابل، UDP غیرقابل اعتماد است.
-
Failure (شکست): حالتی است که یک سیستم یا مؤلفه نتواند وظیفه مورد انتظار خود را انجام دهد. این ممکن است به دلیل خطا (Error) یا عیب (Fault) باشد.
-
Error (خطا): به معنای انحراف از حالت صحیح یا مورد انتظار است. در شبکه، خطاها ممکن است به دلیل نویز در کانال، سختافزار معیوب یا تداخل رخ دهند.
-
Fault (عیب): نقص یا مشکل در یک سیستم یا مؤلفه است که میتواند منجر به خطا و سپس شکست شود. عیب میتواند سختافزاری یا نرمافزاری باشد.
-
Packet Loss (از دست رفتن بسته): به معنای عدم رسیدن بستههای داده از مبدأ به مقصد در شبکه است. این اتفاق ممکن است به دلیل ازدحام شبکه، خطاهای انتقال یا مشکلات سختافزاری رخ دهد. مثال: در پروتکل IP، اگر TTL یک بسته به صفر برسد، آن بسته دور انداخته میشود که منجر به Packet Loss میشود.