معرفی، بررسی و آشنایی با پروتکل HTTP
پروتکل HTTP یکی از پر کاربرد ترین و مشهور ترین پروتکل های اینترنتی است. مقاله امروز توسعه شبکه پایدار به معرفی و بررسی پروتکل HTTP می پردازد.
امروزه تقریباً تمام افرادی که با رایانه ها و گوشی های تلفن همراه سروکار دارد با واژه اینترنت و وب سایت ها آشنا هستند.
وب سایت ها بر روی اینترنت از پروتکل HTTP استفاده می کنند. این پروتکل در واقع به وب سایت ها این امکان را می دهد که رسانه های خود از قبیل متن، عکس، ویدئو و صوت و دیتا را برای کاربران خود منتشر کنند.
پروتکل HTTP پایه و اساس ارتباطات در اینترنت می باشد. این پروتکل به صورت عمومی و کاملاً مستقل اداره شده و هر ساله استاندارد های آن پیشرفت می کند.
در واقع این پروتکل نوعی سرویس است که داده ها صفحات HTML را که شامل تصاویر متن، ویدیو، وست و دیتا می باشد را در فضایی به نام World Wide Web سرویس دهی می کند.
مدل Client-Server
برای برقراری ارتباط بین کامپیوترهای یک شبکه، باید از نرمافزارهای خاصی استفاده شود.
این نرمافزارها با استفاده از پروتکلهای تعریف شده، ارتباط بین کامپیوترها را برقرار میکنند. در دنیای وب این نرمافزارها به دو دستهی Client و Server تقسیم میشوند.
یعنی هر کامپیوتر با توجه به نوع نرمافزاری که به کار میبرد، میتواند یک Client یا یک Server باشد. البته ممکن است یک کامپیوتر هم Client و هم Server باشد.
ولی فعلاً از این حالت صرفنظر میکنیم و کامپیوترها را به دو دستهی Client و Server تقسیم میکنیم.
توجه کنید که Server یا Client بودنِ کامپیوترها، با توجه به نرمافزاری که اجرا میکنند مشخص میشود. یعنی سخت افزار به کار رفته در کامپیوترهای Server و Client تقریباً یکسان است.
هرچند سخت افزار Server ها معمولاً قدرتمندتر است. اما هر دو کامپیوتر را میتوان با نصب و اجرای نرمافزارهای متفاوت به Server یا Client تبدیل کرد.
نکته: کلمهی Client از نظر لغوی به معنی “مشتری” است. اما در متون تخصصی، با توجه به محل استفاده از کلمهی Client، از کلماتی مانند “سرویسگیرنده” یا “کاربر” استفاده میشود. کلمهی Server نیز از نظر لغوی به معنی “سرویسدهنده” یا “خدمتگزار” است.
نحوهی برقراری ارتباط بین کاربر و سرور در پروتکل HTTP به صورت ساده شده در شکل زیر نشان داده شده است.
اگر به جهت فلشها توجه کنید، میبینید که همیشه کامپیوتر کاربر آغاز کننده ی ارتباط است. زیرا درخواست (Request) توسط کاربر ارسال میشود. پس از ارسال درخواست توسط کاربر و دریافت آن توسط سرور، پاسخی (Response) متناسب با درخواست برای کاربر ارسال میشود.
در کامپیوتر کاربر میتوان از نرم افزارهای مختلفی برای ارسال درخواست به سرور استفاده کرد. اما مشهورترین نرمافزارهایی که در کامپیوتر کاربر به کار میروند مرورگرها (Browser) هستند. کامپیوتر سرور نیز باید برنامهی خاصی را اجرا کند که “وبسرور” (Web Server) نامیده میشود. امروزه انواع مختلفی از وب سرورها وجود دارد که از مشهورترین آنها میتوان به Apache و Nginx و یا IIS اشاره کرد.
حال فرض کنید که میخواهید صفحهای از یک وبسایت را توسط مرورگر باز کنید. حتماً تا به حال بارها این کار را انجام داده اید و احتمالاً این یکی از کارهای روزمره ی شما است. برای انجام این کار ابتدا یک مرورگر را باز میکنید (مثلاً Google Chrome).
سپس در نوار آدرس (Address Bar)، آدرس صفحهی مورد نظرتان را وارد کرده و دکمهی Enter را میزنید. فرض کنید آدرس صفحهی مورد نظرتان به صورت زیر است.
http://www.example.com/page1.html
میخواهیم ببینیم که پس از وارد کردن آدرس فوق در نوار آدرس و زدن دکمهی Enter دقیقاً چه اتفاقی میافتد؟ و مرورگر چگونه این صفحهی وب را از وبسایت مورد نظر درخواست کرده و نتیجه را به کاربر نمایش میدهد؟ خواهیم دید که برای انجام این کار توسط مرورگر، کارهای زیادی در پشت صحنه انجام میشود که کاربر متوجه آنها نمیشود. در واقع پروتکل HTTP ارتباط بین مرورگر و سرور را برقرار میکند.
ویژگی های عمومی پروتکل HTTP
- بدون اتصال بودن (Connectionless)
- مستقل بودن (Independent)
- بدون وضعیت بودن (Statelesss)
بدون اتصال بودن(Connectionless)
Client به وسیله ی مرورگر یک سرویس HTTP درخواست می کند، Client به server وصل نیست، پس، منتظر پاسخ می ماند. Server درخواست Client را میبیند و پردازش می کند و برای ارسال پاسخ، دوباره یک ارتباط جدید با Client برقرار می کند.
مستقل بودن (Independent)
HTTP یک رسانه ی مستقل است، HTTP بر اساس نوع داده ای محتویات ارسالی توسط Client و همچنین نوع داده ای محتویاتی که Serverr به Client پاسخ می دهد، یک MIME مناسب درخواست می دهد، این بدان معناست که HTTP می تواند هر نوع داده ای که توسط Client و Server درخواست می شود، بدون هیچ مشکلی فراهم کند و محدود به داده های خاصی نمی باشد، پس کاملا مستقل است.
بدون وضعیت بودن (Stateless)
همان طور ک گفتیم HTTP بدون اتصال می باشد. Server و کاربر Client هر کدام تنها زمانی که آن دو با هم در ارتباط و تعامل هستند از یکدیگر با خبرند.
بعد از آن هر دو آن ها، هر چیزی که بینشان بوده فراموش می کنند. با توجه به ماهیت این نوع پروتکل، نه Client و نه مرورگر نمی توانند اطلاعات بین درخواست های یک صفحه ی وب را نگه داری کنند. به همین دلیل است که میگوییم HTTP بدون وضعیت می باشد.