شبکه، بسته و پروتکل
یک شبکه کامپیوتری شامل ماشین هایی است که از طریق کانالهای مخابراتی (Communication Channel) به هم متصل شده اند. این ماشین ها را میزبان (Host) و مسیریاب (Router) می نامیم. هر میزبان کامپیوتری است که برنامه ای مانند مرورگر وب را اجرا می کند. مسیر یاب ماشینی است که کارش رله کردن (Relay) و یا هدایت (Forward) اطلاعات از یک کانال ارتباطی به کانال ارتباطی دیگر است. کانال ارتباطی (Communication Channel) ابزاری برای حمل دنباله ای از بایت ها از میزبانی به میزبان دیگر است.
اهمیت مسیریاب ها به این دلیل است که نمی توان مستقیماً از میزبانی به میزبان دیگر متصل شد. بلکه، میزبان هایی به یک مسیریاب متصل می شوند که این مسیریاب نیز به مسیریاب های دیگری متصل است. این چیدمان (Arrangement) باعث می شود که با تعداد اندکی از کانالهای مخابراتی، از ماشینی به ماشین دیگر رسید. برنامه هایی که اطلاعاتی را در شبکه مبادله می کنند، مستقیماً با مسیریاب ها ارتباط برقرار نمی کنند و از وجود آنها آگاهی ندارند.
منظور از اطلاعات در اینجا، دنباله ای از بایت ها است که توسط برنامه ساخته و تفسیر می شوند. در زمینه شبکه های کامپیوتری، این دنباله از بایت ها را بسته (Packet) می گویند. بسته حاوی داده های کاربر و اطلاعات کنترلی است که شبکه با استفاده از آن کارش را انجام می دهد. نمونه ای از اطلاعات کنترلی، مقصد بسته است. مسیریاب ها با استفاده از این اطلاعات کنترلی می فهمند که چگونه باید بسته ها را هدایت کنند.
پروتکل (Protocol)، توافقی درباره نحوه مبادله اطلاعات و معنای آنها توسط برنامه های مخابره کننده است. پروتکل مشخص می کند بسته ها چگونه سازماندهی شده اند (ساختار بسته ها چگونه است). به عنوان مثال اطلاعات مقصد در کجا ی بسته قرار دارند و اندازه آن چقدر است. علاوه بر این مشخص می کند که اطلاعات چگونه باید تفسیر شوند.
پیاده سازی شبکه مفید، مستلزم این است که دنباله وسیعی از مسئله های مختلف حل شوند. پروتکل های مختلفی برای حل مسئله های مختلف ایجاد شده اند. TCP/IP یک مجموعه از چنین راه حل ها است که گاهی مجموعه پروتکل (Protocol Suite) نامیده می شود. مجموعه پروتکل، علاوه بر اینترنت، در شبکه های خصوصی نیز قابل استفاده است. بنابراین وقتی حرف از شبکه می زنیم، شبکه ای را در نظر داریم که از خانواده پروتکل TCP/IP استفاده می کند. پروتکل های اصلی در خانواده TCP/IP، پروتکل اینترنت (IP)، پروتکل کنترل انتقال (TCP) و پروتکل داده گرام (Datagram) کاربر (UDP) هستند.
TCP = Transmission Control Protocol
UDP = User Datagram Protocol
خانواده پروتکل TCP/IP و سایر پروتکل ها به صورت لایه ای سازماندهی شده اند. شکل زیر رابطه بین پروتکل ها، نرم افزارها، و API سوکت ها را در میزبان ها و مسیر یاب ها نشان می دهد. نرم افزار ها از طریق API سوکت ها به سرویس های ارائه شده توسط UDP و TCP دسترسی دارند.
همانطور که در شکل بالا مشاهده می شود، پروتکل اینترنت (IP)، مسئله فراهم کردن دنباله ای از کانال ها و مسیر یاب های بین دو میزبان را حل می کند. پروتکل اینترنت (IP) یک سرویس داده گرام را تهیه می کند. هر بسته توسط شبکه به طور مستقل اداره و تحویل می شود. مثل تلگراف یا نامه هایی که توسط پست ارسال می شوند. برای این کار، هر بسته IP باید حاوی آدرس مقصدش باشد. به عنوان مثال، برای ارسال نامه ای به شخص خاص، باید آدرس وی را پشت پاکت بنویسید. IP یک پروتکل بهترین تلاش است، یعنی سعی می کند هر بسته را تحویل دهد، اما می تواند بسته ها را مفقود کند، ترتیب آنها را عوض کند، یا بسته را تکثیر نماید.
لایه بالای IP، لایه انتقال نام دارد که دو پروتکل مهم به نام های TCP و UDP در آن وجود دارد. TCP و UDP یک وظیفه مشترک دارند، و آن آدرس دهی است. به یاد داشته باشید که IP بسته ها را به میزبان تحویل می دهد. به آدرس دهی خاصی نیاز است تا بسته ای به کاربردی برسد. UDP و TCP از آدرس هایی به نام شماره های پورت استفاده می کنند به طوری که نرم افزار های موجود در داخل میزبان ها می توانند شناسایی شوند. این دو پروتکل را پروتکل های انتها به انتها می نامند، زیرا داده ها را از برنامه ای به برنامه دیگر حمل می کنند.
TCP طراحی شد تا مفقود شدن و تکثیر بسته ها و سایر خطا هایی را که در کانال تهیه شده توسط IP رخ می دهند، تشخیص دهد و ترمیم کند.TCP یک کانال جریان بایت (Byte Stream) مطمئن (قابل اعتماد) را تدارک می بیند، به طوری که برنامه ها با این مشکلات سروکار نداشته باشند. TCP یک پروتکل اتصال گرا (Connection Oriented) است، یعنی قبل از شروع مخابره، دو برنامه باید با یکدیگر اتصال TCP برقرار کنند که شامل مبادله پیام دست تکانی (Hand Shake) بین پیاده سازی های TCP بین دو کامپیوتری است که با هم ارتباط برقرار می کنند. استفاده از TCP مثل ورودی-خروجی فایل است. در واقع، فایلی که توسط برنامه ای نوشته می شود و توسط دیگری خوانده می شود، یک حالت معقول از مخابره روی اتصال TCP است. از طرف دیگر UDP در یافتن خطا های ناشی از IP تلاش نمی کند. لذا برنامه هایی که از UDP استفاده می کنند، باید آمادگی برطرف کردن خطاهایی مثل مفقود شدن یا تکثیر بسته ها را داشته باشند.