HTTP مخفف عبارت Hypertext Transfer Protocol به معنی پروتکل انتقال فرامتن است. در واقع مجموعهای از قوانین برای انتقال فایلها از جمله فایلهای متنی، عکس، صدا و تصویر و دیگر فایلهای چندرسانهای از طریق وب است. هنگامی که کاربر، صفحه مرورگر وب خود را باز میکند، به طور غیرمستقیم از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 در سرور مقصد، درخواست را دریافت کرده و فایل یا فایلهای درخواستی که مرتبط با درخواست هستند، پس میفرستد.
برای توضیح بیشتر، مثالی را با هم مرور میکنیم، یک کاربر میخواهد از صفحهی TechTarget.com بازدید کند. کاربر در ابتدا آدرس وب را تایپ میکند سپس کامپیوتر یک درخواست GET به سروری که آن آدرس را میزبانی میکند، میفرستد. درخواست GET با استفاده ازHTTP فرستاده میشود و به سرور TechTarget میگوید که کاربر به دنبال کد HTML (مخفف عبارت Hypertext Markup Language به معنی زبان نشانه گذاری فرامتن) است که این کد برای ایجاد ساختار و ظاهر صفحه ی ورود (Login) استفاده میشود.
متن صفحه ورود در پاسخ HTML قرار داده میشود اما در دیگر بخشهای صفحه به ویژه عکسها و ویدیوهای موجود در صفحه، توسط درخواست و پاسخهای HTTP به صورت جداگانه درخواست میشوند. هر چه تعداد درخواستها بیشتر شود (مثلا برای فراخوانی صفحهای که تصاویر متعددی دارد) زمان بیشتری طول میکشد تا سرور بتواند به این درخواستها، پاسخ دهد و در نهایت سیستمِ کاربر، بتواند صفحه را بارگذاری کند.
وقتی این جفتهای درخواست/پاسخ ارسال میشوند از TCP/IP برای کاهش و انتقال اطلاعات از بستههای کوچکی که دنبالههای دودویی یک و صفر هستند، استفاده میکنند. این بستهها به صورت فیزیکی از طریق سیمهای برق، کابل های فیبر نوری و همچنین شبکههای بیسیم ارسال میشوند.
درخواستها و پاسخهایی که سرورها و Client برای به اشتراک گذاشتن دادهها با یکدیگر، از آنها استفاده میکنند شامل کد اسکی (ASCII) است. درخواستها بیان میکنند Client به دنبال چه اطلاعاتی از سرور است. پاسخها نیز حاوی کدهایی است که مرورگر Client، آن را به یک صفحه وب ترجمه میکند.
تفاوت HTTP و HTTPS
HTTPS از لایه سوکت امن (SSL) یا امنیت لایه انتقال (TLS) به عنوان یک لایهی فرعی تحت لایه بندی برنامه HTTP معمولی استفاده میکند. HTTPS توسط Netscape توسعه داده شده است. HTTPS درخواستهای صفحهی HTTP کاربر و همچنین صفحاتی که به وسیلهی وب سرور برگردارنده میشوند، رمزگذاری و رمزگشایی میکند واز آنها در برابر استراق سمع و حملات Man-in-the-middle (MitM) محافظت میکند. بنابراین میتوان نتیجه گرفت که مهاجرت از HTTP به HTTPS مفید خواهد بود، زیرا لایهای از امنیت و اعتماد را به کاربر ارائه میدهد.
درخواست ها و پاسخ های HTTP
هر تعاملی که بین سرور و Client برقرار شود، پیام نامیده میشود. پیامهای HTTP همان درخواستها و پاسخها هستند. Clientها درخواستهای HTTP را به سرورها ارسال میکنند و سرورها با ارسال پاسخهای HTTP به Client پاسخ میدهند.
HTTP Requests
درخواستهای HTTP برای زمانی که یک Client همانند مرورگر اینترنت، اطلاعات مورد نیاز برای بارگذاری وب سایت را از سرور میخواهد، اطلاعات موردنظر را برای سرور فراهم میکند تا بتواند پاسخ خود را برای Client تنظیم کند. هر درخواستِ HTTP حاوی دادههای رمزگذاری شده با اطلاعاتی همانند اطلاعات زیر است:
- نسخه HTTP استفاده شده: HTTP و HTTP/2 دو نسخه هستند.
- URL: به منبع موجود در وب اشاره میکند.
- HTTP Request Headers: شامل دادههایی مانند نوع مرورگر مورد استفاده و دادههای درخواست مورد نظر از سرور میشوند. همچنین شامل کوکیهایی برای نمایش اطلاعاتی است که قبلا از سروری که درخواست را مدیریت میکند، ارسال شده است.
- HTTP Body: حاوی اطلاعاتی اختیاری است که سرور از درخواست نیاز دارد مانند فرمهای کاربر، ورود نام کاربری و رمز عبور، پاسخهای کوتاه و آپلود فایل که به وب سایت ارسال میشوند.
HTTP Responses
پیامِ پاسخ HTTP همان دادههای دریافت شده توسط Client از وب سرور است و همان طور که از نام آن پیداست، پاسخ، پاسخ سرور به درخواستهای HTTP است. اطلاعات موجود در پاسخ HTTP متناسب با همان موضوعی است که سرور از درخواست ، دریافت کرده است.
- HTTP Status Code: این کد ، وضعیت درخواست به Client را نشان میدهد. پاسخها ممکن است نشان دهندهی موفقیت، پاسخ اطلاعاتی، یک تغییر مسیر یا خطا در سمت سرور یا Client باشند.
- HTTP Response Headers: عنوانهای پاسخ HTTP، اطلاعاتی دربارهی سرور و منابع درخواستی را ارسال میکنند.
- HTTP Body (Optional): در پاسخ به درخواست HTTP، سرورها اغلب کدهای پاسخ را صادر میکنند که نشان میدهد درخواست در حال پردازش است، خطاایی در درخواست وجود دارد یا درخواست در حال تغییر مسیر است.
کدهای پاسخ های متداول عبارتند از:
- 200 (OK): به معنی این است که درخواستی مانند GET یا POST کار کرده و در حال انجام است.
- 300 (Moved Permanently): این کد پاسخ، به معنی این است که URL منبع درخواستی به طور دائمی تغییر کرده است.
- 401 (Unauthorized): Client یا کاربری که به سرور درخواستی ارسال کرده ، احراز هویت نشده است.
- 403 (Forbidden): هویت Client مشخص شده اما مجوز دسترسی به آن داده نشده است.
- 404 (Not Found): این رایج ترین کد خطا است، به معنی این است که URL شناسایی نمیشود یا منبع در آن مکان وجود ندارد.
- 500 (Internal Server Error): سرور با وضعیتی مواجه شده که نمیداند آن را چگونه مدیریت کند.
پروکسی ها در HTTP
پروکسیها یا سرورهای پروکسی (پروکسیهای لایهی Application) کامپیوترها و یا ماشینهایی هستند که بین سرور و Client قرار میگیرند. همچنین پاسخها و درخواستهای HTTP را بین سرور و Client ارسال میکنند. معمولا برای هر تعامل بین سرور و Client یک یا چند پروکسی وجود دارد.
پروکسیها ممکن است شفاف (Transparent) یا غیرشفاف (Non-transparent) باشند. پروکسی های شفاف درخواست Client را تغییر نمیدهند بلکه آن را با شکل اصلیاش به سرور ارسال میکنند. اما پروکسیهای غیرشفاف گاهی درخواست Client را تغییر میدهند. از این نوع پروکسیها میتوان برای افزایش سرعت بازیابی سرور استفاده کرد.
توسعه دهندگان وب می توانند برای اهداف زیر از پروکسی ها استفاده کنند:
- Caching: سرورهای Cache میتوانند صفحات وب یا سایر محتوای اینترنتی را به صورت محلی ذخیره کنند تا بتوانند مطالب را با سرعت بیشتری بازیابی کنند و تقاضا برای افزایش پهنای باند سایت را کاهش دهند.
- احراز هویت (Authentication): امتیازات دسترسی به برنامهها و اطلاعات آنلاین را کنترل میکند.
- ورودی به سیستم (Logging): تاریخچه دادههایی مثل IP آدرس Clientهایی که درخواستی به سرور ارسال میکنند، ذخیره میکند.
- Web Filtering: فیلتر کردن وب، دسترسی به صفحات وبی که میتوانند باعث به خطر افتادن امنیت شوند یا حاوی محتوای نامناسبی هستند، کنترل میکند.
- Load Balancing: درخواستهای ارسالی از Client به سرور میتوانند به جای یک سرور، توسط چندین سرور قابل رسیدگی و مدیریت باشند.
جمع بندی
امروزه مبحث امنیت اطلاعات، یکی از مهم ترین پارامترهای دنیای اطلاعات و اینترنت است. بنابراین استفاده از پروتکل HTTPS به جای HTTP در وبسایت که امنیت اطلاعات را برقرار میکند، توصیه میشود که تجربهی کاربری بهتری را به کاربران ارائه میدهد. همچنین بنا بر اعلام گوگل، استفاده از این پروتکل باعث بهبود رتبه بندی وب سایت در نتایج جستجوی گوگل میشود.
پروتکل HTTP چیست؟
پروتکل HTTP پروتکلی برای انتقال فرامتن (Hypertext) و متنهای طولانی است. این متنها به صورت کد HTML نوشته میشوند. کدهای HTML میتوانند شامل تصاویر، صدا، جداول و… باشند. این پروتکل امکان ایجاد صفحات وب سایتهای اینترنتی و همچنین ارتباط بین سرور و Client و انتقال داده میان آنها را فراهم میکند.
پروتکل HTTP چگونه کار میکند؟
در پروتکل HTTP برای تبادل اطلاعات بین سرور و Client، ابتدا درخواستی از مرورگر کاربر به سمت سرور ارسال میشود. سرور باید به این درخواست پاسخ دهد. در صورت وجود اطلاعات درخواست شده، از طرف سرور پاسخی مبنی بر وجود اطلاعات و موافقت با ارسال آنها، برای کاربر میفرستد. سپس کاربر درخواستی حاوی پیامی برای دریافت اطلاعات به سمت سرور ارسال کرده و سرور با دریافت این پیام، دادههای درخواستی را به بستههای اطلاعاتی کوچکی تقسیم کرده و برای کاربر ارسال میکند.
پروتکل HTTP چه تفاوتی با پروتکل HTTPS دارد؟
پروتکل HTTPS نسخه ی امن شده ی پروتکل HTTP است. اطلاعات در پروتکل HTTP رمزنگاری نمیشوند و میتوانند به راحتی در دسترس افراد سودجو و هکرها قرار گیرند. هکرها با دسترسی به مسیر تبادل اطلاعات میتوانند به مشاهدهی اطلاعاتی که در حال ارسال هستند، بپردازند. در مقابل، از HTTPS میتوان به عنوان جایگزینی برای HTTP استفاده کرد. در این پروتکل، اطلاعات بین سرور و Client به صورت رمزنگاری شده منتقل میشوند و برخلاف پروتکل HTTP، فقط توسط کسی که کلید رمزگشایی آنها را داشته باشد، قابل دسترسی خواهند بود و به این ترتیب مانع از سرقت اطلاعات محرمانه میشود.