پروتکل HTTP چیست؟
پروتکل انتقال ابرمتن (HTTP) پایه و اساس شبکه جهانی وب است و برای بارگذاری صفحات وب با استفاده از پیوندهای فرامتن استفاده می شود. HTTP یک پروتکل لایه کاربردی است که برای انتقال اطلاعات بین دستگاه های مختلف در شبکه طراحی شده است و بر روی لایه های دیگر از پروتکل های شبکه اجرا می شود. یک جریان اطلاعات معمولی ابتدا از طریق HTTP توسط یک کامپیوتر با نام کلاینت شروع می شود که درخواستی را به سرور ارسال می کند و سپس سرور یک پیام پاسخ را برای کلاینت ارسال می کند.
درخواست HTTP چیست؟
درخواست HTTP روشی است که پلتفرمهای ارتباطی اینترنتی مانند مرورگرهای وب اطلاعات مورد نیاز برای نمایش و بارگذاری یک وبسایت را درخواست میکنند. هر درخواست HTTP که در سراسر اینترنت انجام می شود، مجموعه ای از داده های رمزگذاری شده را با خود حمل می کند که انواع مختلفی از اطلاعات را شامل می شود. یک درخواست HTTP معمولی شامل موارد زیر است:
- نوع نسخه HTTP
- یک آدرس اینترنتی
- روش HTTP
- سرصفحه های درخواست HTTP
- بدنه HTTP که اختیاری است
بیایید با عمق بیشتری بررسی کنیم که این درخواستها چگونه کار میکنند، و چگونه میتوان از محتوای یک درخواست برای ارسال یا دریافت اطلاعات استفاده کرد.
روش HTTP چیست؟
روش HTTP، که گاهی اوقات به عنوان عملیات HTTP نیز نامیده می شود، نشان دهنده عملکردی است که درخواست کننده HTTP از سرور مورد نظر انتظار دارد. برای مثال، دو تا از متداولترین روشهای HTTP عبارتند از «GET» و «POST». درخواست «GET» برای دریافت اطلاعات از سرور استفاده می شود (معمولا به شکل نمایش یک وب سایت)، در حالی که درخواست «POST» معمولا نشان می دهد که کلاینت در حال ارسال اطلاعات به وب سرور است (مانند اطلاعات فرم، به عنوان مثال نام کاربری و رمز عبور ارسال شده).
سرصفحه های درخواست HTTP چیست؟
هدرهای HTTP حاوی اطلاعات متنی هستند که در جفتهایی به صورت کلید-مقدار ذخیره میشوند و در هر درخواست HTTP (و پاسخ) گنجانده شدهاند. این سرصفحه ها اطلاعات اصلی را به سرور یا کلاینت منتقل می کنند، به عنوان مثال: نوع مرورگری که کلاینت درخواست کننده اطلاعات، از آن استفاده می کند.
بدنه درخواست در HTTP چیست؟
بدنه یک درخواست حاوی اطلاعات تکمیلی درباره درخواست است.بدنه در درخواست HTTP شامل هر گونه اطلاعاتی می باشد که به وب سرور ارسال می شود، مانند نام کاربری و رمز عبور، یا هر داده دیگری که در یک فرم وارد شده است.
پاسخ HTTP چیست؟
پاسخ HTTP چیزی است که کلاینت وب (اغلب مرورگرها) در پاسخ به درخواست HTTP از یک سرور اینترنتی دریافت می کنند. این پاسخها اطلاعات ارزشمندی را بر اساس آنچه در درخواست HTTP خواسته شده است، منتقل میکنند. یک پاسخ HTTP معمولی شامل موارد زیر می باشد:
- یک کد وضعیت HTTP
- سرصفحههای پاسخ HTTP
- بدنه HTTP که اختیاری است
بیایید نگاه جامع تری به این موارد بیاندازیم:
کد وضعیت HTTP چیست؟
کدهای وضعیت HTTP کدهای 3 رقمی هستند که اغلب برای نشان دادن اینکه آیا درخواست HTTP با موفقیت انجام شده است استفاده می شوند. کدهای وضعیت به 5 بلوک زیر تقسیم می شوند:
- 1xx اطلاعاتی
- 2xx موفقیت
- 3xx تغییر مسیر
- خطای مشتری 4xx
- 5xx خطای سرور
"xx" به اعداد مختلف بین 00 و 99 اشاره دارد. کدهای وضعیت که با عدد "2" شروع می شوند نشان دهنده موفقیت هستند. به عنوان مثال، پس از درخواست یک مشتری از یک صفحه وب، معمولا پاسخهایی که مشاهده میشوند دارای کد وضعیت «200 OK» هستند که نشان میدهند درخواست به درستی تکمیل شده است. اگر پاسخ با "4" یا "5" شروع شود، به این معنی است که خطایی وجود دارد و صفحه وب، نمایش داده نخواهد شد.
کد وضعیتی که با «4» شروع میشود نشاندهنده یک خطای سمت سرویس گیرنده یا سرور است (بسیار معمول است که هنگام تایپ اشتباه در آدرس اینترنتی، با کد وضعیت «404 NOT FOUND» مواجه شوید). کد وضعیت که با "5" شروع می شود به این معنی است که مشکلی در سمت سرور رخ داده است. کدهای وضعیت همچنین می توانند با "1" یا "3" شروع شوند که به ترتیب نشان دهنده پاسخ اطلاعاتی و تغییر مسیر هستند.
سرصفحه های پاسخ HTTP چیست؟
مانند درخواست HTTP، پاسخ HTTP با هدرهایی ارائه می شود که اطلاعات مهمی مانند زبان و قالب داده ارسال شده در بدنه پاسخ را منتقل می کند.
بدنه در پاسخ HTTP چیست؟
پاسخهای موفق HTTP به درخواستهای «GET» معمولا دارای بدنهای هستند که حاوی اطلاعات درخواستی هستند. در اکثر درخواستهای وب، پاسخ، دادههای HTML است که یک مرورگر وب آن را به یک صفحه وب ترجمه میکند.
آیا حملات DDoS می توانند از طریق HTTP راه اندازی شوند؟
به خاطر داشته باشید که HTTP یک پروتکل "بی حالت" است، به این معنی که هر فرمان مستقل از هر دستور دیگری اجرا می شود. در مشخصات اولیه، HTTP این طور آمده است که هر درخواست HTTP یک اتصال TCP ایجاد کرده و و سپس بسته می شود. در نسخههای جدیدتر پروتکل HTTP (HTTP 1.1 و بالاتر)، اتصال مداوم به چندین درخواست HTTP اجازه میدهد تا از یک اتصال TCP دائمی برای بهینه سازی اتصال بتوان استفاده کرد که مصرف منابع را بهبود می بخشد.
در زمینه حملات DoS یا DDoS، درخواستهای HTTP در مقادیر زیاد میتوانند برای ایجاد یک حمله بر روی سرور هدف مورد استفاده قرار گیرند و بخشی از حملات لایه برنامه یا حملات لایه 7 در نظر گرفته میشوند.