جزوه تفصیلی شبکه - جلسه چهارم

ارائه دانشجویان (فهیمی و طایفه) و توضیحات تکمیلی استاد

موضوع ارائه فهیمی و طایفه: پروتکل TCP و فراتر از آن

۱. مقدمه‌ای بر پروتکل TCP/IP (توضیحات استاد)

این پروتکل، پروتکلی شد که پایه‌ی اینترنت قرار گرفت. این موضوع هم خوب است و هم بد، و یک عالمه درگیری بر سر آن داریم.

پروتکلی بود که در قدیم در وزارت دفاع آمریکا داستانش شکل گرفت و توسعه یافت. این پروتکل جزو مواردی است که در اینترنت می‌توانیم تا پیاده‌سازی‌های بسیار ریز آن را نیز با یک جستجوی ساده پیدا کنیم. ریز و بم‌ها و پیاده‌سازی‌های مختلف آن، چه در وزارت دفاع آمریکا و چه در جاهای دیگر (حتی حوزه‌های دانشگاهی)، به راحتی قابل یافتن است. حتی پیاده‌سازی‌های مینیمال (Minimal) از آن موجود است که اکثراً هم با زبان C نوشته شده‌اند.

ریشه TCP/IP و پروتکل DARPA

این پروتکل از پروتکل پایه دیگری به اسم DARPA گرفته شده است که پروتکل اولیه‌ای بود که در وزارت دفاع استفاده می‌شد. بعدها توسعه پیدا کرد و زمانی که آرپانت (ARPANET) داشت بالا می‌آمد، به همراه آن شکل گرفت. ورژن‌های قدیمی آن مثل ۰.۲۵، ۲ و ۴ بودند و الآن هم ورژن ۶ آن را داریم.

در ارائه‌ی آقای فهیمی، ما الان فقط ورژن‌های ۴ و ۶ را داریم و انگار بقیه ورژن‌ها اصلاً وجود ندارند! چرا؟ چون ورژن‌های ۱، ۲ و ۳ قبل از شکل‌گیری اینترنت بودند و ورژن ۵ در دورانی شکل گرفت که اینترنت داشت به سمت "نسخه‌پذیر بودن" خودش تبدیل می‌شد و عملیاتی شد. بنابراین ما از کل چرخه زندگی TCP/IP، فقط دو نسخه (۴ و ۶) را بیشتر نمی‌بینیم و چهار نسخه دیگر عملاً فقط پیاده‌سازی‌های درون‌سازمانی بودند و در اختیار دیگران قرار داده نشدند.

ویژگی‌های منحصربه‌فرد TCP/IP

TCP/IP یک‌سری ویژگی منحصربه‌فرد دارد که ناشی از همان پروتکل پایه DARPA است. تمرکز عمده این پروتکل بر مسیریابی (Routing) بوده است. در DARPA و بعداً در TCP/IP تمرکز بر این قرار گرفت که: «من هیچ الزامی ندارم که به سمت مدیریت شبکه و امثال آن بروم، بلکه تمرکزم باید فقط روی مسیریابی باشد».

روز اولی که TCP/IP نوشته شد، تفکرات دفاعی در آن دخیل بود:

اینکه شبکه لارج (بزرگ) باشد، دو حالت را پشتیبانی کند (Reliable و Unreliable) و باید بتواند در ساختار ماژولار خودش کار کند. عملاً TCP/IP نقطه تلاقیِ تمام مفاهیمی شد که تا دهه ۱۹۷۰ در زمینه ایجاد و مدیریت شبکه‌های کامپیوتری در وزارت دفاع آمریکا شکل گرفته بود.

TCP/IP بعدها تبدیل به پروتکل متعارف شد و بسیار خاص است. جایگزین یک مجموعه عظیمی از پروتکل‌هایی شد که تا آن زمان وجود داشتند؛ همه آن‌ها را حذف کرد و تبدیل به پروتکل پایه‌ای شد که در همه دیوایس‌ها وجود دارد. در اکثر دیوایس‌هایی که برای وصل شدن به شبکه‌های کامپیوتری استفاده می‌شوند، TCP/IP به طور متعارف در نظر گرفته می‌شود.

پروتکل کم‌حرف و لایه‌های پنهان

محوریت و طبیعت اصلی TCP/IP روی روتینگ است و بر خلاف بقیه پروتکل‌های شبکه، از یک سیستم آدرس‌دهی (Addressing) بسیار نرمال استفاده می‌کند.

TCP/IP یک «پروتکل کم‌حرف» است. میزان ترنسفر دیتا (انتقال داده اضافه‌ی سیستمی) در TCP/IP نسبت به بقیه پروتکل‌ها فوق‌العاده کمتر است. در پروتکل‌های دیگر (مثل پروتکل شرکت ناول Novell IPX/SPX) برای اینکه ماشین‌ها از وضعیت هم خبردار شوند، شروع می‌کنند به حرف زدن‌های طولانی با هم و از لحظه شروع کار، بخش عظیمی از پهنای باند را به خودشان اختصاص می‌دهند؛ اما TCP/IP این‌طور نیست.

نکته دیگر اینکه چون از همان روز اول ساختار مرجع اجرایی TCP/IP مشخص نبوده (قرار نبوده مشخص باشد که روی چه سخت‌افزاری اجرا می‌شود)، زیاد وارد لایه سخت‌افزار نشده است و به همین دلیل تطابق بسیار خوبی با آرپانت داشته است.

نکته مهم: چون دو لایه‌ی Addressing و Routing در این سیستم بسیار مشهور هستند (یعنی TCP و IP)، ما معمولاً بقیه لایه‌ها را در این پروتکل زیاد در نظر نمی‌گیریم و کل پروتکل را به اسم همین دو لایه صدا می‌زنیم: TCP/IP.

۲. ستون فقرات اینترنت (Internet Backbone) و دغدغه‌های امنیتی

محبوبیت بیش از حد TCP/IP دو جنبه دارد:

  1. جنبه مثبت: جماعت بسیار زیادی روی Improve (بهبود) این پروتکل کار می‌کنند که از نظر آکادمیک یک نکته کاملاً مثبت است. همچنین از نظر شرکتی، نسخه‌های تطبیق‌یافته (Adaptation شده) TCP/IP را برای کاربردهای بسیار خاص داریم. مثلاً در دنیای Embedded Deviceها (دستگاه‌های تعبیه‌شده)، پروتکل TCP/IP را باز می‌کنند، قسمت‌هایی که کاربرد ندارد را حذف می‌کنند و Stackهای سبک‌شده‌ی آن را برای کار می‌گذارند.
  2. جنبه منفی (دغدغه): از آنجا که اطلاعاتِ بسیار زیادی از این پروتکل (از دهه ۷۰ میلادی تا الآن) در دسترس همه قرار دارد، عملاً همه می‌توانند در آن دست ببرند و این موضوع دغدغه‌های جدی‌ای را ایجاد کرده است.

بک‌بون (Backbone) اینترنت کجاست؟

اینترنت در وزارت دفاع آمریکا (در نوادا) شکل گرفت. زمانی که جدا شد، نسخه ۱۲ (یعنی ۱۲ گره اصلی) وجود داشتند. این ۱۲ گره شکستند و شدند اینترنت، که به آن‌ها «ستون فقرات اینترنت» می‌گوییم.

اینترنت در دنیا از شرق به غرب حرکت می‌کند:
مثلاً اگر از ژاپن بخواهیم به آمریکا پیام بدهیم (با اینکه بینشان فقط یک اقیانوس آرام است)، پیام از ژاپن می‌رود روی اروپا، از آنجا می‌رود روی ۳ سوییچ اصلی (مانند بروکسل، پاریس و هامبورگ)، سپس می‌رود روی Backbone اصلی تا پردازش انجام شود و برگردد.

ستون فقرات اصلی اینترنت تماماً در خاک ایالات متحده آمریکا قرار دارد.

پروتکل‌های فراتر از TCP/IP (Beyond TCP/IP)

قرار داشتنِ بک‌بونِ اصلی اینترنت در خاک آمریکا، برای خیلی از کشورها و حوزه‌های نظامی (Military) دردسر و دغدغه‌های جدی ایجاد کرده است.

در کتاب‌های سنتی شبکه، لایه به لایه پروتکل‌ها (OSI و TCP/IP) را توضیح می‌دهند. این جزئیاتِ دقیق باعث شده تا نهادهای نظامی، امنیتی و دولتی (Governmental) به فکر فرار از TCP/IP بیفتند! آن‌ها گفتند طبیعت TCP/IP باید عوض شود.

اتفاقی که در ۵ سال اخیر رخ داد (و داستان ۷ اکتبر آن را شارپ‌تر و جدی‌تر کرد) این بود که دنیا از این موضوع ترسید. درست است که استاندارد بودن TCP/IP جذاب است، اما این همه مشهور بودن باعث می‌شود که اگر کسی در مسیر ارتباطی باشد، دقیقاً بداند ساختار شبکه شما چگونه کار می‌کند و بر سیستم شما سوار شود.

ما الان در دورانی هستیم که کلمه‌ای به نام "پروتکل‌های نامتعارف" شکل گرفته است که به توسعه TCP/IP فکر می‌کنند. البته توسعه (Extend) با تغییر طبیعت فرق دارد:
- در Extend طبیعت عوض نمی‌شود (مثل رفتن از IPv4 به IPv6 که فقط ویژگی اضافه کردیم).
- اما در Beyond TCP/IP قصد این است که طبیعت و ذاتِ پروتکل تغییر کند.
درحال حاضر وزارت دفاع فرانسه و چین، پروژه‌های مختلفی در این حوزه دارند.

۳. تاریخچه و نیاز به مدل‌های شبکه (ارائه دانشجویان)

چه شد که شبکه‌ها به مدل نیاز پیدا کردند؟
در دهه‌های ۱۹۶۰ تا ۷۰ که آرپانت تازه شکل گرفته بود و هنوز گسترش نیافته بود، لزوم اینکه سیستم‌های کامپیوتری از برندهای مختلف و با پروتکل‌های متفاوت بتوانند با هم ارتباط برقرار کنند، احساس شد. این موضوع باعث شد تا مدلی مطرح شود که جلوی ناسازگاری‌ها را بگیرد.

مدل استاندارد نظری OSI

مدلی که یک چارچوب استاندارد است و توسط سازمان بین‌المللی استاندارد جهانی (ISO) در سال ۱۹۸۴ تعریف شد. نکته مهم این است که OSI جنبه عملیاتی ندارد و کاملاً نظری (Theoretical) است؛ جنبه عملیاتی آن همان TCP/IP است.

(اول پروتکل‌ها در دنیای واقعی شکل گرفتند و بعد دانشمندان آمدند مدل‌ها را روی آن‌ها تعریف کردند).

اصول طراحی لایه‌های OSI:
وقتی می‌خواهیم یک لایه تعریف یا اضافه کنیم، باید یک انتزاعِ متفاوت شکل بگیرد و کارکرد مشخص‌ِ کاملاً مجزایی داشته باشد. پروتکل‌ها باید استاندارد باشند و حداقلِ اطلاعات بین واسط‌ها (Interfaceها) جابه‌جا شود تا بار پردازشی کم شده و کارکردشان متمایز گردد.

اصول لایه‌های OSI
تصویر ساده و کلی از اصول طراحی لایه‌های OSI

۴. بررسی مدل ۷ لایه‌ای OSI

مدل 7 لایه OSI
مدل ۷ لایه معروف شبکه (OSI)

فرض کنید می‌خواهیم با کامپیوتر سمت چپ پیامی بفرستیم:

  1. پیام داخل لایه Application (کاربرد) می‌رود؛ یعنی روی سیستم ما پردازش می‌شود.
  2. سپس به لایه Presentation (نمایش) می‌رود و آماده‌سازی می‌شود. مثلاً اگر تصویر باشد، رمزنگاری شده و به فرمتِ قابلِ ارسال تبدیل می‌شود.
  3. داخل لایه Session (نشست)، ارتباط درون‌برنامه‌ای و نرم‌افزاری بین دو سیستمِ مبدأ و مقصد شکل می‌گیرد (مثلاً در یک تماس ویدیویی، سشن برقرار می‌شود).
  4. در لایه Transport (انتقال) پروتکل‌های انتقال داده حضور دارند.
  5. در لایه Network (شبکه) وظیفه مسیریابیِ مبتنی بر IP وجود دارد (مبدأ و مقصد چه IPای دارند). به این قسمت اصطلاحاً Connection-less می‌گویند و در اینجا توجهی به بررسی رسیدن یا نرسیدن پکت‌ها نداریم.
  6. لایه بعدی Data Link (پیوند داده) است که کمی فیزیکی‌تر است و بر اساس Mac Address کار می‌کند.
  7. در آخرین لایه یعنی Physical (فیزیکی)، داده ما به سیگنال‌های ۰ و ۱ تبدیل شده و روی کابل یا هوا منتقل می‌شود.

وقتی سیگنال به کامپیوتر مقصد برسد، داده شروع می‌کند به باز شدن و لایه به لایه بالا می‌آید تا پیام اصلی در لایه اپلیکیشنِ مقصد تولید شود.
نکته مهم: بارِ لایه‌های پرزنتیشن و سشن به «شبکه» محول شده است. یعنی این یک انتزاع برای خود شبکه است که کارِ فشرده‌سازی و فرمت‌بندی را انجام دهد و این‌ها مستقیماً روی سیستمِ کاربر انجام نمی‌شود.

ارتباطات نظیر به نظیر (Peer to Peer)

هر لایه n از سرویس قبلی‌اش سرویس می‌گیرد و به لایه بعدی‌اش سرویس می‌دهد. اما به صورت افقی (کنار هم) می‌تواند مستقیماً با پروتکل‌های لایه‌ی هم‌نامِ خودش در مقصد ارتباط برقرار کند.

ارتباطات لایه‌ها و روتر میانی
تصویر ارتباطات بین لایه‌ای و روترهای میانی در شبکه

توضیحات استاد برای سوال تقیلو (راجع به جابه‌جایی بیت‌ها):

پروتکل OSI/ISO نظیر به نظیر (Peer-to-Peer) است. یعنی لایه اپلیکیشن فرض می‌کند که بقیه لایه‌ها وجود ندارند و مستقیماً دارد با لایه متناظرِ خودش در ماشین مقابل صحبت می‌کند. (مثلاً سشن فکر می‌کند در خلأ قرار دارد و فقط با سشنِ مقابل حرف می‌زند).

اما در واقعیت، همه‌چیز در پایین‌ترین سطح به بیت (Bit) تبدیل می‌شود. مثلاً:

لایه فیزیکال دقیقاً همین را می‌فهمد و بیت جابه‌جا می‌کند.

داستان اندازه‌ی «بایت» در لایه فیزیکال

لایه فیزیکال از کجا می‌فهمد که ۸ بیت نشان‌دهنده یک بایت است؟ آیا بیتِ چِک (Check bit) اضافه می‌کند؟
یک زمانی در دنیای کامپیوتر بایت را حتی تا ۱۰ بیت هم رسانده بودیم! در حالت عادی می‌گوییم هر ۸ بیت یک بایت است. اما یک زمانی ۹ بیت را می‌کردیم یک بایت که بیت آخر برای چک کردن (Error Checking) بود. بعداً ۱۰ بیت شد که یک بیت اولویت هم به آن اضافه کردیم.

اما دیدیم هرچقدر تعداد بیت‌ها را زیاد کنیم تا بایت بسازیم، اوضاعِ گیرنده‌ی بدبخت خراب می‌شود! لایه فیزیکالِ گیرنده باید مدام محاسبه می‌کرد که این ۸ بیتِ اصلی کدام است؟ بیتِ اولویت کدام است؟ در سیستم‌های IBM (مثل AIX3) طول بایت تا ۱۲ بیت هم رسیده بود و این سربارِ محاسباتی لایه فیزیکال را بسیار بالا می‌برد.

الآن در خیلی موارد ۸ بیت و در برخی موارد ۹ بیت می‌فرستیم (بستگی به استکِ طراحی‌شده دارد) اما بالاتر نمی‌رویم. پس لایه فیزیکال دقیقاً می‌داند که مدیا چیست (فیبر، وایرلس، ماهواره) و فقط بیت منتقل می‌کند. در حالی که اگر از لایه ترنسپورت بپرسید، می‌گوید من «پکت» منتقل می‌کنم.

مفهوم مارشالینگ و هدر و تریلر

همان‌طور که داده لایه به لایه پایین می‌آید، در هر لایه یک‌سری اطلاعات به ابتدا یا انتهای آن اضافه می‌شود:
Header به ابتدای دیتا و Trailer به انتهای دیتا اضافه می‌شود.
این اطلاعات برای این اضافه می‌شوند که لایه متناظر در ماشین مقصد بتواند آن‌ها را بخواند و بررسی کند. وقتی دیتا در مقصد از پایین به بالا می‌رود، هر لایه دیتای مربوط به خودش (هدر و تریلر) را برمی‌دارد و پردازش می‌کند.

به این فرآیندِ اضافه کردن و برداشتن داده‌ها، در مستندات OSI کلمه‌ی مارشال کردن (Marshalling) می‌گویند. اما در TCP/IP به آن Add/Remove Data گفته می‌شود و اصلاً اصطلاح Encapsulation (کپسوله‌سازی) را به کار نمی‌بریم.

۵. مشکلات مدل OSI (ادامه ارائه فهیمی)

۶. پروتکل NPC، پیش‌درآمدی بر TCP/IP

اول که آرپانت شکل گرفت، نمی‌شد شبکه بدون پروتکل کار کند. پس پروتکل NPC (Network Control Protocol) به عنوان اولین پروتکل در این شبکه به کار گرفته شد. کار این پروتکل سوییچینگ و مسیریابی بود، تا زمانی که TCP/IP در ۱ ژانویه ۱۹۸۳ رسماً جایگزین آن شد.

چالش‌های NPC و پیش‌درآمد TCP/IP
چالش‌های NPC و لزوم گذر به مدل‌های جدیدتر

پروتکل NPC کارهای انتقال داده را انجام می‌داد اما یک‌سری چالش داشت؛ شبکه‌ها به مدلی نیاز داشتند که قابلیت مدیریت خطا، کنترل جریان داده و از همه مهم‌تر Scalability (مقیاس‌پذیری) داشته باشد تا بتوانند شبکه‌های بزرگ را بخش‌بخش کرده و به شبکه‌های کوچک‌تر گسترش دهند.

۷. ساختار لایه‌ای TCP/IP

در دهه ۱۹۷۰ مدل TCP/IP توسط وزارت دفاع آمریکا مطرح شد و در حال توسعه بود تا اینکه در ۱۹۸۳ مدل رسمی شد. اصلی‌ترین پروتکل‌های آن در لایه اینترنت و ترنسپورت (همان پروتکل‌های IP و TCP) هستند که مقیاس‌پذیری، انعطاف‌پذیریِ لایه‌ای و کارایی بالایی دارند.

لایه‌های TCP/IP
شمای کلی لایه‌های مدل TCP/IP در مقایسه با OSI

همان‌طور که در تصویر می‌بینید، مدل TCP/IP به صورت کلی ۴ لایه دارد و ۳ لایه‌ی آن نسبت به مدل OSI ادغام شده است:

لایه دسترسی به شبکه
ساختار کلی TCP/IP در یک نگاه
جزئیات لایه دسترسی به شبکه
لایه دسترسی به شبکه (پایین‌ترین لایه) که عملکرد لینک‌های ارتباطی را تعریف می‌کند

ادامه مباحث در جلسه بعد...