به دلیل رشد روز افزون اینتر نت در سال های اخیر ، از بسته پروتکلی TCP/IP بیش از بسته پروتکل های دیگردر شبکه ها استفاده میشود . در این درس ابتدا وظایف متداولترین پروتکل های بسته ی TCP/IP را شرح میدهیم و سپس سیستم آدرس دهی خودکفای TCP/IP که یکی از مهمترین و منحصر به فرد ترین ویژگی های این بسته پروتکل میباشد را با جزیئات کامل بررسی خواهیم کرد .
بخش اول : پروتکل های TCP/IP
پروتکل های TCP/IP در اصل در دهه ی 1970 برای استفاده در شبکه سوئیچینگ - بسته وزارت دفاع آمریکا ایجاد شدند .این شبکه در آن زمان ARPANET نام داشت و همان شبکه ای است که ما امروزه اونو اینترنت میشناسیم . این پروتکل ها از همان بدو تولد با سیستم عامل یونیکس هم بستگی نزدیکی داشته اند. بنابراین پروتکل های TCP/IP قبل از کامپیوتر های شخصی ، مدل مرجع OSI ، پروتکل اترنت و بسیاری از عناصر دیگری که امروزه بعنوان بخش مهمی از شبکه های کامپیوتری به شمار میرود ، طراحی شده بودند . TCP/IP بر خلاف پروتکل های دیگر از قبیل IPX نت ور که همین وظایف را انجام میدهد ، محصول یک شرکت تنها نیست بلکه با همکاری چند گروه طراحی و تولید شده است .
بعد از این بخش شما قادر خواهید بود که :
ماهیت غیر انحصاری استانداردهای TCP/IP به این معناست که این پروتکلها محدود به هیچ نوع سخت افزار و یا نرم افزار و یا سیستم عامل بخصوصی نمی باشند . در واقع هدف اصلی از طراحی TCP/IP این بوده است که وابسته به سکوی یا پلت فرم سخت افزاری و نرم افزاری خاصی نباشد . بسیاری از پروتکل های این بسته طوری طراحی شده اند که هر کامپیوتر دارای امکانات شبکه ای بتواند با استفاده از TCP/IP با هر نوع کامپیوتر دیگری که با همدیگر شبکه شده اند ارتباط برقرار کند .
استاندارد های TCP/IP توسط Internet Engineering Task Force یا همان IETF در مستنداتی به نام RFC یا Request for Comments تعریف شده اند و در اختیار عموم قرار دارند . شما میتوانید آنها را از بسیاری از سایت های وب و FTP دریافت کنید . لینک های اشاره کننده به این استانداردها در سایت www.ietf.org که سایت IETF میباشد وجود دارد .
نکته : وقتی سندی بعنوان یک RFC توسط IETF منتشر شود و شماره بخورد دیگر هرگز تغییر نمیکند . در صورتیکه IETF نسخه ی اصلاحی از یک RFC بخواهد منتشر کند باید به آن شماره ی جدیدی اختصاص دهد . فایل شاخصRFC-INDEX که حاوی لیست کاملی از مستندات منتشر شده است ، همچنین دارای ارجاعاتی میباشد که مشخص میکنند یک RFC سندهای دیگری را کامل میکند و یا اینکه توسط سندهای دیگری کامل میشود .
لایه های TCP/IP
گرچه ،TCP/IP مدتها قبل از OSI طراحی شده است ولی از لایه های مشابه با لایه های OSI استفاده میکند . بخش کردن کارهایی که یک کامپیوتر باید در ارتباطات شبکه ای انجام دهد بین پشته ای از پروتکل هی مختلف ، دارای مزایای زیر میباشد :
نکته : حتما در مورد مدل مرجع OSI اطلاعاتی را داشته باشید .
مدل پشته پروتکل TCP/IP متشکل از چهار لایه میباشد و در RFC 1122 معرفی شده است .همان طور که در شکل زیر دیده میشود لایه ها با لایه های مدل OSI شباهت زیادی دارند .

مدل هفت لایه ای OSI در مقایسه با لایه های چهارگانه ی پروتکل TCP/IP
چهار لایه TCP/IP از پایین به بالا عبارتند از :
در این قسمت میخواهیم شرح مهمترین پروتکل های بسته ی TCP/IP را در لایه های مختلف بدهیم .
PPP و SLIP
SLIP و PPP پروتکل های لایه ی پیوند یا همان دسترسی به شبکه هستند و از آنها در شبکه های گسترده که توسط خطوط تلفن انواع دیگر لایه های فیزیکی به همدیگر متصل شده اند استفاده میشود .SLIP در RFC 1055 تحت عنوان A Nonstandard for Transmission of IP Datagram over Serial Lines تعریف شده است . PPP از SLIP پیچیده تر است و از پروتکل های بیشتری برای برقراری ارتباط بین دو سیستم استفاده میکند .این پروتکل ها در RFC های مختلف از جمله RFC 1661 بنام "Point-to-point" و RFC 1662 بنام "PPP in HDLC-Like Framing" تعریف شده اند .برای اطلاعات بیشتر در مورد SLIP و PPP در ماه های آینده و در بخش های دیگه توضیح خواهم داد .(البته اگه زبان انگلیسی و تخصصی خوبی دارید حتما و حتما این RFC ها رو بخونید . )
ARP
ARP در RFC 826 تعریف شده است و محل آن در لایه های TCP/IP نامشخص است . این پروتکل سرویسی را برای IP انجام میدهد که به نظر میرسد باید در لایه ی دسترسی به شبکه یا ( لایه پیوند مدل OSI ) قرار گیرد . به هر حال پیغام های آن مستقیما توسط پروتکل لایه ی پیوند دادهمنتقل میشود نه در داخل دیتاگرام های IP . به همین دلیل میتوان آن را یک پروتکل لایه ی اینترنت یا (لایه ی شبکه در مدل OSI) نامید . این پروتکل بدون توجه به لایه ای که به آن نسبت داده میشود ، سرویس بسیار مهمی در LANهای TCP/IP تامین میکند .
پروتکل های TCP/IP برای شناسایی شبکه ها و میزبانه از آدرس IP استفاده میکنند ، اما وقتی که کامپیوتر ها به یک شبکه محلی اترنت یا Token Ring متصل باشند ، نهایتا باید دیتاگرام های IP را با استفاده از آدرس سخت افزاری لایه ی پیوند دادهی سیستم مقصد منتقل کنند . وظیفه ARP برقراری یک ارتباط بین سیستم آدرس دهی IP و آدرس های سخت افزاری میباشد که پروتکل های لایه ی پیوند داده استفاده میکنند.
زمانیکه IP یک دیتاگرام میسازد ، آدرس IP مقصد نهایی بسته را میداند این آدرس ممکن است کامپیوتری باشد روی همان سگمنت یا سیستمی باشد روی سگمنت دیگر . در هر صورت IP باید آدرس سخت افزاری سیستمی را که روی شبکه ی محلی خود قرار دارد و در گام بعدی دیتاگرام را دریافت خواهد کرد ، تعیین کند . بدین منظور IP یک پیغام ARP تولید میکند و انرا بصورت همگانی روی شبکه ی محلیپخش میکند . قالب پیغام ARP در زیر مشاهد کنید .

وظایف فیلد های پیغام ARP از قرار زیر است :
نکته : پروتکل تحلیل گر آدرس معکوس یا به عبارتی RARP دقیقا عکس عمل ARP رو انجام میده . اگه یادتون باشه گفتم که ARP آدرس IP رو داره و میخاد آدرس MAC رو پیدا کنه یعنی آدرسی که روی کارت شبکتون حک شده . البته به صورت منطقی . ولی پروتکل RARP آدرس های MAC رو داره و میخاد IP رو پیدا کنه . و انو به سرورهای RARP بفرسته . حالا به چه دردی میخوره RARP ؟ یه زمانی بود که کلاینت ها جای ذخیره نداشتن و ذخیره سازی فقط در یک سیستم انجام میشد و به همین دلیل جای ذخیره پیکربندی خود را نداشتن یعنی نمیتونستن تنظیماتی که برای شبکه دارنو در خود ذخیره کنن به همین علت آدرسهای خود را که آدرس های MAC و یا به عبارتی آدرس کارت شبکه که حک شده رو به یک سرور RARP میفرستادن و سپس سرور RARP تنظیمات IP هر یک از اونارو براشون میفرستاد . وای مردم تا حالیتون کنم هی ی ی ی ی .
حالا اینم بگم بهتون این RARP دقیقا پدر DHCP و BOOTP میباشد . آقا خوشحالیم از آشناییتون .
DHCP و BOOTP فقط بدونید که دو پروتکلی هستند که تنظیمات خودکار انجام میدن . بعدا در موردش مفصلا میحرفیم .
در حال حاضر هم از RARP دیگه خیلی به ندرت استفاده میشه . خب عجب نکته ای بود . شوخی بسه بریم سر اصل مطلب .
توجه توجه : بچه از اینجا به بعد هر چی مطلب مینویسمو قشنگ در ذهنتون به تصویر میکشید و برای خودتون یه تصویری از چهار لایه ی TCP/IP و از هفت لایه OSI بسازید همین الان . این کارو نکنید مطلب بعدیو نمیفهمید. حالا ما گفتیم .
حالا میخام مرحله به مرحله بریم جلو تا بهتون بگم که چی جوری میشه ARP با آدرس IP که در اختیار داره آدرس سخت افزاری طرفو پیدا میکنه . یک کلاینت تو یک شبکه محلی یا یک کلاینت در سگمنت های دورتر و یا کلاینتی که در شبکه ی اینترنت است به شکل ARP این کارو انجام میده :
راستی تا یادم نرفته اینو هم بگم که سیستم هایی که از بسته ی پروتکل TCP/IP استفاده میکنن یک حافظه ای به نام حافظه نهان ARP که به آن cache ARP نیز میگویند برای نگهداری آدرس های سخت افزاریی که ARP اونارو پیدا کرده دارن تا سیستم نخواد که شبکه رو پر از درخواستهای ARP بکنه و به این علت سرعت شبکه افت داشته باشه . بنابراین در بسته ی پروتکل TCP/IP فرمانی وجود داره که میتونید به اون مواردی رو اضافه یا حذف کنید یعنی شما با این فرمان میتوانید کش ARPرو تغییر بدید . و اون فرمان ARP.exe میابشد . قبل از هر درخواست ARPی که میخاد فرستاده بشه سیستم ابتدا این حافظه رو چک میکنه و اگه آدرس بود استفاده و در غیر اینصورت درخواست ARP رو میفرسته .
ان شاالله درجلسات آتی در مورد این موضوع بیشتر بحث و گفتگو میکنیم .
IP
IP کارش اینه که یک بسته را از مبدا به مقصدنهایی برسونه . جزییات در بخش بعدی .
ICMP
خب میرسیم به پروتکل Internet Control Message Protocol یا پروتکل کنترل پیغام های اینترنت که از نامش هم پیداست برای کنترل کردن محیط اینترنتی در نظر گرفته شده . مثلا شما مواقعی براتون پیش امده که یه آدرسی رو میدید و اون وب سایت یا وبلاگ یا ... پیدا نمیشه . ICMP باعث میشه که یه پیغام برای ما ظاهر بشه . یا یه مثال دیگه دید که یه موقع میخایم به یه پورت یه وب سایت وصل بشیم . اون سایت به ما اجازه نمیده . اینجا باز هم ICMP باعث میشه که برای من عبارت Port Unreachable ظاهر بشه . یعنی عدم دسترسی به پورت . حالا این یه مثال کوچیک بود . بیاین با هم بریم تو دنیای ICMP .
بچه ها باز تاکید میکنم که تصویر سازی در ذهنو هیچ وقت فراموش نکنید .
خب ICMP پروتکلیست که در لایه ی شبکه ی بسته ی TCP/IP یعنی لایه ی دوم کار میکنه . اگه بخایم در مدل OSI بگیم باید بگیم لایه سوم . بچه ها یه مثال اجازه بدید بزنم . در لایه ی انتقال ما دو پروتکل داریم به نام TCP , UDP که بنا به یکسری مسایل که بعدا در موردش بیشتر توضیح خواهم داد اطلاعات یا به TCP سپرده میشه یا به UDP . در بعضی اوقات ما میتوانیم هم با UDP این کارو بکنیم و هم با TCP در دو زمان متفاوت . یعنی همزمان نمیتوان هم با UDP و هم با TCP این اطلاعات رو فرستاد . بعضی وقت ها هم پیش میاد که بعضی اطلاعاتو فقط یکی از اونا میتونه بفرسته . ولی بالاخره یکی از اونا باید انتخاب بشن تا اطلاعات بسته بندی بشن . ولی در لایه ی شبکه اینطور نیست . بعضی از پروتکل ها هستند که اصلا و اصلا اطلاعاتی یا به عبارت دیگر داده ای رو از داده های کاربر بسته بندی نمیکنن فقط یک سری اطلاعاتو جمع آوری میکنن تا IP بهتر و بهینه تر بتونه با داده ها برخورد کنه .ICMP پروتکلیست که داده ای از داده های کاربر رو انتقال و دریافت نمیکنه . بلکه یه سری کارایی رو برای IP انجام میده . و در دیتاگرام IP حمل میشه .
حالا بیاین ببینیم این کارارو ICMP چی جوری انجام میده .
به طور کلی ، عموما ICMP دو دسته کار انجام میده که عبارتند از:
خب اگه شما بخاین این مطلبو یاد بگیرید باید ابتدا قالب و فیلد های این پروتکل رو ببینید تا تصویری در ذهن ایجاد کنیم و سپس به موارد دیگه بپردازیم شکل زیر قالب فیلدهای ICMP میباشد (دقت کنید)

زیر این عکس یکسری خارجکی نوشته که کاری نداریم ایشالا با اطلاعاتی که نسبت به پروتکل پیدا کردید بعدا اونارو هم میفهمید .ایشالا .
وظیفه ی فیلدهای ICMP از قرار زیر است:
اگه یادتون باشه گفتم که به طور کلی پیغام های ICMP دو تا کار انجام میدن یکی درخواست ها و دیگری خطاها . ابتدا پیغام های خطا رو مورد بررسی قرار میدهیم .
انواع پیغام های خطای ICMP