مروری بر مفاهیم شبکه:
برای تحلیل و فهم روشهائی که یک نفوذگر با بکارگیری آنها با شبکه حمله می کند، باید یک دانش پایه از تکنولوژی شبکه داشته باشیم. درک مکانیزم حملات ممکن نیست مگر آنکه حداقل اصول TCP/IP را بدانیم.
عاملی که تمام شبکه های مختلف را به صورت موفقیت آمیز به هم پیوند زده است، تبعیت همه آنها از مجموعه پروتکلی است که تحت عنوان TCP/IP در دنیا شناخته می شود. دقت کنید که عبارت خلاصه شده TCP/IP می تواند به دو موضوع متفاوت اشاره داشته باشد:
مدل TCP/IP: این مدل یک ساختار چهار لایه ای برای ارتباطات گسترده تعریف می نماید که آنرا در ادامه بررسی می کنیم.
پشته پروتکل های TCP/IP:[1] پشته TCP/IP مجموعه ای شامل بیش از صد پروتکل متفاوت است که برای سازماندهی کلیه اجزاء شبکه اینترنت به کار می رود.
TCP/IP بهترین پروتکل شبکه بندی دنیا نیست! پروتکلهای بهینه تر از آن هم وجود دارند؛ ولیکن فراگیرترین و محبوبترین تکنولوژی شبکه بندی در دنیای کامپیوتر محسوب می شود. شاید بزرگترین حسن TCP/IP آن باشد که بدون پیچیدگی زیاد، بخوبی کار می کند! اینترنت بر اساس TCP/IP بنا شده و بیشتر حملات نیز مبتنی بر مجموعه پروتکلهای TCP/IP هستند.
طراحی شبکه ها و اصول لایه بندی
برای طراحی یک شبکه کامپیوتری، مسائل و مشکلات بسیار گسرتده و متنوعی وجود دارد که باید به نحوی حل شود تا بتوان یک ارتباط مطمئن و قابل اعتماد بین دو ماشین در شبکه برقرار کرد. این مسائل و مشکلات همگی از یک سنخ نیستند و منشأ و راه حل مشابه نیز ندارند؛ بخشی از آنها توسط سخت افزار و بخش دیگر با تکنیکهای نرم افزاری قابل حل هستند. به عنوان مثال نیاز برای ارتباط بی سیم بین چند ایستگاه در شبکه، طراح شبکه را مجبور به استفاده از مدولاسیون آنالوگ در سخت افزار مخابراتی خواهد کرد ولی مسئله هماهنگی در ارسال بسته ها از مبدأ به مقصد یا شماره گیری بسته ها برای بازسازی پیام و اطمینان از رسیدن یک بسته، با استفاده از تکنیکهای نرم افزازی قابل حل است. بهمین دلیل برای طراحی شبکه های کامپیوتری، باید مسائل و مشکلاتی که برای برقراری یک ارتباط مطمئن، ساده و شفاف بین دو ماشین در شبکه وجود دارد، دسته بندی شده و راه حلهای استاندارد برای آنها ارائه می شود. در زیربخشی از مسائل طراحی شبکه ها عنوان شده است:
اولین موضوع چگونگی ارسال و دریافت بیتهای اطلاعات بصورت یک سیگنال الکتریکی، الکترومغناطیسی یا نوری است، بسته به اینکه آیا کانال نتقال سیم مسی، فیبرنوری، کانال ماهواره ای یا خطوط مایکروویو است. بنابراین تبدیل بیتها به یک سیگنال متناسب با کانال انتقال یکی از مسائل اولیه شبکه به شمار می رود.
مساله دوم ماهیت انتقال است که می تواند به یکی از سه صورت زیر باشد:
Simplex: ارتباط یک طرفه (یک طرف همیشه گیرنده و طرف دیگر همیشه فرستنده).
Half Duplex: ارتباط دو طرفه غیرهمزمان (هر دو ماشین هم می توانند فرستنده یا گیرنده باشند ولی نه بصورت همزمان، بلکه یکی از طرفین ابتدا ارسال می کند، سپس ساکت می شود تا طرف مقابل ارسال داشته باشد)
Full Duplex: ارتباط دو طرفه همزمان (مانند خطوط مایکروویو)
مساله سوم مسئله خطا و وجود نویز روی کانالهای ارتباطی است بدین معنا که ممکن است در حین ارسال داده ها بر روی کانال فیزیکی تعدادی از بیتها دچار خرابی شود؛ چنین وضعیتی که قابل اجتناب نیست باید تشخیص داده شد و داده های فاقد اعتبار دو ریخته شود مبدأ آنها را از نو ارسال کند.
با توجه به اینکه در شبکه ها ممکن است مسیرهای گوناگونی بین مبدأ و مقصد وجود داشته باشد؛ بنابراین پیدا کرن بهترین مسیر و هدایت بسته ها، از مسائل طراحی شبکه محسوب می شود. در ضمن ممکن است یک پیام بزرگ به واحدهای کوچکتری تقسیم شده و از مسیرهای مختلفی به مقصد برسد بنابراین بازسازی پیام از دیگر مسائل شبکه به شمار می آید.
ممکن است گیرنده به دلایلی نتواند با سرعتی که فرستنده بسته های یک پیام را ارسال می کند آنها را دریافت کند، بنابراین طراحی مکانیزمهای حفظ هماهنگی بین مبدأ و مقصد از دیگر مسائل شبکه است.
چون ماشینهای فرستنده و گیرنده متعددی در یک شبکه وجود دارد مسائلی مثل ازدحام، تداخل و تصادم در شبکه ها بوجود می آید که این مشکلات بهمراه مسائل دیگر باید در سخت افزاز و نرم افزار شبکه حل شود.
طراح یک شبکه باید تمام مسائل شبکه را تجزیه و تحلیل کرده و برای آنها راه حل ارائه کند ولی چون این مسائل دارای ماهیتی متفاوت از یکدیگر هستند، بنابراین طراحی یک شبکه باید بصورت «لایه به لایه» انجام شود. به عنوان مثال وقتی قرار است یک شبکه به گونه ای طراحی شود که ایستگاهها بتوانند انتقال فایل داشته باشند، اولین مسئله ای که طراح باید به آن بیندیشد طراحی یک سخت افزار مخابراتی برای ارسال و دریافت بیتها روی کانال فیزیکی است. اگر چنین سخت افزاری طراحی شود، می تواند بر اساس آن اقدام به حل مسئله خطاهای احتمالی در داده ها نماید؛ یعنی زمانی مکانیزمهای کنترل و کشف خطا مطرح می شود که قبل از آن سخت افزار مخابره داده ها طراحی شده باشد. بعد از این دو مرحله طراحی، باید مکانیزمهای بسته بندی اطلاعات، آدرس دهی ماشینها و مسیریابی بسته ها طراحی شود. سپس برای بقیه مسائل نظیر آدرس دهی پروسه ها و چگونگی انتقال فایل راه حل ارائه شود.
طراحی لایه ای شبکه به منظور تفکیک مسائلی است که باید توسط طراح حل شود و مبتنی بر اصول زیر است:[2]
هر لایه وظیفه مشخصی دارد و طراح شبکه باید آنها را به دقت تشریح کند.
هر گاه سرویسهایی که باید ارائه شود از نظر ماهیتی متفاوت باشد، لایه به لایه و جداگانه طراحی شود.
وظیفه هر لایه باید با توجه به قراردادها و استانداردهای جهانی مشخص شود.
تعداد لایه ها نباید آنقدر زیاد باشد که تمیز لایه ها از دیدگاه سرویسهای ارائه شده نامشخص باشد و نه آنقدر کم باشد، که وظیفه و خدمات یک لایه، پیچیده و نامشخص شود.
در هر لایه جزئیات لایه های زیرین نادیده گرفته می شود و لایه های بالایی باید در یک روال ساده و ماجولار از خدمات لایه زیرین خود استفاده کنند.
باید مرزهای هر لایه به گونه ای انتخاب شود که جریان اطلاعات بین لایه ها، حداقل باشد.
برای آنکه طراحی شبکه ها سلیقه ای و پیچیده نشود سازمان جهانی استاندارد[3] (ISO)، مدلی هفت لایه ای برای شبکه ارائه کرد، به گونه ای که وظایف و خدمات شبکه در هفت لایه مجزا تعریف و ارائه می شود. این مدل هفت لایه ای،OSI[4] نام گرفت. هر چند در شبکه اینترنت از این مدل استفاده نمی شود و بجای آن یک مدل چهار لایه ای به نام TCP/IP تعریف شده است، ولیکن بررسی مدل هفت لایه ای OSI، بدلیل دقتی که در تفکیک و تبیین مسائل شبکه در آن وجود دارد، با ارزش خواهد بود. پس از بررسی مدل OSI، به تشریح مدل TCP/IP خواهیم پرداخت.
[1] TCP/IP Protocol Stack
[2] طراحی لایه ای شبکه را می توان با برنامه نویسی ماجولار مقایسه کرد، بدین نحو که روالهای حل یک مسئله با اجزای کوچکتری شکسته می شود و برای آن زیربنامه نوشته می شود. در توابع صدا زننده این زیربرنامه ها، جزئیات درونی آنها اهمیت ندارد بلکه فقط نحوه صدا زدن آنها و پارامترهای مورد نیاز ورودی به زیربرنامه و چگونگی برگشت نتیجه به صدا زننده، مهم است.
[3] International Standard Organization
[4] Open System Interconnection