فضای اینترنت به حدی گسترده است که وجود یک سری قوانین و چارچوبهای مشخص در حوزههای مختلف، نیازی اساسی برای ایجاد امنیت و سرعت به حساب میآید. یکی از شناخته شدهترین استانداردها برای تبادل اطلاعات در قالب این شبکه، پروتکل HTTP است. این پروتکل با ایجاد یک مسیر ارتباطی بین کلاینت و سرور، جابهجایی اطلاعات را بین این دو ممکن میسازد. در این مقاله قصد داریم تا نگاهی جزیی به پروتکل HTTP داشته باشیم و خواهیم دید که این پروتکل چگونه امکان ایجاد صفحات وب را به مهیا میسازد.
پروتکل HTTP چیست؟
کلمه HTTP در اصل مخفف عبارت Hyper Text Transfer Protocol به معنی پروتکل انتقال ابرمتنها در جوامع کامپیوتری شناخته میشود. این پروتکل در لایه کاربرد (Application Layer) و برای سیستمهای توزیع شده مورد استفاده قرار میگیرد. این پروتکل وظیفه برقراری یک ارتباط ایمن بین کلاینت و سرور را بر عهده دارد. در هنگام معرفی HTTP با یک عبارت به نام ابر متن رو به رو شدیم. پس بهتر است پیش از اینکه عملکرد پروتکل HTTP را مورد بررسی قرار دهیم، یک تعریف ساده از ابرمتنها بیان کنیم.

منظور ما از ابرمتنها یا Hypertext چیست؟
در دنیای اینترنت، هایپر تکست به متون HTML گفته میشود که به صورت بسیار طولانی نوشته شدهاند. این کدها پس از پردازش مرورگر، به انواع مختلفی مثل عکس، ویدیو، جدول، لینک و … در خواهند آمد.
پروتکل HTTP چگونه عمل میکند؟
ارتباطات در دنیای وب از دو جز اصلی یعنی کلاینت و سرور تشکیل شده است. پروتکل HTTP با استفاده از پروتکل شبکه TCP/IP یک پل ارتباطی میان این دو جز را برقرار میسازد. این کار با استفاده از فرآیند HandShaking انجام میپذیرد. این فرآیند تضمین میکند که تمام بستهها اطلاعاتی به صورت کامل و به ترتیب از سرور خارج شده و به دست کلاینت رسیدهاند. ساختار چند لایه پروتکل HTTP ما را قادر خواهد ساخت تا حتی از امکانات آن در فضاهایی به غیر از فضای وب نیز استفاده نماییم. تمام این جابهجاییها از طریق پورت شماره ۸۰ و در طول یک Session رخ میدهد.

نحوه کار متدهای پروتکل HTTP
در پروتکل HTTP از یک دستورالعمل خاص در زمان ارتباط کلاینت و سرور استفاده میشود. دانستن این متدهای ارتباطی و استفاده از آنها در داخل یک وب سرویس، امکان برقراری ارتباط بین کلاینت و سرور را فراهم میآورد. به این طریق که پروتکل HTTP ابتدا درخواستی که از کلاینت به سمت سرور ارسال میشود را بررسی و قالب بندی میکند. این کار دوباره در زمان انتقال پاسخ از سرور به کلاینت نیز صورت میپذیرد. برای اینکه این فرآیند به صورت بی نقص صورت بگیرد، پروتکل HTTP از یک سری متدهای مشخص برای برقراری پل ارتباطی بین کلاینت و سرور استفاده میکند. در ادامه بر چندین متد اصلی این پروتکل را معرفی میکنیم.
- متد GET: میتوان گفت که درخواستهای از نوع GET پرکاربردترین متد در ساختار APIها و وبسایتها به شمار میآیند. به زبان ساده، GET برای دستیابی کلاینت به اطلاعات مشخصی در سرور استفاده میشود. به عنوان مثال، برای دستیابی به لیست اطلاعاتی کاربران که به صورت پیش فرض در یک فولدر مشخص سرور ذخیره شده است، میتوان از متد GET استفاده کرد.
- متد POST: با بهرهگیری از متد POST در ساختار یک وب سرویس، میتوان درخواست ایجاد یا تغییر فایل را به سرور ارسال کرد. برای این کار کافیست دستورات مورد نظر را در بدنه درخواست HTTP قرار داد.
به عنوان مثال وقتی اطلاعات تماس خود را در یک وبسایت وارد کرده و روی دکمه SEND کلیک میکنید، این اطلاعات در درون یک پیام درخواست به سمت سرور ارسال میشوند.
همچنین متد POST در ساختار توسعه APIها به عنوان یک درخواست non-idempotent شناخته میشود. درخواستهای idempotent به درخواستهایی از جنس HTTP گفته میشود که صرف نظر از تعداد دفعات ارسال پیام، پاسخهای یکسانی از سمت سرور به دنبال خواهند داشت.
- متد PUT: دقیقا مطابق عملکردی که از متد POST دیدیم، متد PUT نیز اجازه اعمال تغییر در سرور را در اختیار توسعه دهنده قرار میدهد. با این تفاوت که درخواستهای PUT از نوع درخواستهای idempotent هستند. به این مفهوم هر بار ارسال متد PUT به سرور، نتیجه متفاوتی با حالتهای قبل خواهد داشت.
- متد PATCH: شاید این متد در مقایسه با سایر متدهای پروتکل HTTP کمتر مورد استفاده قرار بگیرد اما به دلیل شباهت آن با متدهای PUT و POST، ما در این جا به آن اشاره میکنیم. توسعه دهندگان معمولا زمانهایی که قصد دارند یک تغییر جزیی را در منابع سرور ایجاد کنند، از متد PATCH استفاده میکنند. به عنوان مثال، وقتی یک کاربر اقدام به تغییر نام کاربری خود در سیستم میکند، تنها کافیست نام کاربری جدید به سرور ارسال شود و دیگر نیازی به اعمال تغییر در سایر اطلاعات وی وجود ندارد.
- متد DELETE: همانطور که میتوان از نام این متد فهمید، پیام DELETE، دستور پاک شدن یک منبع خاص را از روی سرور صادر میکند. از این متد به صورت مکرر در توسعه وب سرویسهای RESTful استفاده میشود.
- متد HEAD: این نوع درخواستها تا حد زیادی شبیه به درخواستهای متد GET هستند. تنها تفاوت موجود بین متدهای HEAD و GET، عدم ارسال نتیجه درخواست از سرور به کلاینت در درخواستهای HEAD است. به صورت عمده درخواستهای HEAD برای بررسی پاسخ سرور مورد استفاده قرار میگیرد. چنانچه توسعه دهنده از پاسخ دریافتی رضایت داشته باشد، آنگاه میتواند درخواست GET ارسال کند. به عبارت دیگر، درخواستهای HEAD فاقد بخش پاسخ یا Response body هستند.
- متد OPTIONS: این نوع درخواست از سرور تقاضا میکند تا سایر متدها و عملیات موجود برای یک آدرس URL مشخص را به ما اطلاع دهد. از این متد بیشتر در هنگام تست سیستم مبنی بر عدم وجود ایرادهای اساسی استفاده میگردد.
نتیجه گیری
پروتکل HTTP از سال ۱۹۹۱ تا به امروز، توانسته به عنوان یک بستر استاندارد برای تبادل اطلاعات در شبکه اینترنت فعالیت کند. تا به امروز ۳ نسخه از این پروتکل در جهان عرضه شده است که جدیدترین نسخه آن HTTP/3 امکانات فوقالعادهای برای افزایش سرعت و بهبود تجربه کاربری را به مخاطبان عرضه میکند.