درس شبکههای کامپیوتری یکی از دروس پراهمیت دوره کارشناسی رشتههای مهندسی کامپیوتر و فناوری اطلاعات محسوب میشود. این درس دروازه ورود به دنیای شبکه است، زیرا بدون گذراندن آن بهدشواری میتوان درک درستی از معماری و کارکردهای شبکه پیدا کرد. در این نوشتار تلاش خواهیم کرد مروری بر مفاهیم و سرفصلهای درس شبکههای کامپیوتری داشته باشیم، مراجع معتبر آن را معرفی کنیم و برای دانشجویانی که این درس را در برنامه آموزشی خود دارند، پیشنهادهایی ارائه دهیم.
هنگامیکه نشانی یک وبسایت را در مرورگر وارد میکنید، فرآیندهای زیادی باید انجام شود تا صفحه وبسایت روی نمایشگر شما پدیدار شود. پس از گذراندن درس شبکههای کامپیوتری یک درک کلی از این فرآیندها پیدا خواهید کرد. ممکن است پیش از گذراندن درس نیز با برخی از فرآیندهای شبکه آشنا شده باشید، اما هدف درس شبکههای کامپیوتری، ترسیم یک تصویر کلی از سیستم شبکه و ایجاد قدرت تحلیل در دانشجوی مهندسی بهمنظور طراحی و پیادهسازی یک شبکه یا ارزیابی عملکرد آن است.
همانند هر درس دیگر، درس شبکههای کامپیوتری یک سری پیشنیاز و همنیاز دارد که در دانشگاههای مختلف یکسان نیست. جدولی که در ادامه مشاهده میکنید پیشنیازها و همنیازهای این درس را در چند دانشگاه تهران و بر اساس اطلاعات موجود در وبسایت آنها نشان میدهد. درس آمار و احتمال از این جهت بهعنوان پیشنیاز قرار دادهشده که در تحلیل و ارزیابی شبکه از فرآیندهای تصادفی استفاده میشود. همچنین سیستمهای عامل مفاهیم مشترک فراوانی با شبکه دارند، بنابراین این دو درس گاهی همنیاز در نظر گرفته میشوند.
خوشبختانه درس شبکههای کامپیوتری معادلات و فرمولهای چندان پیچیدهای ندارد! با این حال درک برخی مفاهیم آن ساده نیست و به مطالعه همراه با تمرکز نیاز دارد؛ اما درس شبکه چگونه فصلبندی میشود؟ پاسخ در مفهوم لایهبندی نهفته است که در بخش بعدی توضیح داده میشود.
هر سیستم پیچیدهای را با شکستن به اجزای کوچکتر، بهتر میتوان طراحی و تحلیل کرد. شبکه نیز یک سیستم واقعاً پیچیده است. به همین دلیل، شبکه را به چندین لایه دستهبندی کردهاند که هر لایه بخشی از وظایف را بر عهده دارد. این لایهبندی مشابه ارتباط بین دو نفر از طریق پست است. نویسنده نامه، آن را نوشته و در پاکت قرار میدهد. اداره پست کاری به محتویات نامه ندارد و تنها بر اساس نشانی روی پاکت آن را به مقصد میرساند. اداره پست ممکن است همه نامههای به مقصد یک شهر را درون بستهای قرار دهد و از یک راننده کامیون بخواهد آن بسته را به شهر مقصد برساند. در این صورت، تنها چیزی که برای اداره پست اهمیت دارد، سالم رسیدن بسته به مقصد است و نگرانی از بابت نحوه سوختگیری کامیون ندارد. همچنین، گیرنده نامه کاری به اینکه نامه با هواپیما یا کامیون به او رسیده یا اینکه کارمندان اداره پست چه کسانی بودهاند، ندارد و تنها محتویات درون نامه برایش مهم است.
مثال فوق یک مثال کلاسیک برای درک اهمیت و نحوه لایهبندی شبکه است. در مراجع مختلف چنین مثالی برای آموزش مفهوم لایهبندی استفاده میشود. برای مثال، کتاب کروز-راس (که در بخشهای بعدی آن را معرفی خواهیم کرد) مسافرت با هواپیما را مثال میزند. چنانچه در شکل (۱) مشخص است، بخشهای مختلف فرودگاه عملکرد مستقل از یکدیگر دارند.
شکل ۱
هر شبکه کامپیوتری نیز چندین لایه دارد که هر کدام در یک فصل مجزا آموزش داده میشود. نخستین لایه، لایه فیزیکی است که دانشجویان رشته مهندسی مخابرات بهخوبی با آن آشنا میشوند. در لایه فیزیکی مسئله این است که چگونه یکرشته اطلاعات را بین دو نقطه جابجا کنیم (مانند راننده کامیون در مثال ارتباط پستی). لایه بعدی، لایه پیوند داده (data link) است و لایه فیزیکی را مدیریت میکند. لایه شبکه به مسیریابی و آدرسدهی بستههای اطلاعات میپردازد. لایه بعدی لایه انتقال است که لایه شبکه را مدیریت میکند. در نهایت لایه کاربرد (application) قرار دارد که شیوه ساختاردهی به اطلاعات را مشخص میسازد. پروتکل HTTP یک نمونه از پروتکلهای لایه کاربرد است. ممکن است برای فردی که قبلاً با این مفاهیم روبرو نشده، جملات قبلی مبهم به نظر برسد. دور از انتظار نیست که در غیر این صورت نیازی به تعریف یک درس سه واحدی نبود!
دو رویکرد بالا به پایین و پایین به بالا برای آموزش شبکه وجود دارد که یکی از آنها برحسب صلاحدید استاد انتخاب میشود. هر مرجع درس نیز فصلبندی خود را بر اساس یکی از این دو رویکرد انجام میدهد؛ اما بالا به پایین یعنی چه؟ لایه بالا همان لایه کاربرد است که دانشجویان دانشکده کامپیوتر با آن بیشتر مانوس هستند: طراحی وب، برنامهنویسی و هر سرویسی که روی شبکه تعریف میشود.
در رویکرد بالا به پایین، آموزش شبکه ابتدا از این لایه شروع میشود و در نهایت به لایه فیزیکی ختم میشود؛ اما رویکرد پایین به بالا از لایه فیزیکی، یعنی همان انتقال اطلاعات خام شروع میشود که برای دانشجویان مهندسی برق مناسبتر است. دانشجویی که با سیگنالهای اطلاعات آشنا است، برایش جذاب خواهد بود که بداند چگونه از این موضوع در یک شبکه استفاده میشود. بهبیاندیگر، یک تصویر کلی از ماجرا پیدا خواهد کرد.
در شبکههای کامپیوتری، اطلاعات بهصورت بستههای مجزا فرستاده میشود. در هر لایه، اطلاعاتی به بسته اضافه میشود که مبنای عملکرد آن لایه است. این اطلاعات اضافه، سرآیند (header) نام دارد که در کنار دادههای کاربران ارسال میشود. برای مثال، سرآیند لایه شبکه حاوی آدرس IP مبدا و مقصد است که برای مسیریابی استفاده میشود. اگر به همان مثال ارسال نامه با پست برگردیم، نشانی و اطلاعات روی پاکت سرآیند محسوب میشود. سرآیند برای تحویلگیرنده نهایی اهمیتی ندارد، بلکه تنها ابزاری است برای کارکرد درست شبکه. شکل(۲) نشان میدهد که چگونه هر لایه سرآیند خود را به بسته اضافه میکند و تحویل لایه بعدی میدهد.
شکل ۲
از سوی دیگر، پروتکلهای فراوانی برای لایههای مختلف شبکه طراحی شده است. پروتکلها یک سری سازوکار هستند که اجزای شبکه طبق آن رفتار میکنند تا ارتباط برقرار شود. در همان مثال ارتباط پستی، ممکن است اداره پست مقصد لیست نامههای رسیده را به اداره مبدا بفرستد تا مشخص شود همه نامهها بهدرستی تحویل دادهشده یا خیر. پروتکلهای شبکه نیز چنین پیغامهایی را تبادل میکنند. برای نمونه، اگر نشانی وبسایت شبکه (www.shabakeh-mag.com) را در مرورگر خود وارد کنید، پیغامهای HTTP بین مرورگر شما و سِرور وبسایت تبادل میشود تا مشخص شود چه اطلاعاتی باید از سرور به شما ارسال شود (یا از شما دریافت شود). قبل از برقراری ارتباط HTTP، یک ارتباط TCP نیز بین کامپیوتر شما و سرور وبسایت برقرار میشود که آن نیز وظایف خود را دارد (از جمله تنظیم نرخ تبادل داده).
در هر لایه شبکه، با شماری از پروتکلها آشنا خواهید شد که درک آنها بخش اصلی درس محسوب میشود. همچنین، سرآیندهای لایهها آموزش داده میشود که هر کدام اجزای مختلفی دارد. برای مثال، سرآیند IP در شکل (۳)، علاوه بر آدرس IP (دو کادر سبزرنگ) اجزای دیگری نیز دارد. پیشنهاد میشود که قبل از پرداختن به اجزای سرآیند هر لایه، پروتکلها را بهخوبی مطالعه کنید. در این صورت، نقش هر جز از سرآیند بهتر درک میشود.
شکل ۳
با توجه به اهمیت درس شبکه، کتابهای زیادی برای آموزش آن نوشتهشده است. بیشتر این کتابها با نام نویسنده آن شناخته میشوند. یکی از شناختهشدهترین کتابها، کتاب کروز-راس است که ویرایش هفتم آن در سال ۲۰۱۷ عرضه شد. این کتاب رویکرد بالا به پایین را انتخاب کرده و لایه فیزیکی نیز جزو سرفصلهای آن نیست. نگارش کتاب ساده و روان و پر از تصاویر با گرافیک بالا است که مطالعه آن را لذتبخش میسازد.
کتاب لئونگارسیا مرجع دیگر درس است که آخرین ویرایش آن در سال ۲۰۰۲ عرضه شده و متاسفانه قدیمی است. با این حال، مفاهیم شبکه را عمیق و دقیق توضیح داده و همچنان یک مرجع ارزشمند بهشمار میآید. این کتاب رویکرد پایین به بالا دارد و لایه فیزیکی را نیز به طور مفصل شرح داده است.
از مراجع دیگر درس میتوان به کتابهای تننباوم، فروزان و استالینگز اشاره کرد که هر استاد با توجه به شناخت خود ممکن است یکی از این کتابها یا کتابهای دیگر را مرجع درس قرار دهد. ترجمههای بیشتر کتابها نیز در بازار یافت میشود که پیشنهاد میشود، همان کتاب زبان اصلی را بخوانید. در کتابهای ترجمهشده بسیاری از اصطلاحات تخصصی به فارسی ترجمه شده که گاهی ابهام ایجاد میکند. البته اگر از سطح زبان انگلیسی خود رضایت ندارید، کتاب فارسی میتواند سرعت مطالعه را افزایش دهد.
هیچ راه میانبری برای مطالعه درس شبکه وجود ندارد (همانند هر موضوع علمی دیگر). ممکن است تبلیغاتی در ارتباط با آزمون کنکور و … ببینید که وعده آموزش سریع آن را به شما میدهند، اما این روشها در بهترین حالت تنها به درد همان آزمون میخورند! همچنین باید توجه داشت که درس شبکههای کامپیوتری متفاوت از دورههای مربوط به سیسکو، مایکروسافت و … است. آنها نیز در جای خود ارزشمند هستند، اما درس شبکههای کامپیوتری یک درس بنیادین برای درک مفاهیم شبکه است. بنابراین مطالعه مراجع علمی (که فسفرهای مغز را میسوزاند!) بهترین راه برای آموختن این درس است.
برای تعمیق آموختهها، پیشنهاد میشود، هر موضوعی را که در ارتباط با شبکه برایتان رخ میدهد، بهدقت واکاوی کنید، مثلاً اینکه چرا دانلود با نرمافزارهای مدیریت دانلود سریعتر از دانلود مستقیم در مرورگر است یا اینکه چرا IP سیستم ما همیشه ثابت نیست، آدرس MAC چه نقشی بر عهده دارد و بسیاری از پرسشهای قابلتامل دیگر.
همچنین تمرین با شبیهسازهای شبکه خود یک راهکار مناسب برای درک بهتر درس محسوب میشود. البته استاد درس نیز ممکن است تمرینهای عملی در همین راستا تعریف کند که پیشنهاد میشود برای آن فراتر از کسب نمره زمان و انرژی صرف کنید. طبق یک ضربالمثل چینی: «به من بگو، فراموش خواهم کرد. به من نشان بده، به خاطر خواهم سپرد. مرا در کار درگیر کن، خواهم آموخت…» پس اگر واقعاً میخواهید شبکه را بیاموزید، از فعالیت عملی غافل نشوید!
اگر دانشجوی یکی از رشتههای مهندسی کامپیوتر و فناوری اطلاعات هستید، شاید بخواهید در آینده شغلی مرتبط با صنعت شبکه انتخاب کنید یا به پژوهش در این زمینه بپردازید. در این صورت، درس شبکههای کامپیوتری یک نقطه آغاز است. آن را بیاموزید و از منطق و نظم حاکم بر تکتک اجزای شبکه لذت ببرید. البته ممکن است در میانه مسیر خسته و دلزده شوید. اگر چنین شد، این واقعیت را به خاطر آورید که تمام پیچیدگیهای شبکه در خدمت یک هدف واحد هستند: بیمعنا ساختن فاصلههای جغرافیایی!
منبع: ماهنامه شبکه