HTTP مجموعهای از قوانین برای انتقال فایلهایی مانند متن، تصاویر، صدا، ویدئو و سایر فایلهای چندرسانهای از طریق درگاه وب است.
به محض اینکه کاربر مرورگر وب خود را باز میکند، به طور غیر مستقیم از HTTP استفاده میکند. HTTP یک پروتکل کاربردی است که در بالای مجموعه پروتکلهای TCP/IP اجرا میشود که پایه اینترنت را تشکیل میدهند.
آخرین نسخه HTTP، پروتکل HTTP/2 است که در می 2015 منتشر شد. این نسخه جایگزین نسخه قبلی خود، HTTP 1.1 می باشد که البته منسوخ نشده است.
HTTP چگونه کار میکند؟
از طریق پروتکل HTTP، منابع بین دستگاههای client و سرورها از طریق اینترنت رد و بدل میشود. client درخواستی را برای منابع مورد نیاز برای بارگذاری یک صفحه وب، به سرور ارسال میکند. سرور برای انجام درخواست پاسخی را به مشتری ارسال میکند.
درخواستها و پاسخها زیر اسنادی مانند داده روی تصاویر، متن، طرحبندی متن، و غیره که برای نمایش فایل کامل صفحه وب توسط مرورگر client در کنار هم قرار میگیرند را به اشتراک میگذارند.
یک وب سرور علاوه بر فایلهای صفحه وبی که میتواند ارائه کند، حاوی یک HTTP daemon است (برنامهای که منتظر درخواستهای HTTP میشود و هنگام ورود آنها را مدیریت میکند).
مرورگر وب یک کلاینت HTTP است که درخواستها را به سرورها ارسال میکند. هنگامی که کاربر مرورگر، درخواستهای فایل را با “باز کردن” یک فایل وب توسط تایپ یک URL یا کلیک روی یک لینک ابرمتن وارد میکند، مرورگر یک درخواست HTTP ایجاد میکند و آن را به آدرس IP که با URL نشان داده شده ارسال میکند.
HTTP daemon در سرور مقصد درخواست را دریافت کرده و فایل یا فایلهای درخواستی مرتبط با درخواست را پس میفرستد.
در تشریح این مثال، کاربر میخواهد از Setakit.com بازدید کند. کاربر آدرس وب را تایپ میکند و کامپیوتر درخواست “GET” را به سروری که آن آدرس را میزبانی می کند ارسال میکند.
درخواست GET با استفاده از HTTP ارسال میشود و به سرور Setakit میگوید که کاربر به دنبال کد HTML است که مربوط به ساختار و ظاهر صفحه login میشود.
متن آن صفحه login در پاسخ HTML گنجانده میشود، اما سایر بخشهای صفحه به ویژه تصاویر و ویدیوهای آن توسط درخواستها و پاسخهای HTTP جداگانه درخواست میشوند.
هرچه درخواستهای بیشتری انجام شود (مثلا برای فراخوانی صفحهای که تصاویر متعددی دارد) زمان بیشتری طول میکشد تا سرور به آن درخواستها پاسخ دهد و سیستم کاربر، صفحه را بارگذاری کند.
هنگامی که این جفتهای درخواست/پاسخ ارسال میشوند، از TCP/IP برای انتقال اطلاعات در بستههای کوچک دنبالههای باینری یک و صفر استفاده میکنند. این بستهها به صورت فیزیکی از طریق سیمهای برق، کابلهای فیبر نوری و شبکههای بیسیم ارسال میشوند.
درخواستها و پاسخهایی که سرورها و کلاینتها برای به اشتراک گذاشتن دادهها با یکدیگر استفاده میکنند شامل کد ASCII است. درخواستها بیان میکنند که client به دنبال چه اطلاعاتی از سرور است. پاسخها حاوی کدهایی هستند که مرورگر client آن را به یک صفحه وب ترجمه میکند.
HTTP در برابر HTTPS
HTTPS توسط Netscape توسعه یافته است و شامل بکارگیری از لایه سوکتهای امن (SSL) یا امنیت لایه انتقال (TLS) به عنوان یک لایه فرعی تحت لایهبندی برنامه HTTP معمولی است.
HTTPS درخواستهای صفحه HTTP کاربر و همچنین صفحاتی که توسط وب سرور برگردانده میشوند را رمزگذاری و رمزگشایی میکند. همچنین در برابر استراق سمع و حملات Man-in-the-Middle (MitM) محافظت میکند. انتقال از HTTP به HTTPS مفید خواهد بود، زیرا لایهای از امنیت و اعتماد را ارائه میدهد.
درخواستها و پاسخهای HTTP
هر تعامل بین Client و سرور یک پیام نامیده میشود. پیامهای HTTP درخواستها یا پاسخها هستند. دستگاههای Client درخواستهای HTTP را به سرورها ارسال میکنند، سرورها با ارسال پاسخهای HTTP به Client ها پاسخ میدهند.
– درخواستهای HTTP:
زمانی است که یک Client، مانند مرورگر اینترنت، اطلاعات مورد نیاز برای بارگذاری وب سایت را از سرور میخواهد. این درخواست اطلاعات مورد نظر را در اختیار سرور قرار میدهد تا بتواند پاسخ خود را با دستگاه Client تنظیم کند. هر درخواست HTTP حاوی دادههای رمزگذاری شده با اطلاعاتی مانند:
- نسخه HTTP استفاده شده: HTTP و HTTP/2 دو نسخه هستند.
- URL: به منبع موجود در وب اشاره میکند.
- روش HTTP: نشان دهنده اقدام خاصی است که درخواست، انتظار دارد در پاسخ خود از سرور دریافت کند.
- هدرهای درخواست HTTP: شامل دادههایی مانند نوع مرورگر مورد استفاده و درخواست مورد نظر از سرور میشود. همچنین میتواند شامل کوکیهایی باشد که نشان دهنده اطلاعاتی هستند که قبلاً از سروری که درخواست را مدیریت میکرد ارسال شدهاند.
- بدنه HTTP: مجموعهای از اطلاعات اختیاری است که سرور از درخواست نیاز دارد، مانند فرمهای کاربر ( ورود نام کاربری/رمز عبور، پاسخهای کوتاه و آپلود فایل) که به وبسایت ارسال میشوند.
– پاسخهای HTTP:
پاسخ HTTP، دادههای دریافت شده توسط یک client از وب سرور است. همانطور که از نام آن پیداست، پاسخ، جواب سرور به درخواست HTTP است. اطلاعات موجود در پاسخ HTTP متناسب با موضوعی است که سرور از درخواست دریافت کرده است. پاسخهای HTTP معمولاً شامل دادههای زیر است:
- کد وضعیت HTTP: که وضعیت درخواست به client را نشان میدهد. پاسخها ممکن است نشان دهنده موفقیت، پاسخ اطلاعاتی، تغییر مسیر یا خطا در سمت سرور یا client باشند.
- هدرهای پاسخ HTTP: که اطلاعات مربوط به سرور و منابع درخواستی را ارسال میکنند.
- بدنه HTTP (اختیاری): در صورت موفقیت آمیز بودن درخواست، شامل دادههای درخواستی در قالب کد HTML است که توسط مرورگر client به یک صفحه وب ترجمه میشود.
کدهای وضعیت HTTP
در پاسخ به درخواستهای HTTP، سرورها اغلب کدهای پاسخی را صادر میکنند که نشان میدهد درخواست در حال پردازش است، خطایی در درخواست وجود دارد یا درخواست در حال redirect است. کدهای پاسخ متداول عبارتند از:
- OK ا200: این بدان معناست که درخواستی مانند GET یا POST اعمال شده و در حال انجام است.
- Moved Permanently ا300: این کد پاسخ به این معنی است که URL منبع درخواستی به طور دائم تغییر کرده است.
- Unauthorized ا401: کلاینت یا کاربری که درخواست سرور را انجام میدهد، احراز هویت نشده است.
- Forbidden ا403: هویت client مشخص است اما مجوز دسترسی به آن داده نشده است.
- Not Found ا404: رایجترین کد خطا است. به این معنی است که URL شناسایی نمیشود یا منبع در آن مکان وجود ندارد.
- Internal Server Error ا500: سرور با وضعیتی مواجه شده که نمیداند چگونه آن را مدیریت کند.
پروکسیها در HTTP
پروکسیها یا سرورهای پروکسی (سرورهای لایه application)، رایانهها یا ماشینهایی هستند که بین دستگاه client و سرور قرار میگیرند. پروکسیها درخواستها و پاسخهای HTTP را بین client و سرور ارسال میکنند. به طور معمول، برای هر تعامل مشتری و سرور یک یا چند پروکسی وجود دارد.
پروکسیها ممکن است شفاف (transparent) یا غیرشفاف (non-transparent) باشند. پروکسیهای شفاف درخواست client را تغییر نمیدهند بلکه آن را به شکل اصلی به سرور ارسال میکنند.
پروکسیهای غیر شفاف درخواست client را در برخی موارد تغییر میدهند. پروکسیهای غیر شفاف را میتوان برای خدمات اضافی، اغلب برای افزایش سرعت بازیابی سرور استفاده کرد.
توسعه دهندگان وب میتوانند از پروکسیها برای اهداف زیر استفاده کنند:
- caching: سرورهای Cache میتوانند صفحات وب یا سایر محتوای اینترنتی را به صورت محلی ذخیره کنند تا بتوانند مطالب را سریعتر بازیابی کنند و تقاضا برای پهنای باند سایت را کاهش دهند.
- احراز هویت: کنترل امتیازات دسترسی به برنامهها و اطلاعات آنلاین
- ورود به سیستم: ذخیرهسازی دادههای تاریخچه، مانند آدرسهای IP مشتریانی که درخواستها را به سرور ارسال میکنند.
- فیلتر کردن وب: کنترل دسترسی به صفحات وب که میتوانند امنیت را به خطر بیندازند یا حاوی محتوای نامناسب هستند.
- Load Balancing: درخواستهای client به سرور به جای یک سرور، توسط چندین سرور قابل رسیدگی است.
یک دیدگاه برای “پروتکل HTTP چیست و چگونه کار میکند؟”
حامد
می گوید:خلاصه و مفید