پروتکل HTTP
"پروتکل HTTP یک پروتکل لایه اپلیکیشن در مدل TCP/IP است که توسعه آن توسط تیم «برنرز-لی» در «سازمان اروپایی پژوهشهای هستهای» (CERN) رقم خورد."
پروتکل HTTP چیست؟
پروتکل HTTP یا Hypertext Transfer Protocol یک پروتکل لایه اپلیکیشن در مدل TCP/IP است که توسعه آن توسط تیم «برنرز-لی» در سال 1989 میلادی در «سازمان اروپایی پژوهشهای هستهای» (CERN) رقم خورد. اولین نسخه از پروتکل HTTP خیلی زود به نسخههای پیشرفتهتری تکامل یافت و آخرین نسخه آن یعنی HTTP/3 در سال 2022 میلادی منتشر شده و تا کنون در حدود 25% از وبسایتهای جهان از این نسخه استفاده میکنند.
ساختار پروتکل HTTP
پروتکل HTTP یک پروتکل درخواست و پاسخ در مدل کلاینت-سرور میباشد. برای مثال یک مرورگر وب میتواند یک کلاینت و نرمافزار موجود بر روی سرویس دهنده وبسایت، یک سرور باشد. شروع کار پروتکل HTTP از سمت کلاینت است که با ارسال یک درخواست HTTP به سمت سرور گفتگو را شروع میکند. سرور طبق درخواست ارسالی کلاینت، یا منبعی مانند یک فایل را در اختیار کلاینت قرار میدهد یا عملیات خاصی را انجام میدهد. نتیجه کار سرور در بسته پاسخ HTTP برای کلاینت ارسال میشود. بستهٔ پاسخ شامل اطلاعات وضعیت و احتمالاً محتویات منبع درخواست شده میباشد.
مرورگر وب یک نمونه از عامل کاربر (به انگلیسی: User Agent) است. از دیگر عوامل کاربر میتوان به خزندهٔ وب، نرمافزارهای تلفنهای همراه و نرمافزارهای دیگری که به وب متصل شده و از اطلاعات آن استفاده یا صفحهای را نمایش میدهند، اشاره کرد.
پروتکل HTTP یک پروتکل لایک کاربرد است که در مدل TCP/IP طراحی شده و مورد استفاده قرار میگیرد. این پروتکل با فرض بر اینکه لایه Transport زیر آن قابل اعتماد است طراحی شده و معمولا از پروتکل کنترل انتقال (TCP) به عنوان لایه زیرین استفاده میکند. با این حال از پروتکل HTTP بر روی لایههای غیر قابل اطمینان نیز استفاده میشود. مثلا در پروتکل SSDP، پروتکل HTTP بر روی پروتکل UDP که یک پروتکل غیر امن است مورد استفاده قرار میگیرد.
منابع HTTP همگی با یک شناسانهٔ یکنواخت منبع (URI) یا بهطور مشخصتر با یک نشانی وب (URL) آدرسدهی و مشخص میشوند. تمامی این آدرسها با نشانهٔ http یا https آغاز میگردد. از این آدرسها در زبان نشانهگذاری ابرمتن (HTML) به صورت گسترده برای انتقال بین صفحات مختلف استفاده میگردد و از آن تحت عنوان پیوند یا لینک یاد میشود.
نسخه 1.1 پروتکل HTTP بر خلاف نسخه 1.0 قابلیت استفاده از یک اتصال برای چندین درخواست را دارد. مثلاً میتواند عکسها، فایلهای اسکریپت و … موجود در یک صفحه را با همان اتصال اولیه دریافت کند؛ لذا سرعت آن به دلیل حذف شدن برقراری ارتباط مجدد TCP نسبت به نسخهٔ 1.0 افزایش یافته است.
Session یا جلسه
در پروتکل HTTP به دنبالهای از درخواستها و پاسخها Session یا جلسه میگویند. کلاینت با ایجاد ایک اتصال هدایت انتقال (TCP) بر روی یک پورت از پیش تعیین شده بر روی سرور که معمولا پورت 80 است، جلسه را شروع میکند. سرور وب همواره بر روی درگاه تعیین شده در حال گوش دادن به درخواستهای کلاینت است. پس از دریافت درخواست ارسال شده، سرور با ارسال یک خط وضعیت (Status Line) و بدنه، پاسخ کلاینت را به او باز میگرداند. بدنه بستهٔ پاسخ معمولاً حاوی منبع درخواست شدهاست؛ با این حال از آن برای ارسال خطا و اطلاعات دیگر نیز استفاده میشود.
کدهای وضعیت HTTP
از نسخه 1.0 پروتکل HTTP به بعد، خطِ اولِ پاسخِ سرور تحت عنوان Status Line یا خط وضعیت شناخته میشود. این خط حاوی یک کد عددی مانند 200، 301، 400، 403، 404، 500 و ... است که به عنوان کد وضعیت HTTP شناخته میشود و دارای یک پیام متنی است که با عنوان علت وضعیت شناخته میشود. نحوه برخورد عامل کاربر به پاسخ، به کد وضعیت بستگی دارد. با این وجود استفاده از کدهای سفارشی که پروتکل HTTP موجود نیستند نیز بلامانع است.
کدهای وضعیت پروتکل HTTP به پنج دسته کلی تقسیمبندی میشوند:
- کدهای 1xx یا اطلاعاتی: این کدها با عدد 1 شروع میشوند. این گروه، این پیام کلی را مشخص میکنند: «درخواست شما دریافت شد، ادامه دهید».
- کدهای 2xx یا موفقیت: این کدها با عدد 2 شروع میشوند. یعنی: «درخواست ارسالی دریافت شده، درک شده، پذیرفته شده و با موفقیت انجام شده است».
- کدهای 3xx یا تغییر مسیر: این کدها با عدد 3 شروع میشوند. یعنی «کلاینت برای کامل شدن درخواست نیازمند انجام عملیات اضافی است»
- کدهای 4xx یا خطای کلاینت: این کدها با عدد 4 شروع میشوند. این گروه از کدها مشخص میکند که «کلاینت درخواست خود را اشتباه وارد کرده یا باعث بروز خطا شده است»
- کدهای 5xx یا خطای سرور: این کدها با عدد 5 شروع میشوند. با این معنی که «سرور در حال انجام عملیات مربوط به یک بسته درخواست ظاهرا اشتباه، ناموفق بوده و با خطا مواجه شده است»