پروتکل HTTP چیست و چگونه کار میکند؟
پروتکل HTTP مجموعهای از قوانین برای انتقال فایلهایی مانند متن، تصاویر، صدا، ویدئو و سایر فایلهای چندرسانهای از طریق درگاه وب است.
خلاصه تخصصی مقاله
پروتکل HTTP مجموعهای از قوانین برای انتقال فایلهایی مانند متن، تصاویر، صدا، ویدئو و سایر فایلهای چندرسانهای از طریق درگاه وب است.
موضوعات اصلی: سرور، درخواست، client، میکند، ارسال، پاسخ
HTTPمجموعهای از قوانین برای انتقال فایلهایی مانند متن، تصاویر، صدا، ویدئو و سایر فایلهای چندرسانهای از طریق درگاه وب است.
به محض اینکه کاربر مرورگر وب خود را باز میکند، به طور غیر مستقیم ازHTTPاستفاده میکند.HTTPیک پروتکل کاربردی است که در بالای مجموعه پروتکلهای TCP/IP اجرا میشود که پایه اینترنت را تشکیل میدهند.
آخرین نسخهHTTPپروتکل HTTP/2 است که در می 2015 منتشر شد. این نسخه جایگزین نسخه قبلی خود، HTTP 1.1 می باشد که البته منسوخ نشده است.
HTTPچگونه کار میکند؟
از طریق پروتکل HTTP، منابع بین دستگاههای client و سرورها از طریق اینترنت رد و بدل میشود. client درخواستی را برای منابع مورد نیاز برای بارگذاری یک صفحه وب، به سرور ارسال میکند. سرور برای انجام درخواست پاسخی را به مشتری ارسال میکند.
درخواستها و پاسخها زیر اسنادی مانند داده روی تصاویر، متن، طرحبندی متن، و غیره که برای نمایش فایل کامل صفحه وب توسط مرورگر client در کنار هم قرار میگیرند را به اشتراک میگذارند.
یک وب سرور علاوه بر فایلهای صفحه وبی که میتواند ارائه کند، حاوی یک HTTPdaemonاست (برنامهای که منتظر درخواستهای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 به سرور به جای یک سرور، توسط چندین سرور قابل رسیدگی است.
برای ارزیابی پایداری، امنیت و نگهداری این زیرساخت، راهنمای پشتیبانی شبکه را نیز مطالعه کنید.