در طی سالهای اخیر مدلهای شبکهای بسیاری به وجود آمدند، اما امروزه پروتکل TCP/IP به محبوبترین مدل دنیا تبدیل شده است. در کنار تمامی وظایفی که لایه Network برعهده دارد، دو پروتکل اصلی در این لایه وجود دارد: پروتکل IP version 4 (IPv4) و پروتکل IP version 6 (IPv6). هر دوی این پروتکلها در نهایت عملکرد یکسانی را برای لایه Network دارند، اما در جزئیات با یکدیگر تفاوتهایی دارند. در این درس میخواهیم، وظایف پروتکل IPv4 را برای لایه Network شرح دهیم.
نکته: در تمامی طول این دوره آموزشی، زمانی که از واژه IP استفاده میشود، منظور از آن پروتکل IPv4 میباشد.
پروتکل IP بر روی نحوه مسیریابی برای اطلاعات درحال ارسال، تمرکز دارد. پروتکل IP نگرانی در مورد نحوه ارسال اطلاعات بر روی بستر فیزیکی ندارد، و این وظیفه به لایه پایینتر محول میشود. در عوض، این پروتکل، به جای اهمیت دادن به بستر فیزیکی، به جزئیات منطقی اهمیت میدهد. لایه Network به صورت ویژه، نحوه ارسال پکتها به صورت انتها به انتها بر روی شبکه TCP/IP را مشخص میکند، حتی زمانی که این پکتها از شبکههای LAN و WAN مختلفی عبور میکند.
در این بخش، به بررسی مبانی IP Routing به طور عمیق میپردازیم. در ابتدا، پروتکل IP پروسهای را تعریف میکند که طی آن یک پکت از سیستم مبدأ به سیستم مقصد منتقل میشود، آن هم زمانی که پروتکلهای لایه Data-Link مدام در حال تغییر کردن هستند. در ادامه این درس با بررسی قوانین آدرسدهی IP متوجه میشویم که این نوع آدرسدهی با استفاده از گروهبندی این آدرسها در گروههایی به نام Subnet، چگونه به مسیریابی IP کمک میکند.
روترها و کامپیوترها (که در شبکه TCP/IP هاست نامیده میشوند)، با یکدیگر کار میکنند تا پروسه مسیریابی را اجرا کنند. سیستم عامل هاستها دارای نرمفزار TCP/IP میباشد، که شامل نرمافزاری است که لایه Network را پیادهسازی میکند. هاستها با استفاده از این نرمافزار، انتخاب میکنند که پکتها را به کجا ارسال کنند، که اغلب به این بستهها به یک روتر ارسال میشود. سپس این روترها در مورد مقصد بعدی پکتها تصمیم میگیرند. این روترها و هاستها به کمک یکدیگر پکتها را به مقصد مورد نظر میرسانند. این روند در شکل ۱-۱۴ نشان داده شده است.
بسته پکتی که توسط PC1 ایجاد شده، از بالای شکل ۱-۱۴ به سمت PC2 در پایین شکل حرکت میکند. در ادامه در مورد منطق مسیریابی لایه Network در هر دستگاه و در کل مسیر بحث خواهیم کرد.
در مثال فوق، PC1 با انجام کمی تحلیل پایهای، تشخیص میدهد که پکت خود را باید به روتر تحویل دهد که این روتر هم پکت را به سمت مقصد ارسال کند. هاست PC1 در واقع آدرس مقصد را بررسی کرده و متوجه میشود که آدرس PC2 (150.150.4.10) با آدرس خودش در یک شبکه LAN نمیباشد. بنابراین، منطق هاست PC1 به او میگوید که پکت خود را به دستگاهی ارسال کند که مسیرها مختلف شبکه را میشناسد. از نظر PC1، روتر همسایهای که با او در یک شبکه LAN قرار دارد بهترین گزینه است، و این روتر به عنوان Default Router هاست PC1 انتخاب میشود.
برای ارسال این بسته به Default Router، فرستنده یک فریم Data-Link ایجاد کرده و آن را از طریق بستر فیزیکی به روتر همسایه ارسال میکند. این فریم در قسمت Data خود، پکت مورد نظر PC1 را حمل میکند. همچنین، این فریم از آدرسدهیهای لایه ۲ برای این کار استفاده میکند، و اطمینان حاصل میکند که روتر همسایه این فریم را دریافت میکند.
نکته: برای Default Router از واژه Default Gateway هم استفاده میشود.
تمامی روترها از یک روند عمومی یکسانی برای مسیریابی پکتها استفاده میکنند. هر روتر دارای یک جدول مسیریابی یا IP Routing Table میباشد. این جدول متشکل از لیست گروههای آدرس IP میباشد، که به آن IP Network یا IP Subnet گفته میشود. زمانی که روتر، بستهای را دریافت کند، ابتدا آدرس مقصد بسته را با جدول مسیریابی خود مقایسه میکند تا موردی را با آن تطابق دهد. با انجام این کار میتواند مسیری را برای آن مقصد انتخاب کند، و سپس بسته را از این مسیر به سمت مقصد هدایت کند.
در شکل ۱-۱۴، روتر R1 در جدول مسیریابی خود برای آدرس مقصد (۱۵۰.۱۵۰.۴.۱۰) موردی را پیدا میکند، که به روتر اعلام میکند برای رسیدن به این مقصد باید بسته را به روتر R2 تحویل دهد. روتر R2 هم همین روند را تکرار میکند، و با توجه به جدول مسیریابی خود متوجه میشود که باید بسته را از طریق لینک Ethernet WAN، به روتر R3 ارسال کند.
مفهوم مسیریابی مانند زمانی است که شما در حال رانندگی در یک بزرگراه هستید و به یک چندراهی میرسید. شما برای مقصد مورد نظر خود به علائم و تابلوها نگاه میکنید، سپس مسیر مورد نظر خود را پیدا کرده و به سمت آن حرکت میکنید. همین کار را روترها نیز انجام میدهند، زمانی که برای پیدا کردن مسیر به جدول مسیریابی خود نگاه میکنند، درست مانند زمانی است که شما با توجه به تابلوهای موجود مسیر خود را پیدا میکنید.
آخرین روتر در طول مسیر، روتر R3 میباشد که تقریبا با همان منطق روتر R1 و R2 عمل میکند، البته کمی تغییر جزئی. R3 نیاز دارد تا پکت را به طور مستقیم به PC2 ارسال کند. در نگاه اول، این تفاوت ناچیز دیده میشود. در بخش بعدی، زمانی که با نحوه استفاده لایه Network از شبکههای LAN و WAN آشنا شوید، متوجه تفاوتهای موجود خواهید شد.
زمانی که منطق مسیریابی لایه Network به نحوه انتقال فیزیکی اهمیتی نمیدهد، بیتها هنوز نیاز دارند که منتقل شوند. برای انجام این کار، منطق لایه Network در هاست یا روتر باید پکت را به پروتکلهای لایه Data-Link تحویل دهد، و از این لایه میخواهد که به صورت فیزیکی بسته را بر روی بستر فیزیکی موجود ارسال کند. لایه Data-Link هم هدر و تریلر متناسب را به این بسته اضافه میکند و یک فریم را میسازد.
فرایند مسیریابی، این پکت لایه Network را به صورت انتها به انتها (end to end) از طریق شبکه ارسال میکند، در حالی که هر فریم Data-Link، فقط در قسمت کوچکی از این انتقال در طول کل مسیر نقش دارد. به صورت پی در پی هر فریم لایه Data-Link، فقط پکت را به دستگاه بعدی منتقل میکند. به طور خلاصه، لایه Network در مورد هدف، با زاویه بازتری فکر میکند، به این صورت که “این پکت را به روتر یا هاست مشخصی ارسال کن”. این در حالی است که، لایه Data-Link بیشتر در مورد نحوه بستهبندی اطلاعات در فریم و ارسال آن بر روی بستر فیزیکی فکر میکند. لیست زیر به صورت خلاصه، قدمهای اصلی که در فرایند مسیریابی روترها برای هر پکت رخ میدهد و فریمهای ورودی هر اینترفیس را شرح میدهد:
قدم ۱. روتر با استفاده از FCS لایه Data-Link مطمئن میشود که فریم دریافتی، بدون خطا بوده است؛ اگر هم خطایی وجود داشت فریم دور انداخته میشود.
قدم ۲. فرض کنید فریم در مرحله قبل بدون مشکل بوده است، هدر و تریلر از این فریم جدا شده و دو انداخته میشود تا فقط بسته IP باقی بماند.
قدم ۳. آدرس IP مقصد درون این پکت با جدول مسیریابی روتر مقایسه شده تا مسیری مناسب برای این پکت یافت شود. این مسیر اینترفیس خروجی را به سمت مقصد بعدی پکت، روی روتر مشخص میکند.
قدم ۴. در مرحله آخر، این بسته IP، مجدد درون یک فریم لایه Data-Link جدید با یک هدر و تریلر متناسب بستهبندی شده، و بر روی بستر فیزیکی ارسال میشود.
شکل ۲-۱۴ مجدد مثالی از ارسال یک پکت توسط PC1 به PC2 را به همراه بررسی جزئیات بیشتری از منطق هر دستگاه، نمایش میدهد. هر قسمت از توضیحات شامل جزئیاتی در مورد نحوه ایجاد یک فریم جدید Data-Link توسط PC1 و هر یک از روترها میباشد.
لیست زیر، منطق ارسال پکت توسط هر روتر را شرح میدهد، در عین حال، بر روی نحوه ترکیب شدن فرایند مسیریابی با لایه Data-Link تمرکز دارد.
مرحله ۱: PC1 پکت را به Default Router خود ارسال میکند. منطق لایه Network موجود در PC1 یک بسته IP را ایجاد کرده که شامل آدرس IP هاست PC2 (150.150.4.10) به عنوان آدرس مقصد میباشد.لایه Network همچنین، با بررسی آدرس مقصد، متوجه میشود که این آدرس، با آدرس خودش در یک گروه یا Subnet نمیباشد، پس PC1 نیاز دارد تا پکت خود را به R1 (که به عنوان Default Router برای این هاست انتخاب شده است) تحویل دهد. PC1 این پکت را درون یک فریم اترنت قرار داده، و در قسمت Destination MAC، آدرس MAC روتر R1 را قرار میدهد. در آخر هم PC1 این فریم را بر روی بستر اترنت ارسال میکند.
مرحله ۲: روتر R1 فریم دریافتی را بررسی کرده و پکت را به روتر R2 انتقال میدهد. به دلیل این که فریم اترنت دریافتی در قسمت Destination MAC، آدرس MAC روتر R1 را دارد، این روتر تصمیم میگیرد تا فریم مورد نظر را بررسی کند. روتر R1 ابتدا FCS فریم را چک کرده تا مطمئن شود که خطایی وجود ندارد. سپس، از درون پکت، آدرس IP مقصد (۱۵۰.۱۵۰.۴.۱۰) را با جدول مسیریابی خود مقایسه میکند و میبیند که برای Subnet یا گروه آدرسی ۱۵۰.۱۵۰.۴.۰، مسیری وجود دارد. به دلیل این که آدرس IP مقصد یعنی ۱۵۰.۱۵۰.۴.۱۰ عضوی از این Subnet میباشد، روتر R1 تصمیم میگیرد از این مسیر برای پکت مورد نظر استفاده کند و پکت را از طریق اینترفیس مربوطه (Serial0) به سمت روتر R2 (150.150.2.7) ارسال کند. برای این کار، روتر R1 ابتدا باید این پکت را درون یک فریم HDLC بستهبندی کند.
مرحله ۳: روتر R2 فریم دریافتی را بررسی کرده و پکت را به روتر R3 ارسال میکند. روتر R2 تمامی کارهایی که توسط روتر R1 انجام شد را باید تکرار کند. زمانی که روتر R2 فریم HDLC را دریافت میکند، ابتدا فیلد FCS آن را بررسی میکند، و زمانی که خطایی پیدا نکرد، هدر و تریلر این فریم را دور انداخته و از درون پکت، آدرس IP مقصد (۱۵۰.۱۵۰.۴.۱۰) را با جدول مسیریابی خود مقایسه کرده و مسیری برای گروه آدرسی ۱۵۰.۱۵۰.۴.۰ پیدا میکند، مسیری که به روتر R2 میگوید برای رسیدن به این مقصد، باید بسته را از طریق اینترفیس Fast Ethernet 0/0 به next-hop یعنی روتر R3 (150.150.3.1) ارسال کند.اما ابتدا، روتر R2 باید این بسته IP را درون یک فریم اترنت بستهبندی کند، و در قسمت Destination MAC، آدرس MAC روتر R3 قرار دهد.
مرحله ۴: روتر R3 فریم دریافتی را مورد بررسی قرار داده و پکت را به PC2 تحویل میدهد. درست مانند روتر R1 و R2، روتر R3 نیز ابتدا FCS را بررسی کرده تا اگر خطایی مشاهده کرد فریم را دور بیاندازد. در صورت عدم مشاهده خطا، آدرس MAC مقصد را با آدرس MAC خود مقایسه کرده و در صورت یکسان بودن، هدر و تریلر را از پکت جدا کرده و در مرحله بعدی آدرس IP مقصد (۱۵۰.۱۵۰.۴.۱۰) موجود در پکت را با جدول مسیریابی خود مقایسه میکند، و متوجه میشود که مسیری برای گروه آدرسی ۱۵۰.۱۵۰.۴.۰ از طریق اینترفیس اترنت خود دارد. اما این بار قرار نیست پکت به روتر دیگری ارسال شود، به این دلیل که روتر R3 به طور مستقیم به گروه آدرسی ۱۵۰.۱۵۰.۴.۰ متصل است. تمام کاری که روتر R3 باید اینجا انجام دهد، این است که پکت مورد نظر را درون یک فریم اترنت جدید به همراه هدر و تریلر بستهبندی کند، اما این بار در قسمت آدرس Destination MAC، آدرس MAC هاست PC2 را قرار میدهد.
به دلیل این که روترها هر بار یک فریم Data-Link جدید با هدر و تریلر ایجاد میکنند، و به دلیل این که این هدر جدید شامل آدرسهای مربوط به لایه Data-Link میباشد، روترها و هاستها باید به طریقی تصمیم بگیرند که چه آدرسهایی را در هدر قرار دهند. برای مثال، زمانی که یک روتر به آدرس MAC یک روتر دیگر یا هاست نیاز دارد، برای به دست آوردن این آدرس از پروتکلی به نام Address Resolution Protocol یا ARP استفاده میکند. این پروتکل به صورت اتوماتیک آدرسهای Data-Link مربوط به آدرسهای IP متصل به شبکه LAN را پیدا میکند. برای مثال، در مرحله آخر، در پایین شکل ۲-۱۴، روتر R3 قبل از این که پکت را به سمت PC2 ارسال کند، با استفاده از پروتکل ARP یک بار آدرس MAC هاست PC2 را پیدا میکند و این آدرس را برای مدتی در حافظه خود ذخیره میکند.
پروتکل IP برای لایه Network آدرسهایی را فراهم میکند که از این آدرس برای شناسایی هاستها و روترها درون شبکه TCP/IP استفاده میشود. این ایده اساسا شبیه به آدرسهای پستی کار میکند. هر اینترفیسی که انتظار دارد تا بستههای IP را دریافت کند، خودش نیاز به یک آدرس IP دارد، درست مانند زمانی است که شما برای دریافت نامه از اداره پست، نیاز به یک آدرس پستی دارید. در این قسمت به صورت مختصر با بازههای آدرسی و Subnetها آشنا خواهید شد، که آدرسهایی را که توسط پروتکل IP تعریف شدهاند را گروهبندی میکنند.
مدل TCP/IP آدرسهای IP را با یکدیگر گروهبندی میکند تا آدرسهایی که در یک شبکه فیزیکی با یکدیگر کار میکند، در یک گروه یا بازه آدرسی قرار گیرند. پروتکل IP این گروهها را، بازههای آدرسی یا Subnet مینامد. هر بازه آدرسی یا Subnet، مانند کد پستی مربوط به هر شهر میباشد، که از یک الگوی خاص برای هر یک از خانههای موجود در یک منطقه استفاده میشود.
پروتکل IP قوانین خاصی را در مورد این که آدرسهای IP در کدام Subnet قرار گیرند را، مشخص کرده است. به صورت عددی، آدرسهایی در یک گروه هستند که قسمت اول آدرس آنها با یکدیگر برابر باشد. برای مثال، در شکلهای ۱-۱۴ و ۲-۱۴ بازههای آدرسی به صورت زیر اتنخاب شدهاند:
از منظر مسیریابی، گروهبندی آدرسهای IP به این منظور است که جدول مسیریابی سادهتر کم حجم تر باشد. در این صورت، یک روتر میتواند در جدول مسیریابی خود، برای هر یک از Subnetها، مسیرهای مورد نظر را در یک خط و رکورد قرار دهد، به جای این که به ازای هر یک از آدرسهای IP، یک رکورد در این جدول اضافه کند.
در حالی که در مثال بالا فقط یک مورد از نحوه گروهبندی آدرسها توضیح داده شد، قوانین گروهبندی IPها با استفاده از Subnetها دارای جزئیات بیشتری میباشد، که برای مسلط شدن به این قوانین، به تمرین بیشتری نیاز است. در فصلهای بعدی، این جزئیات به صورت کامل شرح داده خواهد شد. با این حال، خلاصهای از دو قانون بنیادی Subnetting به صورت زیر میباشد:
در فرایند مسیریابی همچنین از هدر IP نیز استفاده میشود، همانطور که در شکل ۳-۱۴ نشان داده شده است. درون هدر، آدرس IP مبدا ۳۲ بیتی، و همچنین آدرس IP مقصد ۳۲ بیتی نشان داده شده است. البته این هدر شامل فیلدهای دیگری هم میشود، که فقط تعدادی از آنها در این دوره بررسی میشوند. اما این نکته را بدانید که، کل هدر IP 20 بایت میباشد و آدرسهای IP مبدا و مقصد درون این هدر قرار دارند. همچنین توجه داشته باشید، هر بار که روتر برای مسیریابی پکت، هدر لایه Data-Link را دور میاندازد، هدر و پکت IP دست نخورده باقی میماند.
برای این که منطق مسیریابی به درستی بر روی هاستها و روترها کار کند، هر هاست و روتر باید در مورد شبکه TCP/IP اطلاعاتی داشته باشد. هاستها نیاز دارند تا آدرس Default Gateway خود را بدانند تا بتوانند برای رساندن پکتها به مقصد، آنها را به Default Gateway خود تحویل دهند. روترها هم نیاز دارند تا از مسیرهای شبکه مطلع باشند تا بتوانند پکتهایی که دریافت میکنند را به سمت شبکه مقصد درستی ارسال کنند.
بهترین راه برای این که روترها از تمام مسیرهای موجود در شبکه آگاهی داشته باشند، این است که برای این روترها از یک پروتکل مسیریابی یا Routing Protocol استفاده کنیم. راه حل جایگزین هم این است که، مهندس شبکه تمامی مسیرهای شبکه را به صورت دستی، به تمامی روترها معرفی کند. با این حال اگر برای تمام روترها از یک پروتکل مسیریابی با تنظیمات درستی استفاده شود، روترها پیامهایی را به یکدیگر ارسال میکنند. در نتیجه، تمامی روترها، مسیرهای موجود به سمت بازههای آدرسی یا Subnetهای کل شبکه را یاد میگیرند.
پروتکل IP از تعداد کمی از پروتکلهای مسیریابی برخوردار است. تمامی این پروتکلها از ایده و فرایند کلی یکسانی استفاده میکنند تا مسیرها را از یکدیگر یاد بگیرند، اما این پروتکلها در نحوه اجرای فرایند و جزئیات با یکدیگر تفاوت دارند. به هر حال، تمام این پروتکلها، برای یادگیری مسیرها، ۳ مرحله پایهای زیر را طی میکنند:
مرحله ۱: هر روتر، مستقل از پروتکل مسیریابی خود، به ازای هر Subnet که به صورت مستقیم به خودش متصل است (directly connected)، یک مسیر در جدول مسیریابی خود اضافه میکند.
مرحله ۲: پروتکل مسیریابی هر روتر، در مورد مسیرهای موجود در جدول مسیریابی خود، به همسایههای خود گزارش میدهد، که شامل مسیرهای directly connected و مسیرهایی که از روترهای همسایه یاد گرفته است، میباشد.
مرحله ۳: بعد از یادگیری مسیرهای جدید از روترهای همسایه، پروتکل مسیریابی روترها باید یک مسیر به جدول مسیریابی خود اضافه کند، که در آن، روتر next-hop برای این مسیر (که از طریق همی مسیر با روتر دیگر همسایه شده است) مشخص شده است، و از طریق این مسیر میتوان به مقصد مورد نظر دست یافت.
همچنین، توجه داشته باشید که، در مرحله آخر، روترها ممکن است از بین چندین مسیر برای یک Subnet، یک مسیر را انتخاب کنند. زمانی که این اتفاق رخ میدهد، روترها بهترین مسیر موجود (که براساس معیاری به نام متریک مشخص میشود) را برای رسین به یک Subnet، درون جدول مسیریابی خود قرار میدهند.
شکل ۴-۱۴ مثالی از نحوه کارکرد یک پروتکل مسیریابی را نشان میدهد، که در این مثال از همان سناریوی شکل ۱-۱۴ و ۲-۱۴ استفاده شده است. در این سناریو، بازه آدرسی ۱۵۰.۱۵۰.۴.۰، که شامل تمامی آدرسهایی است که با ۱۵۰.۱۵۰.۴ شروع میشود، در پایین شکل قرار گرفته است. شکل زیر، از جهت پایین به بالا، تبلیغاتها یا advertisementهای (بستههایی که برای معرفی یک Subnet به روترهای دیگر ارسال میشود) بازه آدرسی ۱۵۰.۱۵۰.۴.۰ را نشان میدهد، که با جزئیات در ادامه شرح داده شده است.
با دنبال کردن مراحل A تا F بر روی شکل، متوجه خواهید شد که چگونه هر روتر مسیر خود را برای بازه آدرسی ۱۵۰.۱۵۰.۴.۰ یاد میگیرد.
مرحله A: بازه آدرسی ۱۵۰.۱۵۰.۴.۰ به عنوان یک شبکه LAN، در قسمت پایین شکل وجود دارد، که مستقیما به روتر R3 نیز متصل میباشد.
مرحله B: روتر R3 یک مسیر connected برای بازه آدرسی ۱۵۰.۱۵۰.۴.۰ در جدول مسیریابی خود اضافه میکند، این کار بدون دخالت پروتکلهای مسیریابی انجام میشود
مرحله C: روتر R3 از طرف پروتکل مسیریابی خود پیامی را به روتر R2 ارسال میکند، این پیام که Routing Update نامیده میشود و شامل محتویات جدول مسیریابی میباشد، باعث میشود که روتر R2، مسیری را برای بازه آدرسی ۱۵۰.۱۵۰.۴.۰ یاد بگیرد.
مرحله D: روتر R2 یک مسیر برای بازه آدرسی ۱۵۰.۱۵۰.۴.۰ به جدول مسیریابی خود اضافه میکند.
مرحله E: روتر R2 نیز محتویات جدول مسیریابی خود را به روتر R1 ارسال میکند، و موجب میشود که روتر R1 نیز، مسیری را برای بازه آدرسی ۱۵۰.۱۵۰.۴.۰ یاد بگیرد.
مرحله F: روتر R1 نیز مسیری برای بازه آدرسی مورد نظر، به جدول مسیریابی خود اضافه میکند. برای این مسیر، در جدول مسیریابی، اینترفیس Serial0 روتر R1 به عنوان اینترفیس خروجی به سمت روتر R2 (به سمت آدرس ۱۵۰.۱۵۰.۲.۷)، انتخاب میشود.
محمد حاجیآبادی هستم، کارشناس رشته کامپیوتر و علاقهمند به حوزه فناوری اطلاعات و شبکههای کامپیوتری.