HTTP یا Hypertext TransferProtocol یک پروتکل یا مجموعهای از قوانین ارتباطی برای ارتباطات کلاینت-سرور است. وقتی به یک سایت مراجعه میکنید، مرورگر شما یک درخواست HTTP به سرور وب میفرستد و سرور با یک پاسخ HTTP جواب میدهد. این دادهها به صورت متن ساده (plaintext) رد و بدل میشوند. به طور خلاصه، پروتکل HTTP تکنولوژی پایهای هست که ارتباطات شبکهای رو ممکن میکنه. حالا همانطور که از اسمش پیداست، HTTPS (پروتکل انتقال ابرمتن امن یا Hypertext Transfer Protocol Secure) نسخهای امنتر و توسعهیافته از HTTP است. در HTTPS، مرورگر و سرور یک ارتباط امن و رمزنگاری شده قبل از انتقال دادهها برقرار میکنند. در ادامه به تفاوت HTTP و HTTPS می پردازیم.
تفاوت HTTP و HTTPS | پروتکل HTTP چطور کار میکنه؟
HTTP یک پروتکل در لایه اپلیکیشن در مدل ارتباطات شبکهای OSIاست. این پروتکل انواع مختلفی از درخواستها و پاسخها رو تعریف میکنه. مثلاً وقتی میخواهید دادهای از یک سایت مشاهده کنید، درخواست GETمیفرستید. اگر بخواهید اطلاعاتی ارسال کنید، مثلاً فرم تماس رو پر کنید، درخواست PUTارسال میکنید.
پاسخهای HTTP معمولاً کدهایی رو شامل میشن که به وضعیت درخواست پاسخ میدهند. در اینجا برخی از این کدهای پاسخ HTTP آورده شده است:
کدهای پاسخ HTTP
2xx - موفقیتآمیز
- 200 OK: درخواست موفقیتآمیز بود و سرور اطلاعات مورد نظر را ارسال میکند. این کد معمولاً به معنای این است که درخواست شما به درستی پردازش شده است و پاسخ به شما ارسال شده است. مثلاً زمانی که میخواهید یک صفحه وب را مشاهده کنید، این کد به این معنی است که صفحه به درستی بارگذاری شده است.
- 201 Created: درخواست موفقیتآمیز بود و منبع جدیدی ایجاد شده است. این کد به شما میگوید که یک منبع جدید، مثل یک رکورد جدید در پایگاه داده، با موفقیت ایجاد شده است.
- 204 No Content: درخواست موفقیتآمیز بود، اما محتوایی برای بازگرداندن وجود ندارد. مثلاً وقتی درخواست ارسال داده به سرور انجام میشود ولی سرور پاسخ خالی (بدون محتوای اضافی) میدهد.
3xx - انتقال یا تغییر موقعیت
- 301 Moved Permanently: منبع به طور دائمی به مکان جدیدی منتقل شده است. این کد به شما میگوید که صفحه یا فایل مورد نظر به یک آدرس جدید منتقل شده است و باید همیشه به آدرس جدید مراجعه کنید.
- 302 Found: منبع به طور موقت به مکان جدیدی منتقل شده است. این کد معمولاً زمانی به کار میرود که صفحه موقتاً به یک آدرس دیگر منتقل شده است و بعد از مدت زمانی به آدرس اصلی باز میگردد.
- 304 Not Modified: محتوای مورد نظر تغییر نکرده است و نیازی به ارسال مجدد نیست. این پاسخ زمانی استفاده میشود که مرورگر قبلاً نسخهای از صفحه را ذخیره کرده باشد و سرور تشخیص میدهد که نیازی به ارسال مجدد دادهها نیست.
4xx - خطاهای سمت کلاینت
- 400 Bad Request: درخواست به درستی ارسال نشده و سرور قادر به پردازش آن نیست. معمولاً به این معنی است که درخواست ناقص یا نامعتبر است. مثلاً اگر اطلاعات فرم ناقص باشد، این کد باز میگردد.
- 401 Unauthorized: نیاز به احراز هویت برای دسترسی به منابع. این کد زمانی ارسال میشود که سرور از شما میخواهد که ابتدا وارد سیستم شوید تا بتوانید به محتوای محافظتشده دسترسی پیدا کنید.
- 403 Forbidden: دسترسی به منبع غیرمجاز است. به این معنی است که شما به دلایلی مثل نداشتن مجوز نمیتوانید به منبع دسترسی داشته باشید.
- 404 Not Found: منبع مورد نظر یافت نشد. این کد یکی از معروفترین پاسخهاست که وقتی صفحهای که میخواهید مشاهده کنید موجود نیست، باز میگردد.
5xx - خطاهای سمت سرور
- 500 Internal Server Error: خطای داخلی در سرور رخ داده است. این کد نشاندهنده مشکلاتی است که در داخل سرور رخ داده و درخواست نتواسته به درستی پردازش بشه.
- 502 Bad Gateway: سرور یک پاسخ نامعتبر از سرور دیگر دریافت کرده است. این زمانی اتفاق میافتد که سرور شما در حال برقراری ارتباط با سرور دیگری است و پاسخی که دریافت میکند معتبر نیست.
- 503 Service Unavailable: سرویس در دسترس نیست، معمولاً به دلیل مشکلات سرور. این میتواند به دلیل تعمیرات یا بار سنگین سرور باشد.
- 504 Gateway Timeout: زمان انتظار برای پاسخ از سرور به اتمام رسیده است. این خطا زمانی رخ میدهد که سرور به دلیل کندی اتصال به سرور دیگر قادر به دریافت پاسخ نیست.
این نوع ارتباطات درخواست-پاسخ معمولاً برای کاربرها نامرئی هستن. این روش ارتباطی است که مرورگر و سرور وب از آن برای کارکرد درست وب استفاده میکنند.
پروتکل HTTPS چطور کار میکنه؟
HTTP دادهها رو به صورت رمزگذاری نشده منتقل میکنه، به این معنی که اطلاعات ارسال شده از مرورگر میتونه توسط افراد ثالث دریافت و خوانده بشه. این فرآیند ایدهآل نبود، به همین دلیل به HTTPS گسترش داده شد تا امنیت بیشتری به ارتباطات اضافه بشه. HTTPS درخواستها و پاسخهای HTTP رو با تکنولوژیهای SSL (Secure Sockets Layer) و TLS (Transport Layer Security) ترکیب میکنه.
وبسایتهای HTTPS باید یک گواهینامه SSL/TLSاز یک مرجع گواهینامه مستقل (Certificate Authority یا CA) دریافت کنن. این وبسایتها قبل از تبادل دادهها، گواهینامه رو به مرورگر ارسال میکنن تا اعتماد ایجاد بشه. گواهینامه SSL همچنین شامل اطلاعات رمزنگاری هست که به مرورگر و سرور این امکان رو میده که دادهها رو به صورت رمزگذاری شده یا به اصطلاح مخفی رد و بدل کنن. روند کار به این صورت هست:
- شما با تایپ کردن URL به فرمت https://وارد سایت میشید.
- مرورگر تلاش میکنه اعتبار سایت رو با درخواست گواهی SSL از سرور بررسی کنه.
- سرور گواهی SSL رو که شامل یک کلید عمومی (public key) است به مرورگر میفرسته.
- گواهی SSL سایت، هویت سرور رو ثابت میکنه. بعد از اینکه مرورگر اطمینان پیدا کرد، از کلید عمومی برای رمزگذاری و ارسال پیامی که شامل یک کلید جلسه مخفی (session key) است استفاده میکنه.
- سرور از کلید خصوصی (private key) خودش برای رمزگشایی پیام و دریافت کلید جلسه استفاده میکنه و سپس کلید جلسه رو رمزگذاری کرده و پیامی تاییدی به مرورگر میفرسته.
- حالا مرورگر و سرور از کلید جلسه برای تبادل پیامها به صورت ایمن استفاده میکنند.
تفاوت HTTP و HTTPS چیه؟
نسخه اصلی پروتکل HTTP که در 1996–97 منتشر شد به نام HTTP/1.1شناخته میشه. HTTP/2 و HTTP/3نسخههای بهروزرسانیشده این پروتکل هستند. سیستم انتقال دادهها تغییر کرده تا کارایی بیشتری داشته باشه. مثلاً HTTP/2دادهها رو به صورت باینری (binary) به جای فرمت متنی (textual) رد و بدل میکنه و همچنین به سرورها این امکان رو میده که پاسخها رو به صورت پیشگیرانه برای کش مرورگر (browser cache) ارسال کنن، به جای اینکه منتظر درخواست جدید باشن. HTTP/3 نسخه جدیدتره و سعی میکنه HTTP/2 رو به یک سطح بالاتر برسونه. هدف HTTP/3 اینه که نیازهای انتقال دادههای زمان واقعی مثل استریمینگ (streaming) و سایر نیازهای مدرن رو به شکل بهینهتری پشتیبانی کنه.
چرا باید HTTPS رو به جای HTTP انتخاب کرد؟
در ادامه به برخی از مزایای HTTPS نسبت به HTTP میپردازیم:
امنیت: پیامهای HTTP به صورت متن ساده (plaintext) ارسال میشن، یعنی افراد غیرمجاز به راحتی میتونن اطلاعات رو در طول مسیر شبکه بخونن. در مقابل، HTTPS همه دادهها رو به صورت رمزگذاری شده (encrypted) منتقل میکنه. وقتی کاربران اطلاعات حساس ارسال میکنن، میتونن مطمئن باشن که هیچ فرد سومی قادر به دسترسی به دادهها نیست. برای محافظت از اطلاعات حساسی مثل جزئیات کارت اعتباری یا اطلاعات شخصی مشتریانبهتره از HTTPS استفاده بشه.
اعتبار: موتورهای جستجو معمولاً محتوای سایتهای HTTP رو پایینتر از سایتهای HTTPS رتبهبندی میکنن، چون HTTPS بهعنوان یک پروتکل امنتر شناخته میشه. همچنین مشتریها سایتهای HTTPS رو ترجیح میدن. مرورگر با نمایش آیکون قفل (padlock) در کنار URL سایت، ارتباط HTTPS رو برای کاربران قابل مشاهده میکنه. کاربران به دلیل این عوامل امنیتی و اعتماد بیشتر، سایتهای HTTPS رو ترجیح میدن.
عملکرد و آنالیز: وبسایتهای HTTPS سریعتر از سایتهای HTTP بارگذاری میشن. همچنین، HTTPS لینکهای ارجاعی (referral links) رو بهتر پیگیری میکنه. این یعنی ترافیک ارجاعی، یعنی ترافیکی که از منابع خارجی مثل تبلیغاتیا لینکهای شبکههای اجتماعی میاد، بهتر شناسایی میشه.
در نهایت، استفاده از HTTPS به جای HTTP خیلی برای سایت شما بهتره. چون دادهها رو به صورت رمزگذاریشده منتقل میکنه و این یعنی امنیت بیشتر برای شما و کاربراتون. وقتی سایت شما HTTPS داشته باشه، کاربران بیشتر بهش اعتماد میکنن و احساس امنیت بیشتری دارن. این اعتماد میتونه باعث بشه که نرخ تبدیل سایت شما افزایش پیدا کنه. علاوه بر این، موتورهای جستجو مثل گوگل سایتهای HTTPS رو بیشتر ترجیح میدن و این یعنی رتبه بهتری توی نتایج جستجو خواهید داشت. همچنین، با HTTPS سایت شما سریعتر بارگذاری میشه و ترافیک ارجاعی (یعنی ترافیکی که از تبلیغات یا شبکههای اجتماعی میاد) راحتتر شناسایی میشه. در کل، استفاده از HTTPSهم امنیت و هم عملکرد سایت شما رو بهتر میکنه، پس حتماً برای سایتتون این کار رو انجام بدید!
حال که با تفاوت HTTP و HTTPS آشنا شدید، می توانید از دیگر مقالات سایت ایوولرن دیدن کنید.